Провозившись неделю в попытках настроить мою любимую систему управления задачами на своем крошечном(тариф VDS-Старт) VDS от FirstVDS и перечитав кучу разных инструкции решил написать свою. Главный недостаток всех обнаруженных мной материалов было отсутствие нормального описания приводимых команд из за чего не возможно было понять что же делать если что то не работает. Все это усугублялось большим количеством вариантов установки. Я постараюсь подробно описать процесс установки. Давайте вначале определимся что и куда мы хотим установить. Имеется система FreeBSD со стандартным веб пакетом Apache(или nginx), PHP и MySQL. В моем случае версии были FreeBSD 9.2, Apache 2.2.26, nginx-1.4.5, MySQL 5.5.36. Чтобы запустить написанный на Ruby Redmine необходимо установить специальный софт который сможет запустить Ruby скрипты на нашем веб сервере.
Запустить Redmine в нашем случае можно следующими способами:
- встроенный веб сервер webrick (на 3000 порту). Мы его опробуем, но решение весьма не стабильно и сервер часто падает
- Apache + FastCGI
- Apache + passenger
- nginx + passenger
Есть еще несколько вариантов запуска, но они либо сильно устарели либо не очень мне понравились как PHP программисту =) (веб сервер Thin, Apache+mod_ruby, Mongrel)
Установка Redmine в FreeBSD элементарна, однако, поскольку за самим редмайном тянется большое количество зависимостей (на моей чистой системе их было 84), я рекомендую поставить специальное приложение, которое пробежится по всем зависимостям сразу и выдаст диалоги конфигурации перед началом установки, а не перед сборкой каждого порта. Но для начала обновим(или скачаем) сами порты:
portsnap fetch portsnap extract #если порты вообще не установлены portsnap update #если порты установлены, но требуют обновления
Теперь можем начинать установку:
cd /usr/ports/ports-mgmt/portmaster && make install clean
После этого мы можем установить сам Redmine:
portmaster /usr/ports/www/redmine
Самое главное выбрать нужные нам опции сборки, веб сервер Apache/nginx и базу данных MySQL.
Обратите внимание на опции сборки модуля passenger, необходимо выбрать используемый нами веб сервер.
После установки файлы Redmine лежат в папке /usr/local/www/redmine. Создадим базу данных и пользователя для неё:
mysql -p Enter password: вводим пароль от пользователя root в БД CREATE DATABASE redmine CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES on redmine.* to redmine@localhost identified by 'PASSWORD';
Создадим конфигурационный файл и заполним его
cd /usr/local/www/redmine cp config/database.yml.example config/database.yml
production: adapter: mysql database: redmine host: localhost username: redmine password: PASSWORD encoding: utf8
Остальные части файла закомментируем. Далее подготовим Redmine к запуску и заполним пустую БД данными. По просьбе выбрать язык, сделаем это.
rake rake generate_secret_token rake db:migrate RAILS_ENV=production rake redmine:load_default_data RAILS_ENV=production
Подготавливаем файлы и раздаем права:
mkdir tmp public/plugin_assets sudo chown -R www:www files log tmp public/plugin_assets sudo chmod -R 755 files log tmp public/plugin_assets
После всех этих действий мы можем проверить работу Redmine с помощью встроенного сервера:
ruby script/rails server webrick -e production
Входим по адресу нашего сервера и порту 3000(например, http://localhost:3000) и проверяем что все работает. Если правильно, то настроим работу в обход встроенного сервера.
Настройка Apache
В данном разделе будем настраивать Apache+passenger.
Добавим поддержку модуля passenger в наш конфигурационный файл Apache, для этого после последнего LoadModule вводим следующие данные:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.35/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.35 PassengerRuby /usr/local/bin/ruby19 # от имени какого пользователя запускать passenger PassengerDefaultUser www # ограничивают количество процессов/ресурсов потребляемых passenger`ом PassengerMaxPoolSize 1 PassengerMaxInstancesPerApp 1 # время простоя до выгрузки из памяти. по умолчанию 300 секунд PassengerPoolIdleTime 43200 </IfModule>
Отлично, теперь веб сервер настроен на работу с Ruby. Создадим виртуальный хост для Redmine
<VirtualHost *:80> ServerName redmine.yourhost.com ServerAdmin administrator@yourhost.com DocumentRoot /usr/local/www/redmine/public <Directory "/usr/local/www/redmine/public"> Order allow,deny Allow from all AllowOverride all Options -Indexes +FollowSymLinks +ExecCGI -MultiViews </Directory> </VirtualHost>
Чтобы доступ в Redmine был не в формате «http://redmine.yourhost.com/», а например «http://yourhost.com/redmine» – меняем настройки виртуального хоста:
Alias /redmine /usr/local/www/redmine/public <Location /redmine> PassengerBaseURI /redmine PassengerAppRoot /usr/local/www/redmine </Location> <Directory "/usr/local/www/redmine/public"> Order allow,deny Allow from all AllowOverride all Options -Indexes +FollowSymLinks +ExecCGI -MultiViews </Directory>
Вот и все, перезагружаем Apache и сервер готов к работе. Про настройку Apache+FastCGI можно почитать в официальной статье или в этой статье. Еще полезная ссылка — документация на Passenger.
Настройка Nginx
Настройка nginx тоже довольно проста, просто записываем в конфигурационный файл
http {
...
passenger_root /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.35;
passenger_ruby /usr/local/bin/ruby19;
passenger_user www;
passenger_group www;
server {
listen 80;
...
location / {
root /usr/local/www/redmine/public;
passenger_enabled on;
}
...
}
Полезная ссылка по настройке nginx.
Если, что то не получилось, то можно обратиться к официальной документации по установке.
Если статья была Вам полезна, то буду благодарен за клик по рекламе.