Блог - Linux, программирование, Я!

linux на сервереУстановка Redmine на Ubuntu 9.10 под Nginx часть 2

Продолжение статьи Установка 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

  1. 2010-01-14 05:15:16 | #

    […] « Nginx + PHP-fcgi на Ubuntu Установка Redmine на Ubuntu 9.10 под Nginx часть 2 » 14 […]

  2. 2010-03-21 12:18:06 | #

    […] этого дела под nginx есть вторая часть статьи Установка Redmine на Ubuntu 9.10 под Nginx часть 2, я пока остановился на первой. Из недостатков пока […]

  3. 2012-12-11 15:05:57 | #

    […] При этом запустится простенький веб-сервер по адресуhttp://localhost:3000/Можно открыть в браузере, зайти под учеткой admin/admin, сменить пароль на нормальный. Для остановки сервера жмем Ctrl+C. Если хотите использовать redmine локально – на этом можно остановиться, а для совместной работы через интернет нужно настроить веб-сервер для работы с Ruby и Redmine. Как это сделать —см во 2-й части […]