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, соответственно просто вызывать их из командной строки не получится. Чтобы это исправить, есть несколько путей. Сперва предлагаю сделать

bash

                
  1. export PATH=$PATH":/var/lib/gems/1.8/bin/"

              
– это добавит нужный путь в переменную PATH до окончания сессии. Уже сейчас можно запустить mongrel – находясь в домашней директории /home/redmine выполните

bash

                
  1. mongrel_rails start –p 3000 -e production

              

По адресу http://localhost:3000/ снова должен работать редмайн.

Если все ок – делаем доступными бинарники из /var/lib/gems/1.8/bin/ перманентно. Можно сделать их доступными для всех пользователей, сделав символические ссылки

bash

                
  1. sudo ln -s /var/lib/gems/1.8/bin/mongrel_rails /usr/bin/mongrel_rails
  2. sudo ln -s /var/lib/gems/1.8/bin/rails /usr/bin/rails
  3. sudo ln -s /var/lib/gems/1.8/bin/mongrel_cluster_ctl /usr/bin/mongrel_cluster_ctl

              

Можно добавить экспорт пути в PATH в файле /etc/profile

bash

                
  1. echo 'export PATH=$PATH":/var/lib/gems/1.8/bin/"' >> /etc/profile

              

Но я бы посоветовал просто добавить экспорт этого пути в PATH только для юзера redmine. Находясь в его домашнем каталоге выполните

bash

                
  1. echo 'export PATH=$PATH":/var/lib/gems/1.8/bin/"' >> .bashrc

              
И перелогиньтесь.

Теперь сгенерируем конфиг-файл для работы mongrel с redmine

bash

                
  1. 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

              
Где -e production рабочее окружение 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 и дальше). Советую попробовать
bash

                
  1. mongrel_rails cluster::configure --help

              

Для того, чтобы сервер запускался при перезапуске компьютера, сделаем следующее: создадим каталог /etc/mongrel_cluster и скопируем туда полученный конфиг

bash

                
  1. sudo mkdir /etc/mongrel_cluster
  2. sudo cp /home/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml

              

Скопируем init.d файл для mongrel  в /etc/init.d

bash

                
  1. sudo cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
  2. sudo chmod +x /etc/init.d/mongrel_cluster

              

И, на всякий случай, добавим в этот файл в начале (после комментариев, перед строкой CONF_DIR=/etc/mongrel_cluster) строчку export PATH=$PATH":/var/lib/gems/1.8/bin/" и исправим USER=mongrel на USER=redmine

Пробуем:

bash

                
  1. sudo service mongrel_cluster start

              

Сервис должен запуститься и работать на 3000 порту.

Обновляем rc.d правила для автоматического запуска и остановки mongrel

bash

                
  1. sudo update-rc.d mongrel_cluster defaults

              

Теперь Mongrel будет самостоятельно запускаться при старте компьютера!

Настройка NGINX для проксирования Mongrel

В принципе практически ничем не отличается от настройки проксирования Apache. В интернете рекомендуют такой конфиг:

upstream mongrel {
  server 127.0.0.1:9000;
  server 127.0.0.1:9001;
#и т.д., в зависимости от количества запущенных Mongrel
}

server {
  listen 80;
  server_name redmine.yoursite.ru;
  root /home/redmine/public;

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

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

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

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

    proxy_pass http://mongrel/;
  }
}


Сохраняем, перезапускаем Nginx, идем по адресу http://redmine.yoursite.ru

Оставить комментарий

Вы можете использовать следующие HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>