Запуск Redmine с помощью web-сервера Thin

В этой небольшой статье хочу рассмотреть работу системы управления проектами Redmine через ruby web-сервер Thin и nginx.

Процесс инсталляции и настройки Redmine и nginx в Gentoo я опускаю, отмечу только, что я использовал RUBY_TARGETS=’ruby18′.

Установка Thin выполняется командой:

emerge thin

Для работы Redmine через Thin кроме стандартных никакие особенные настройки выполнять не требуется, достаточно написать конфигурационный файл Thin и запустить его.

Директория, в которой сервер Thin по умолчанию ищет файлы конфигураций — /etc/thin. Для запуска redmine необходимо создать файл /etc/thin/redmine.yml (предполагается, что клиентам Redmine будет доступен через web-сервер nginx):

# расположение файла pid
pid: /var/run/thin.pid
# таймаут запросов
timeout: 30
# расположение логов
log: /var/log/thin.log
# максимальное количество одновременных соединений
max_conns: 256
# подключение библиотек
require: []

# окружение фреймворка
environment: production
# максимальное количество постоянных соединений
max_persistent_conns: 128
# смена текущей директории
chdir: /var/lib/redmine
# разрешение асинхронного ввода-вывода
no-epoll: false
# количество запускаемых серверов thin
servers: 1
# переходить в режим демона
daemonize: true

# расположение сокета
socket: /tmp/redmine.sock
# учетная запись, под которой будет работать
# сервер thin
user: redmine
# группа, под которой будет работать сервер thin
group: redmine

Запустить Thin можно командой:

/etc/init.d/thin start

В случае успешного запуска появится сокет /tmp/redmine.0.sock

Последнее действие, которое нужно проделать — добавить необходимые настройки nginx. Можно воспользоваться, например, такой конфигурацией виртуального хоста:

server {
  listen xxx.xxx.xxx.xxx:80;
  server_name redmine.domain.dom;
  charset utf-8;
  root /var/lib/redmine/public;

  client_max_body_size 15m;
  client_body_buffer_size 5m;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    if (!-f $request_filename) {
      proxy_pass http://unix:/tmp/redmine.0.sock;
    }
  }
}

client_max_body_size для Redmine задает максимальный объем файла-вложения.

Теперь можно открыть браузер и проверить работу Redmine.

css.php