
CentOS 5 + ISPManager + Redmine
Все началось с того что мне понадобился Redmine, так как эта система обсуждалась на хабре то вдаваться в подробности не буду, скажу только что для работы оной требуется ruby 1.8.6/1.8.7, rails 2.3.5 rack 1.0.1.
Но не все так просто как кажется на первый взгляд, если подобных инструкций для Debian можно найти в гугле без проблем причем валом, то с CentOS не все так радужно, хотя все таки инструкцию я нашел немного поискав. Усугубляться ситуация тем что на хосте уже установлен ISPManager, конечно можно было поставить чистый CentOS и не париться, но так как я неоднократно замечал интерес к данной конфигурации на разных фрилансерских сайтах, то все таки решил разобраться как же все засетапить не нарушив при этом нормального функционирования системы.
Все установлено по умолчанию, из особых изменений разве что nginx до установлен через yum и включен в ISPManager.
Первым делом нам необходимо установить ruby и конечно же rails, и тут мы натыкаемся на первую проблему, дело в том что в базовой поставке CentOS есть только версия 1.8.5 которая не удовлетворяет системные требования Redmine. По этому я отправился в гугл на поиски нужной версии уже собранной под CentOS, единственное что я нашел, это сторонний репозиторий с нужной мне версией, подключать который я желанием не горел, к тому же после беглого ознакомления с ним я обнаружил что там есть только x86 пакеты, что мне не подходило. Также я наткнулся на совет собрать руби из src.rpm из состава Fedora 13, этот вариант тоже был мной отброшен. В итоге гугл привел меня к этому чудесному хауту которым я частично воспользовался.
Добавляем репозиторий и устанавливаем ruby и rails:
И так ruby и rails необходимой версии установлены.
Так же на понадобиться gem i18n версии ниже 0.4.0.0, так как версии 0.4.0.0 и выше вызывают проблемы.
И так все почти готово, осталось только настроить ISPManager. Хочу заметить что в ISPManager есть возможность использовать Ruby on Rails прямо из коробки, что очень помогло так как не надо городить костыли. Тем не менее дополнительные телодвижения все таки от Вас потребуются.
А именно:
С Phusion Passenger™ все относительно просто:
Если все пройдет как должно в конце процеса сборки модуля для apache Вы увидите:
скопируйте в /etc/httpd/conf.d/passenger.conf следующее:
и перезагрузите apache
Также необходимо установить поддержку mysql для ruby
На этом все, RoR установлен и готов к употреблению.
Как я уже говорил раньше в ISPManager есть поддержка RoR, только в нашем случае включить её непосредственно в панели не получиться потому как панель захочет установить пакеты из стандартного репозитория, но они как уже было сказано ранее, нам не подходят, но это вовсе не проблема.
Как оказалось RoR достаточно просто включается через конфиг ISPManager'а. Для этого просто добавляем строку
в конец файла /usr/local/ispmgr/etc/ispmgr.conf
и перезагружаем ISPManager
После всех этих манипуляций идем в админку ISPManager и создаем домен для нашего Redmine

Все готово, теперь можно переходить непосредственно к установке Redmine.
логинимся под своим юзером по ssh и переходим в веб корень только что созданого домена.
удаляем все содержимое каталога
Качаем Redmine версии 1.0.1(я ставил из транка) и распаковываем
В качестве БД я использовал mysql, на сколько я знаю есть какие-то траблы с русским языком при использовании mysql как БД для Redmine, но мне это было не важно(пользоваться ним будут не русскоговорящие). Ничто Вам не помешает в качестве бд использовать PostgreSQL. Подразумевается что БД уже создана и у вас на руках есть все необходимые данные.
Перед началом всех манипуляций надо заморозить версию ruby.
Для этого под рутом переходим в каталог куда мы скачали Redmine и делаем следующее
Это позволит избежать проблем при обновлениях.
Также надо поправить одну строчку в /var/www/<isp-username>/data/www/<created.domain.name>/vendor/rails/activesupport/lib/active_support/vendor.rb
заменить
на
это все что б избежать проблем связанных с i18n.
Ок, теперь возвращаемся в консоль своего юзера, и копируем пример конфига БД.
Редактируем config/database.yml, там все достаточно просто, вбиваете нужные данные для подключения к БД а также тип БД. Будет что-то на подобии такого
И непосредственно устанавливаем Redmine
Вот вроде бы и все, Redmine установлен и готов к использованию.

