Продолжение статьи Установка Redmine на Ubuntu 9.10 под Nginx
Настройка Ruby веб-сервера Mongrel
Сам по себе Nginx работать с Redmine не может, т.к. fcgi для redmine фактически нет, поэтому для начала настроим mongrel, и будем проксировать на него запросы из Nginx. (На самом деле я не знаю, зачем нужно настраивать mongrel, когда есть встроенный сервер webrick, но везде пишут про mongrel, я решил "не выделяться слишком")
Так вот, устанавливаемые с помощью gem исполняемые файлы устанавливаются в папку /var/lib/gems/1.8/bin/, которая не включена в стандартный PATH, соответственно просто вызывать их из командной строки не получится. Чтобы это исправить, есть несколько путей. Сперва предлагаю сделать
[codesyntax lang="bash"]export PATH=$PATH":/var/lib/gems/1.8/bin/"[/codesyntax] - это добавит нужный путь в переменную PATH до окончания сессии. Уже сейчас можно запустить mongrel - находясь в домашней директории /home/redmine выполните
[codesyntax lang="bash"]mongrel_rails start –p 3000 -e production[/codesyntax]
По адресу http://localhost:3000/ снова должен работать редмайн.
Если все ок - делаем доступными бинарники из /var/lib/gems/1.8/bin/ перманентно. Можно сделать их доступными для всех пользователей, сделав символические ссылки
[codesyntax lang="bash"]sudo ln -s /var/lib/gems/1.8/bin/mongrel_rails /usr/bin/mongrel_rails
sudo ln -s /var/lib/gems/1.8/bin/rails /usr/bin/rails
sudo ln -s /var/lib/gems/1.8/bin/mongrel_cluster_ctl /usr/bin/mongrel_cluster_ctl[/codesyntax]
Можно добавить экспорт пути в PATH в файле /etc/profile
[codesyntax lang="bash"]echo 'export PATH=$PATH":/var/lib/gems/1.8/bin/"' >> /etc/profile[/codesyntax]
Но я бы посоветовал просто добавить экспорт этого пути в PATH только для юзера redmine. Находясь в его домашнем каталоге выполните
[codesyntax lang="bash"]echo 'export PATH=$PATH":/var/lib/gems/1.8/bin/"' >> .bashrc[/codesyntax] И перелогиньтесь.
Теперь сгенерируем конфиг-файл для работы mongrel с redmine
[codesyntax lang="bash"]mongrel_rails cluster::configure -e production -p 3000 -a 127.0.0.1 -N 2 -P /var/run/mongrel_cluster/mongrel.pid-c /home/redmine --user redmine --group redmine[/codesyntax] Где -eproduction рабочее окружение Redmine, -p 3000 порт, на который будет слушать Mongrel, -a 127.0.0.1 IP адрес, на котором он будет принимать запросы, -N 2 количество запущенных процессов Mongrel, -P /var/run/mongrel_cluster/mongrel.pid адрес для записи pid файла -c /home/redmine домашняя директория, --user redmine --group redmine имя и группа пользователя, от имени которого будет работать mongrel (настоятельно рекомендую эти настройки не менять!! разве что изменить количество запущенных процессов - каждый процесс занимает отдельный порт, начиная с указанного в -p и дальше). Советую попробовать [codesyntax lang="bash"]mongrel_rails cluster::configure --help[/codesyntax]
Для того, чтобы сервер запускался при перезапуске компьютера, сделаем следующее: создадим каталог /etc/mongrel_cluster и скопируем туда полученный конфиг
[codesyntax lang="bash"]sudo mkdir /etc/mongrel_cluster
sudo cp /home/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml[/codesyntax]
Скопируем init.d файл для mongrel в /etc/init.d
[codesyntax lang="bash"]sudo cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
sudo chmod +x /etc/init.d/mongrel_cluster[/codesyntax]
И, на всякий случай, добавим в этот файл в начале (после комментариев, перед строкой CONF_DIR=/etc/mongrel_cluster) строчку export PATH=$PATH":/var/lib/gems/1.8/bin/" и исправим USER=mongrel на USER=redmine
Пробуем:
[codesyntax lang="bash"]sudo service mongrel_cluster start[/codesyntax]
Сервис должен запуститься и работать на 3000 порту.
Обновляем rc.d правила для автоматического запуска и остановки mongrel
[codesyntax lang="bash"]sudo update-rc.d mongrel_cluster defaults[/codesyntax]
Теперь Mongrel будет самостоятельно запускаться при старте компьютера!
Настройка NGINX для проксирования Mongrel
В принципе практически ничем не отличается от настройки проксирования Apache, разве что, если у вас запущено больше одного процесса mongrel, нужно настроить апстрим для балансировки нагрузки:
upstream mongrel {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
#и т.д., в зависимости от количества запущенных Mongrel
}
server {
listen 80;
server_name
redmine.yoursite.ru;
root /home/redmine/public;
location / {
try_files $uri @fallback;
}
location @fallback {
proxy_pass http://mongrel/;
proxy_connect_timeout 15;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Сохраняем, перезапускаем Nginx, идем по адресу http://redmine.yoursite.ru
[…] « Nginx + PHP-fcgi на Ubuntu Установка Redmine на Ubuntu 9.10 под Nginx часть 2 » 14 […]
[…] этого дела под nginx есть вторая часть статьи Установка Redmine на Ubuntu 9.10 под Nginx часть 2, я пока остановился на первой. Из недостатков пока […]
[…] При этом запустится простенький веб-сервер по адресуhttp://localhost:3000/Можно открыть в браузере, зайти под учеткой admin/admin, сменить пароль на нормальный. Для остановки сервера жмем Ctrl+C. Если хотите использовать redmine локально – на этом можно остановиться, а для совместной работы через интернет нужно настроить веб-сервер для работы с Ruby и Redmine. Как это сделать —см во 2-й части […]
Allergy-friendly environments