Для начала весьма рекомендую бегло ознакомиться с официальной документацией.
Реализация
Установка необходимых пакетов
Если вы используете версию Debian 5.0 lenny, то для установки необходимый пакетов требуется подключить репозитарий backports. Далее устанавливаем следующие пакеты:- mongrel
- redmine
- mysql-server
- nginx
Настройка
Redmine
Сам Redmine поддерживает такую фичу, как многодоменность. Но к сожалению упоминания об этом в документации я не нашел сразу, потому пришлось все познавать самостоятельно.Все конфигурации каждого домена хранятся в директории /etc/redmine. С нуля там существует лишь директория /etc/redmine/default. При более детальном изучении системы я выяснил, что "default" - это значение переменной X_DEBIAN_SITEID, с помощью которой и вводится многодоменность.
- Cкопируйте директорию default в /etc/redmine/project1 и /etc/redmine/project2.
- Отредактируйте файлы session.yml для каждого проекта. Обязательно сгенерируйте индивидуальные значения ключей secret и и измените значения session_key с _redmine_default на _redmine_project1 и _redmine_project2 для каждого проекта соответственно.
- Отредактируйте файлы database.yml для каждого проекта. Требуется предварительно создать отдельные БД для каждого проекта и дать права на создание таблиц.
- Опционально создаем email.yml . Он необходим для отправки e-mail системой.
# Outgoing email settings
production:
delivery_method: :smtp
smtp_settings:
address: 127.0.0.1
port: 25
domain: example.com
development:
delivery_method: :smtp
smtp_settings:
address: 127.0.0.1
port: 25
domain: example.com
- Структура БД создается командой:
#
cd /usr
/share/redmine
#
rake db:migrate X_DEBIAN_SITEID="project1"
#
rake db:migrate X_DEBIAN_SITEID="project2"
# mkdir -p /var/lib/redmine/project1/files
# mkdir -p /var/lib/redmine/project2/files
# chown -R www-data /var/lib/redmine/
Запуск
По умолчанию в тех источниках, которые я встречал, рекомендуется запускать Redmine с помощью Apache и модуля mod_fcgid. Но это решение нам не подходит, .т.к. этот модуль не обрабатывает виртуальные домены, а подерживает только один запущенный процесс. Хотя возможно я просто не понял как его готовить. В связи с этим я запускаю необходимое количество процессов с нужными параметрами запуска с помощью сервера mongrel.Запускаем процесс следующей коммандой:
# su - www-data -c "/usr/local/bin/redmine_sites.sh"
где redmine_sites.sh представляет собой следующий скрипт:
#!/bin/bash
sites="project1 project2"
port=3000
for cs in ${sites}
do
X_DEBIAN_SITEID="${cs}" mongrel_rails start -d -e production -a 127.0.0.1 -p ${port} \
--chdir /usr/share/redmine/ \
--log /var/log/redmine/${cs}.log \
--pid /var/run/redmine/${cs}.pid
let "port = $port + 1"
done
nginx
Как вы уже заметили сам процесс слушает на локальном адресе. Фронтэндом к нему я выбрал nginx.Создадим конфигурации для каждого проекта в /etc/nginx/sites-available/. К примеру /etc/nginx/sites-available/project1 выглядит так:
server {
listen 111.222.333.444:80;
server_name project1.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# cd /etc/nginx/sites-enabled
/
# ln -s ../sites-available/project1
# ln -s ../sites-available/project2
# /etc/init.d/nginx restart
Post scriptum
Буду рад, если кто-то сообщит о более простом запуске данной платформы. Так же приветствую любые замечания, поправки и дополнения касательно изложенного материала.Фокусы
Сбросить пароль юзера:# X_DEBIAN_SITEID="project1" RAILS_ENV=production script/runner 'user = User.find(:first, :conditions => {:login => "AnViar"}) ; user.password, user.password_confirmation = "1234"; user.save!'
Комментариев нет:
Отправить комментарий