Не забудьте удалить компилятор с боевого сервера.
В планах прикрутить еще Git для полного счастья.
Комментарии и дополнения приветствуются.
Но не все так просто как кажется на первый взгляд, если подобных инструкций для Debian можно найти в гугле без проблем причем валом, то с CentOS не все так радужно, хотя все таки инструкцию я нашел немного поискав. Усугубляться ситуация тем что на хосте уже установлен ISPManager, конечно можно было поставить чистый CentOS и не париться, но так как я неоднократно замечал интерес к данной конфигурации на разных фрилансерских сайтах, то все таки решил разобраться как же все засетапить не нарушив при этом нормального функционирования системы.
Что имеется на входе:
- СentOS 5.5 x86_64
- ISPManager Lite
Все установлено по умолчанию, из особых изменений разве что nginx до установлен через yum и включен в ISPManager.
И так начнем
Первым делом нам необходимо установить ruby и конечно же rails, и тут мы натыкаемся на первую проблему, дело в том что в базовой поставке CentOS есть только версия 1.8.5 которая не удовлетворяет системные требования Redmine. По этому я отправился в гугл на поиски нужной версии уже собранной под CentOS, единственное что я нашел, это сторонний репозиторий с нужной мне версией, подключать который я желанием не горел, к тому же после беглого ознакомления с ним я обнаружил что там есть только x86 пакеты, что мне не подходило. Также я наткнулся на совет собрать руби из src.rpm из состава Fedora 13, этот вариант тоже был мной отброшен. В итоге гугл привел меня к этому чудесному хауту которым я частично воспользовался.
Добавляем репозиторий и устанавливаем ruby и rails:
[root@example.com]# cd /tmp
[root@example.com tmp]# wget packages.endpoint.com/endpoint-rpmsign.pub
[root@example.com tmp]# rpm --import endpoint-rpmsign.pub
[root@example.com tmp]# wget packages.endpoint.com/rhel/5/os/x86_64/endpoint-repo-1.0-1.x86_64.rpm
[root@example.com tmp]# yum localinstall endpoint-repo-1.0-1.x86_64.rpm
[root@example.com tmp]# yum install ruby-enterprise ruby-enterprise-rubygems
[root@example.com tmp]# gem install -v=2.3.5 rails
И так ruby и rails необходимой версии установлены.
Так же на понадобиться gem i18n версии ниже 0.4.0.0, так как версии 0.4.0.0 и выше вызывают проблемы.
[root@example.com tmp]# gem install -v=0.3.7 i18n
И так все почти готово, осталось только настроить ISPManager. Хочу заметить что в ISPManager есть возможность использовать Ruby on Rails прямо из коробки, что очень помогло так как не надо городить костыли. Тем не менее дополнительные телодвижения все таки от Вас потребуются.
А именно:
- Установить Phusion Passenger™
- Включить поддержку RoR в ISPManager
С Phusion Passenger™ все относительно просто:
[root@example.com tmp]# gem install passenger
[root@example.com tmp]# yum install gcc-c++ httpd-devel
[root@example.com tmp]# passenger-install-apache2-module
Если все пройдет как должно в конце процеса сборки модуля для apache Вы увидите:
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
скопируйте в /etc/httpd/conf.d/passenger.conf следующее:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby
и перезагрузите apache
[root@example.com tmp]# service httpd reload
Также необходимо установить поддержку mysql для ruby
[root@example.com tmp]# yum install mysql-devel.x86_64
[root@example.com tmp]# gem install mysql
На этом все, RoR установлен и готов к употреблению.
Как я уже говорил раньше в ISPManager есть поддержка RoR, только в нашем случае включить её непосредственно в панели не получиться потому как панель захочет установить пакеты из стандартного репозитория, но они как уже было сказано ранее, нам не подходят, но это вовсе не проблема.
Как оказалось RoR достаточно просто включается через конфиг ISPManager'а. Для этого просто добавляем строку
path rails /usr/local/bin/rails
в конец файла /usr/local/ispmgr/etc/ispmgr.conf
и перезагружаем ISPManager
[root@example.com tmp]# killall ispmgr
После всех этих манипуляций идем в админку ISPManager и создаем домен для нашего Redmine

