CentOS 5 + ISPManager + Redmine

Все началось с того что мне понадобился Redmine, так как эта система обсуждалась на хабре то вдаваться в подробности не буду, скажу только что для работы оной требуется ruby 1.8.6/1.8.7, rails 2.3.5 rack 1.0.1.

Но не все так просто как кажется на первый взгляд, если подобных инструкций для 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™ все относительно просто:
[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
image
Все готово, теперь можно переходить непосредственно к установке 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 установлен и готов к использованию.
image
Не забудьте удалить компилятор с боевого сервера.
В планах прикрутить еще Git для полного счастья.

Список использованных источников:


Комментарии и дополнения приветствуются.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 10

    +2
    Redmine лучше ставить из репозитория (svn co) т.к. это сильно облегчит обновления, особенно если будут изменяться шаблоны.

    Каких либо проблем с русским языком и mysql мною замечено не было (американский шаред хостинг). Зато была замечена забавная бага с временем коммита для svn — если установить для руби (в конфиге Redmine) нужный часовой пояс (+3), то при установке другого часового пояса в post_commit хуке для svn (тоже +3) — время всех ревизий будет в будущем (+6)…
      +1
      Про проблемы с русским при использовании mysql видел где-то на просторах инета, посчитал что лучше предупредить. По поводу установки, тут соглашусь с Вами, сам ставил из trunk, но для стати решил использовать как бы стабильный релиз Redmine
      +1
      Народ, вот скажите мне пожалуйста, изза чего эта цента так популярна? сколько раз приходилось с ней возится, репозитарии просто отвратные. Дефолтные параметры кучи софта — да за такое нужно бить больно.
      Или я чего то не понимаю?
      И да, CentOS никогда не была Ынтэрпрайзом.
      Так в чем же дело?
        0
        Ну на эту тему можно долго спорить. В целом вполне себе так ничего. А по поводу Ынтэрпрайзности как Вы выразились, тут не соглашусь, CentOS бинарно совместима с RHEL, некоторый процент Ынтэрпрайз софта хорошо ставится как правило только на RHEL/SLES(в смысле без каких либо ектсра гемороев, и большого бубна). Это же применимо к всяким редкостным чудо-девайсам
          0
          Ну ладно. То что у него пакеты с RHEL это понятно. А вот для того чтобы сделать продакшн сервер нужно либо искать кучу разныз репозитариев. Либо самому все собирать. Опять же, если репа не оффициальная то гарантий нет никаких! О чем тут может быть речь? То что все работает это понятно, но для меня это не позволительно…
            0
            ну никто никого не заставляет ставить CentOS, а кто ставит его, тот наверное знает почему.
              0
              Вот меня это и интересует)
        0
        Спасибо за подробный рассказ.

        Буквально вчера ночером выложил себе в бложик заметку о настройке и использовании Redmine — возможно, кому-то будет полезно.
          0
          Если стоит Nginx, почему не сделать через модуль Passenger для него? Или лишь из-за того чтоб интегрироваться в ISPManager?
            0
            Вы абсолютно правы, это только из-за ISPManager

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое