Skip to content

Redmine Nginx Thin

# ставим
$ gem install thin
# проверяем
$ thin -v
thin 1.7.0 codename Dunder Mifflin
#
$ mkdir /etc/thin
# создание конфига на локальный IP
$ thin config -C /etc/thin/redmine.yml -c /opt/redmine/redmine-3.3.0 --servers 2 -e production -a 127.0.0.1 -p 3003
#
$ cat /etc/thin/redmine.yml
---
chdir: "/opt/redmine/redmine-3.3.0"
environment: production
# ????
# socket: /tmp/thin.sock
address: 127.0.0.1
port: 3003
timeout: 30
# тут надо подправить
log: "/var/log/thin.log"
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
threadpool_size: 20
servers: 2
daemonize: true
# формируем скрипт запуска /etc/init.d/thin
$ thin install

# запустим
$ service thin start
# получили
$ service thin status
● thin.service - LSB: thin initscript
   Loaded: loaded (/etc/init.d/thin)
   Active: active (running) since Tue 2017-01-31 11:23:40 EET; 2s ago
  Process: 26378 ExecStop=/etc/init.d/thin stop (code=exited, status=0/SUCCESS)
  Process: 26392 ExecStart=/etc/init.d/thin start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/thin.service
           ├─26205 thin server (/tmp/thin.1.sock)
           └─26407 thin server (/tmp/thin.0.sock)

Jan 31 11:23:40 srv thin[26392]: [start] /etc/thin/redmine.yml ...
Jan 31 11:23:40 srv thin[26392]: Starting server on /tmp/thin.0.sock ...
Jan 31 11:23:40 srv systemd[1]: Started LSB: thin initscript.

Added 2017.04.08: При переносе на новый сервер появилась ошибка при start service thin:

Apr 08 20:25:48 srv2 systemd[1]: Starting LSB: thin initscript...
Apr 08 20:25:48 srv2 thin[19001]: /usr/bin/env: ruby_executable_hooks: No such file or directory
Apr 08 20:25:48 srv2 systemd[1]: Started LSB: thin initscript.

Решение: найти ruby_executable_hooks и сделать символьную ссылку. Нашлась там:

ln -s /usr/local/rvm/rubies/ruby-2.2.6/lib/ruby/gems/2.2.0/bin/ruby_executable_hooks /usr/bin/ruby_executable_hooks

При обращении к Redmine получаем ошибку в /var/log/nginx/redmine_error.log что backend не доступен.

# в логе thin-а
Listening on 127.0.0.1:3003, CTRL+C to stop
Exiting!
/var/lib/gems/2.1.0/gems/thin-1.7.0/lib/thin/backends/tcp_server.rb:16:in `connect': cannot load such file -- thin/connection (LoadError)
        from /var/lib/gems/2.1.0/gems/thin-1.7.0/lib/thin/backends/base.rb:63:in `block in start'

# добавляем thin в Gefile
$ cd /opt/redmine/redmine-3.3.0/
$ echo 'gem "thin"' >> Gemfile
$ bundler update
$ bundler install
# перезапускам thin
$ service thin restart
# проверяем
$ netstat -pln | grep thin
tcp        0      0 127.0.0.1:3003          0.0.0.0:*               LISTEN      7878/thin server (1
unix  2      [ ACC ]     STREAM     LISTENING     4322645  26679/thin.0.sock)  /tmp/thin.0.sock
unix  2      [ ACC ]     STREAM     LISTENING     4317145  26205/thin.1.sock)  /tmp/thin.1.sock
unix  2      [ ACC ]     STREAM     LISTENING     4323474  26843/thin.0.sock)  /tmp/thin.0.sock

Заходим в Redmine. Все работает.

Ошибка: Не загружаются файлы (added 2017.04.08) В лог-е Nginx:

"/var/www/redmine.domain.com/uploads.js" failed (2: No such file or directory)

Cуть: js файл не является статическим в Redmine, а генерируется. В конфиге Nginx-а отдача JS была настроена как статического файла. Решение: Исключить расширение JS из статических в настройка сайта в Nginx.