Все готово, теперь можно переходить непосредственно к установке Redmine.
логинимся под своим юзером по ssh и переходим в веб корень только что созданого домена.
-bash-3.2$ cd www/redmine.example.com
удаляем все содержимое каталога
-bash-3.2$ rm -rf ./* (будьте внимательны!!! пропустите точку и будет очень весело, только не знаю кому)
Качаем Redmine версии 1.0.1(я ставил из транка) и распаковываем
-bash-3.2$ wget rubyforge.org/frs/download.php/72201/redmine-1.0.1.tar.gz
-bash-3.2$ tar xvzf redmine-1.0.1.tar.gz
-bash-3.2$ mv redmine-1.0.1/* .
-bash-3.2$ rm -rf ./redmine-1.0.1*
В качестве БД я использовал mysql, на сколько я знаю есть какие-то траблы с русским языком при использовании mysql как БД для Redmine, но мне это было не важно(пользоваться ним будут не русскоговорящие). Ничто Вам не помешает в качестве бд использовать PostgreSQL. Подразумевается что БД уже создана и у вас на руках есть все необходимые данные.
Перед началом всех манипуляций надо заморозить версию ruby.
Для этого под рутом переходим в каталог куда мы скачали Redmine и делаем следующее
-bash-3.2$ cd /var/www/<isp-username>/data/www/<created.domain.name>
-bash-3.2$ rake VERSION=2.3.5 rails:freeze:gems
Это позволит избежать проблем при обновлениях.
Также надо поправить одну строчку в /var/www/<isp-username>/data/www/<created.domain.name>/vendor/rails/activesupport/lib/active_support/vendor.rb
заменить
gem 'i18n', '>= 0.1.3'b
на
gem 'i18n', '>= 0.1.3', '< 0.4.0'
это все что б избежать проблем связанных с i18n.
Ок, теперь возвращаемся в консоль своего юзера, и копируем пример конфига БД.
-bash-3.2$ cp config/database.yml.example config/database.yml
Редактируем config/database.yml, там все достаточно просто, вбиваете нужные данные для подключения к БД а также тип БД. Будет что-то на подобии такого
production:
adapter: mysql
database: redmine_test
host: localhost
username: redmine_test
password: redmine_test
encoding: utf8
development:
adapter: mysql
database: redmine_test
host: localhost
username: redmine_test
password: redmine_test
encoding: utf8
И непосредственно устанавливаем Redmine
-bash-3.2$ rake generate_session_store
-bash-3.2$ RAILS_ENV=production rake db:migrate
-bash-3.2$ RAILS_ENV=production rake redmine:load_default_data
Вот вроде бы и все, Redmine установлен и готов к использованию.

Не забудьте удалить компилятор с боевого сервера.
В планах прикрутить еще Git для полного счастья.
Список использованных источников:
- Installing Redmine (from SVN) on a clean CentOS 5.4 box
- Файл конфигурации ISPmanager (ISPmanager)
- Фикс проблемы с i18n
Комментарии и дополнения приветствуются.
Комментарии 10
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.