Установка Redmine · 3 min read · Jan 23, 2026

Запуск управления проектами Redmine на nginx (Debian Wheezy)

Запуск управления проектами Redmine на nginx (Debian Wheezy)

Redmine — это инструмент управления проектами, написанный на Ruby. Этот учебник объясняет, как обслуживать Redmine с помощью thin (быстрого веб-сервера на Ruby) через веб-сервер nginx на Debian Wheezy.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Я подготовил веб-сайт www.example.com с корневым каталогом /var/www/example.com/web (Redmine будет установлен там), который принадлежит пользователю web1 и группе client0.

Я также подготовил базу данных MySQL для Redmine с именем c0db1. Имя пользователя также c0db1, пароль FyZ5z4QGfhTf8.

2 Установка Redmine

Сначала установим некоторые предварительные зависимости:

apt-get install thin ruby rake rubygems libopenssl-ruby libmysql-ruby librmagick-ruby ruby-dev libmysqlclient-dev libmagick-dev curl
gem install sass  
 gem install compass

Скачайте последнюю версию Redmine и скопируйте ее в наш корневой каталог /var/www/example.com/web:

cd /tmp  
 wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz  
tar xvfz redmine-2.4.2.tar.gz  
mv redmine-2.4.2/* /var/www/example.com/web  
cd /var/www/example.com/web  
chown -R web1:client0 *

Заполните данные для входа в нашу базу данных MySQL:

cp config/database.yml.example config/database.yml  
 vi config/database.yml
[...]  
production:  
  adapter: mysql2  
  database: c0db1  
  host: localhost  
  username: c0db1  
  password: "FyZ5z4QGfhTf8"  
  encoding: utf8  
[...]  

Установите некоторые другие необходимые пакеты и заполните базу данных:

apt-get install libmagickwand-dev
gem install rmagick
gem install bundler
bundle install --without development test postgresql sqlite
rake generate_secret_token
rake db:migrate RAILS_ENV="production"
rake redmine:load_default_data RAILS_ENV="production"

3 Настройка thin

Далее мы настраиваем thin, наш Ruby веб-сервер, к которому nginx будет проксировать запросы.

ln -s /etc/thin1.9.1 /etc/thin
mkdir /var/log/thin  
 chmod 755 /var/log/thin  
 cd /etc/thin

Создайте файл конфигурации thin, который называется так же, как владелец корневого каталога (web1):

vi web1.yml

Убедитесь, что вы используете правильного пользователя (web1) в строках логов, pid, сокета и пользователя, а также правильную группу (client0) в строке группы. Используйте правильный корневой каталог в строке chdir:

---
chdir: /var/www/example.com/web
environment: production
timeout: 30
log: /var/log/thin/web1.log
pid: /var/run/thin/web1.pid
max_conns: 1024
max_persistent_conns: 512
require: []
wait: 30
socket: /var/run/thin/web1.sock
daemonize: true
user: web1
group: client0
servers: 1
prefix: /

Создайте каталог /var/run/thin (где thin создаст свой сокет):

mkdir /var/run/thin  
 chown -R web1:client0 /var/run/thin

Чтобы убедиться, что каталог существует, когда thin запускается, мы добавляем строку test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin в инициализационный скрипт /etc/init.d/thin (сразу после строки SCRIPT_NAME):

vi /etc/init.d/thin
[...]  
DAEMON=/usr/bin/thin  
SCRIPT_NAME=/etc/init.d/thin

test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin

[...]  

Теперь запустите thin…

/etc/init.d/thin start

… и обратите внимание на сокет, который он создает (/var/run/thin/web1.0.sock в этом случае) - он нам понадобится в конфигурации nginx:

root@server1:/etc/thin# /etc/init.d/thin start  
 [start] /etc/thin1.9.1/web1.yml ...  
 Starting server on /var/run/thin/web1.0.sock ...  
 root@server1:/etc/thin#

Если вы используете Monit, вы можете добавить следующие строки в /etc/monit/monitrc, чтобы убедиться, что thin всегда работает:

vi /etc/monit/monitrc
[...]  
check process thin with pidfile /var/run/thin/web1.0.pid  
   start program = "/etc/init.d/thin start"  
   stop  program = "/etc/init.d/thin stop"  
[...]  

Перезапустите Monit после этого:

/etc/init.d/monit restart

4 Настройка nginx

Далее мы должны настроить наш виртуальный хост nginx, через который мы хотим получить доступ к Redmine. Вы должны вставить следующую конфигурацию в ваш контейнер server {} (или в поле Директивы nginx, если вы используете ISPConfig) - убедитесь, что вы используете правильный сокет thin:

client_max_body_size 100M;

location / {
    proxy_set_header X-Reak-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if (-f $request_filename/index.html) {
      rewrite (.*) $1/index.html break;
    }

    if (-f $request_filename.html) {
      rewrite (.*) $1.html break;
    }

    if (!-f $request_filename) {
      proxy_pass http://unix:/var/run/thin/web1.0.sock;
      break;
    }
}

Вот и все! Теперь посетите ваш веб-сайт, и вы сможете использовать Redmine. Имя пользователя по умолчанию — admin, пароль также admin.

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.