Продолжение статьи об установке Redmine на сервер под управлением CentOS 6.2. Первую часть вы можете прочитать здесь, вторую часть - здесь.
В этой части мы всё таки доберемся до установки самого Redmine, http-сервера Apache и модуля Passenger, а так же сделаем нужные настройки для полноценной работы всей связки установленных пакетов.
Поехали...
-
Содержание:
- Проверка текущей версии CentOS.
- Подготовка к установке. Установка дополнительных пакетов.
- Установка Ruby.
- Установка RubyGems.
- Установка Rails.
- Установка Extra Packages for Enterprise Linux 6 (EPEL).
- Установка MySQL.
- Конфигурация MySQL.
- Первый запуск MySQL.
- Создание пароля для root и удаление анонимного подключения к MySQL.
- Создание базы данных и пользователя для Redmine.
- Установка автоматического запуска MySQL.
- Установка ImageMagick.
- Установка поддержки шрифтов TrueType.
- Установка RMagick.
- Установка Redmine.
- Установка Apache.
- Начальная настройка Redmine.
- Установка модуля MySQL для подключения через Ruby.
- Настройка файла configuration.yml.
- Установка Passenger.
- Подключение и настройка модуля Passenger к Apache.
- Изменение конфигурации, если используется SELinux.
- Запуск Apache и установка его автозагрузки.
16. Установка Redmine.
Скачиваем дистрибутив Redmine версии 2.0.3 с сайта http://rubyforge.org/frs/?group_id=1850.
[root@loginsrv src]# cd ~ebabenko/data/distrib/redmine [root@loginsrv redmine]# wget http://rubyforge.org/frs/download.php/76259/redmine-2.0.3.tar.gz [...skipped...] [root@loginsrv redmine]# cd /var/lib [root@loginsrv lib]# cp ~ebabenko/data/distrib/redmine/redmine-2.0.3.tar.gz . [root@loginsrv lib]# tar zxvf redmine-2.0.3.tar.gz [...skipped...] [root@loginsrv lib]# rm redmine-2.0.3.tar.gz rm: remove regular file `redmine-2.0.3.tar.gz'? y [root@loginsrv lib]# mv redmine-2.0.3 redmine
17. Установка Apache.
[root@loginsrv lib]# yum install httpd httpd-devel [...skipped...] Total download size: 1.6 M Is this ok [y/N]: y [...skipped...] Installed: httpd-devel.x86_64 0:2.2.15-15.el6.centos.1 Dependency Installed: apr-devel.x86_64 0:1.3.9-5.el6_2 apr-util-devel.x86_64 0:1.3.9-3.el6_0.1 expat-devel.x86_64 0:2.0.1-11.el6_2 Updated: httpd.x86_64 0:2.2.15-15.el6.centos.1 Dependency Updated: apr.x86_64 0:1.3.9-5.el6_2 expat.x86_64 0:2.0.1-11.el6_2 httpd-tools.x86_64 0:2.2.15-15.el6.centos.1 Complete!
18. Начальная настройка Redmine.
[root@loginsrv lib]# pwd /var/lib [root@loginsrv lib]# chown -R apache:apache redmineКонфигурируем database.yml.
[root@loginsrv lib]# cd redmine/config [root@loginsrv config]# cp database.yml.example database.yml [root@loginsrv config]# vi database.ymlИспользоваться будет только одна конфигурация - production. Поэтому приводим соответствующую секцию к следующему виду:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: RedMinePasswd encoding: utf8Если требуется использовать и другие конфигурации, другие секции этого файла так же требуется привести к подобному виду (а так же не забыть под каждую из них создать соответствующих пользователей и БД в MySQL).
Создаём токен.
[root@loginsrv config]# cd ../ [root@loginsrv redmine]# gem install bundler Successfully installed bundler-1.1.4 1 gem installed Installing ri documentation for bundler-1.1.4... Installing RDoc documentation for bundler-1.1.4... [root@loginsrv redmine]# bundle install --without development test postgresql sqlite [...skipped...] [root@loginsrv redmine]# rake generate_session_store Note: The rake task generate_session_store has been deprecated, please use the replacement version generate_secret_token [root@loginsrv redmine]# rake generate_secret_token [root@loginsrv redmine]# ls config/initializers/secret_token.rb config/initializers/secret_token.rb
19. Установка модуля MySQL для подключения через Ruby.
[root@loginsrv redmine]# gem install mysql Fetching: mysql-2.8.1.gem (100%) Building native extensions. This could take a while... Successfully installed mysql-2.8.1 1 gem installed Installing ri documentation for mysql-2.8.1... Installing RDoc documentation for mysql-2.8.1... [root@loginsrv redmine]# whereis ruby ruby: /usr/local/bin/ruby /usr/local/lib/ruby [root@loginsrv redmine]# cd /usr/local/lib/ruby/gems/1.9.1/gems/mysql-2.8.1 [root@loginsrv mysql-2.8.1]# whereis mysql_config mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz [root@loginsrv mysql-2.8.1]# ruby ext/mysql_api/extconf.rb --with-mysql-config=/usr/bin/mysql_config checking for mysql_ssl_set()... yes checking for rb_str_set_len()... yes checking for rb_thread_start_timer()... no checking for mysql.h... yes ext/mysql_api/extconf.rb:67: Use RbConfig instead of obsolete and deprecated Config. creating Makefile [root@loginsrv mysql-2.8.1]# make linking shared-object mysql_api.so gcc: mysql.o: No such file or directory make: *** [mysql_api.so] Error 1К этому моменту, я уже переставал понимать что происходит и думал, когда же уже установится этот злосчастный Redmine. Поэтому долго париться на счет ошибки не стал: откуда взялась, почему криво сконфигурировалась. Просто "забил болт" и отредактировал Makefile следующим образом:
[root@loginsrv mysql-2.8.1]# vi Makefile
[...skipped...] SRCS = mysql.c OBJS = $(srcdir)/mysql.o [...skipped...]Собираем и устанавливаем.
[root@loginsrv mysql-2.8.1]# make linking shared-object mysql_api.so [root@loginsrv mysql-2.8.1]# make install /usr/bin/install -c -m 0755 mysql_api.so /usr/local/lib/ruby/site_ruby/1.9.1/x86_64-linux installing default mysql_api libraries [root@loginsrv mysql-2.8.1]# cd /var/lib/redmine/lib [root@loginsrv lib]# ln -s /usr/local/lib/ruby/gems/1.9.1/gems/mysql-2.8.1/lib/mysql.rb [root@loginsrv lib]# cd ../ [root@loginsrv redmine]# rake db:migrate RAILS_ENV=production [...skipped...] [root@loginsrv redmine]# rake redmine:load_default_data RAILS_ENV=production Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ru ==================================== Default configuration data loaded.
20. Настройка файла configuration.yml.
[root@loginsrv redmine]# cd config [root@loginsrv config]# cp configuration.yml.example configuration.yml [root@loginsrv config]# vi configuration.ymlНайдите следующую запись и отредактируйте её в соответствии с вашими параметрами и предпочтениями.
# default configuration options for all environments default: # Outgoing emails configuration (see examples above) email_delivery: delivery_method: :smtp smtp_settings: address: smtp.example.net port: 25 domain: example.net authentication: :login user_name: "redmine@example.net" password: "redmine"В начале файла приводится список различных примеров конфигураций. Я настроил на собственный ящик в GMail.
production: email_delivery: delivery_method: :smtp smtp_settings: tls: true enable_starttls_auto: true address: "smtp.gmail.com" port: 587 domain: "smtp.gmail.com" authentication: :plain user_name: "patttern@gmail.com" password: "****"
21. Установка Passenger.
[root@loginsrv config]# cd /usr/local/src [root@loginsrv src]# gem install passenger Fetching: fastthread-1.0.7.gem (100%) Building native extensions. This could take a while... Fetching: daemon_controller-1.0.0.gem (100%) Fetching: passenger-3.0.13.gem (100%) Successfully installed fastthread-1.0.7 Successfully installed daemon_controller-1.0.0 Successfully installed passenger-3.0.13 3 gems installed Installing ri documentation for fastthread-1.0.7... Installing ri documentation for daemon_controller-1.0.0... Installing ri documentation for passenger-3.0.13... Installing RDoc documentation for fastthread-1.0.7... Installing RDoc documentation for daemon_controller-1.0.0... Installing RDoc documentation for passenger-3.0.13... [root@loginsrv src]# yum install curl-devel [...skipped...] Total download size: 598 k Is this ok [y/N]: y [...skipped...] Updated: libcurl-devel.x86_64 0:7.19.7-26.el6_2.4 Dependency Updated: curl.x86_64 0:7.19.7-26.el6_2.4 libcurl.x86_64 0:7.19.7-26.el6_2.4 Complete! [root@loginsrv src]# passenger-install-apache2-module
Welcome to the Phusion Passenger Apache 2 module installer, v3.0.13. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. Don't worry if anything goes wrong. This installer will advise you on how to solve any problems. Press Enter to continue, or Ctrl-C to abort. 1 -------------------------------------------- Checking for required software... [...skipped...] -------------------------------------------- Compiling and installing Apache 2 module... [...skipped...] -------------------------------------------- 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.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 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. -------------------------------------------- Deploying a Ruby on Rails application: an example Suppose you have a Rails application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public: <VirtualHost *:80> ServerName www.yourhost.com # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /somewhere/public <Directory /somewhere/public> # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews </Directory> </VirtualHost> And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/doc/Users guide Apache.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/ Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
22. Подключение и настройка модуля Passenger к Apache.
Для начала требуется создать файл конфигурации Passenger для Apache с содержимым, которое было объявлено при установке модуля + дополнительные настройки, которые я тупо скопировал с источника [1] (если вам требуется).
[root@loginsrv src]# vi /etc/httpd/conf.d/passenger.conf
# Pathes from passenger-install-apache2-module LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 PassengerRuby /usr/local/bin/ruby # Remove HTTP Headers Header always unset "X-Powered-By" Header always unset "X-Rack-Cache" Header always unset "X-Content-Digest" Header always unset "X-Runtime" # Tuning of Passenger PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 3600 PassengerUseGlobalQueue on PassengerHighPerformance on PassengerStatThrottleRate 10 RailsSpawnMethod smart RailsAppSpawnerIdleTime 86400 RailsFrameworkSpawnerIdleTime 0 # ServerName Host:Port ServerName bt.esphere.ru:80Правим конфигурационный файл Apache.
[root@loginsrv src]# vi /etc/httpd/conf/httpd.conf
Добавляем в конец файла следующие строки.<VirtualHost *:80> ServerName bt.esphere.ru DocumentRoot /var/www/html RailsEnv production RailsBaseURI /redmine </VirtualHost>Опция "RailsEnv production" используется опционально. Если вы планируете использовать несколько концигураций, этот параметр можно опустить (или закомментировать). Создаем симлинк на Redmine.
[root@loginsrv src]# ln -s /var/lib/redmine/public /var/www/html/redmine
23. Изменение конфигурации, если используется SELinux.
[root@loginsrv src]# passenger-config --root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 [root@loginsrv src]# chcon -R -h -t httpd_sys_content_t /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 [root@loginsrv src]# vi /etc/selinux/configПараметр
SELINUX=enforcingменяем на
SELINUX=disabledОстанавливаем и отключаем firewall.
[root@loginsrv src]# /etc/rc.d/init.d/iptables stop iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: nat filter [ OK ] iptables: Unloading modules: [ OK ] [root@loginsrv src]# /sbin/chkconfig iptables off
24. Запуск Apache и установка его автозагрузки.
[root@loginsrv src]# /etc/init.d/httpd start Starting httpd: [ OK ] [root@loginsrv src]# /sbin/chkconfig httpd on [root@loginsrv src]# /sbin/chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:offЕсли ваши нервы выдержали и вы провели все операции от начала и до текущего момента, то в результате по переходу по адресу вашего сервера (в моём случае это адрес http://bt.esphere.ru/redmine) вы должны увидеть главную страницу Redmine. У меня, к сожалению, такого чуда не произошло. Вместо желаемой страницы, я получал список файлов директории redmine.
Я решил перезапустить сервер полностью, чтобы облегчить мозг сервера после таких истязательств, а после уже приступить к поиску проблемы. Однако, после перезапуска как по мановению волшебной палочки, Redmine поднялся.
Спасибо всем, кто осилил данный мануал до конца.
При использовании всего или части содержимого, не забывайте указывать ссылку на источник, то есть на мой блог.
Источники, использованные при написании статьи:
[1] http://kk-openam.blogspot.com/2012/05/redmine.html
[2] http://blog.whatgeek.com.pt/2011/11/install-core-fonts-centos-6/
[3] http://www.redmine.org/projects/redmine/wiki/RedmineInstall
Спасибо за труд, внесу некоторые поправки. После всего сделанного по вашей инструкции, возникла ошибка в Ruby, вернее он начал ругаться на БД. В пункте создания БД на мускуле немного не те команды нужно использовать. Вот те, что использовал я:
ОтветитьУдалитьcreate database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';
После него редмайн стал сразу. И еще. Не отключайте фаервол. Лучше просто открыть 80 порт
Спасибо за замечание. Однако, вводимые запросы SQL, которые я описал выше, у меня прошли безошибочно. Осмелюсь предположить, что это какая то тонкость самого MySQL сервера. Ваш запрос то же является абсолютно правильным. У меня он чуть развернутый.
УдалитьЧто касательно firewall - полностью с Вами согласен, отключать его не нужно. Но описывать правильность его настройки у меня в данной статье как таковой задачей не ставилось. К тому же сервер, на котором я производил эксперименты уже стоит за корпоративным firewall'ом, собственно именно поэтому я посчитал что дополнительный фаервол мне просто будет мешаться.
Егор, отличная статья, спасибо. Единственная проблема, котрая не дает насладиться )) Редмайн, это несостыковка его с гит плагинами для управления gitolite. Так и не смог на свежих версиях Редмайн добиться их работы. Есть ли у Вас успешные решения в этой области?
ОтветитьУдалитьСпасибо за Ваш отзыв!
УдалитьС плагинами для Redmine 1.* для версии Redmine 2.* - известная проблема. Мне требовалось подрубить плагин, чтобы Redmine авторизовывался к SSO (OpenAM) серверу. За основу взял плагин JOSSO для Redmine, но как понятно, он просто напросто не заработал. После перелопачивания ответов от гугла на момент как лечить плагины, нашел решение. И проблема эта связана с новой версией Rails, проще говоря, изменились методы. Почитав доку по Rails, нашёл отличия, каким образом можно исправить методы, чтобы плагин заработал. Сделал в 2-х файликах изменения, плагин запустился... но не заработал, потому что был предназначен для JOSSO, для OpenAM он не подходил в принципе. Попытался переписать этот плагин нужным образом, но дальше дело не пошло, так как я во первых не "рубист", во вторых этот таск был снят с моих задач (это была корпоративная задача). Собственно, успешным решением это назвать сложно. А другими плагинами я не занимался.
Спасибо. Именно, проблема в том и у меня, что я не "рубист") Плагин работы Редмайн с Гитом нормально удалось запустить лишь для ветки 1.1.х Даже для 1.4 он практически не работоспособен, не говоря о версии 2, где новые "Рельсы". Точнее для 1.4 он установился и давал конфигурить, но часть страниц перестала работать, ака Профиля юзера. Всё это "к сожаленю", потому что иначе смысл в Редмайн для нашей компании полностью теряется. Либо оставаться на 1.1.х
УдалитьНо всё равно спасибо за труд и ответ.
Рад был помочь!
УдалитьЕгор, в процессе работы с Редмайном возникла потребность интегрировать в его работу Subversion. Не занимались этим? Суть проблемы излагать сейчас не буду, дождусь вашего ответа.
ОтветитьУдалитьК сожалению нет. Мой опыт закончился на установке самого Redmine, после чего я передал права на управление. Никакие дополнительные плагины и настройки в нем я больше не производил.
УдалитьСпасибо!!! Как с этим разберусь, то по вашему желанию, поделюсь подробным мануалом, может кому-то пригодиться.
УдалитьРуслан.
УдалитьНа сколько я вижу по спросам в интернете, данная тема достаточно востребованная. Поэтому, я бы с удовольствием почитал (и проэкспериментировал) ваш мануал.
Сейчас занимался связкой, сделать все по автомату (проект - отдельный репозитарий)не вышло, перековырял и офф мануалы и документацию. Решено было создать одно узкоспециализированное хранилище под потребности компании. Сейчас данную весчь вынесу наверх, то бишь на боевые сервера, тогда и поделюсь документиком. himik_od_ua@mail.ru пришлите сюда пустое письмо, чтоб у меня была возможность вам ответить с файлом мануала. По данному вопросу разобрался насколько это возможно, так что обращайтесь, если будут вопросы
ОтветитьУдалитьСпасибо большое - повторил все досканально на vmware 9.0 + CentOS 6.3 естественно что некоторые пакеты уже изменились в версии и это надо просто подправлять в процессе и быть внимательным =) а так я получил ровно все что описано и сделал это за пару часов вникая. Спасибо за яростную экономию времени =)
ОтветитьУдалитьAlexandr Trohman, спасибо за ваш отзыв. Значит мои труды не прошли зря.
Удалитьа мочему mysql а не mysql2 - это имеет какое-то значение?
ОтветитьУдалитьВ подробности данного вопроса не вникал, судя по всему mysql и mysql2 - это разные версии. В принципе, можете попробовать подключить через mysql, вдруг действительно получится.
УдалитьСорри как всегда manual не читал ((, для ruby 1.9 - adapter must be set to mysql2
УдалитьНу в принципе я действовал так же по методу "Если ничего не получилось - читаем маны" =) Потому и не смог ответить на вопрос. Правда изначально посмотрел таблицу required. Однако, про mysql не помню. Скорее всего это уже было тогда, когда я уже переставал понимать, что происходит и когда же в конце концов это всё установится.
УдалитьСпасибо за информацию.
ОТЛИЧНЫЙ САМЫЙ ПОДРОБНЫЙ МАНУАЛ КОТОРЫЙ МОЖНО НАЙТИ! БЛАГОДАРЮ!
ОтветитьУдалитьСпасибо за ваш отзыв!
УдалитьБлагодарю!
ОтветитьУдалитьУра!!! Я сделал это! Хотя не сразу все срослось, но получилось! Автору уважение и почет. Спасибо за прекрасный пост! Только с селинуксом кажется немного схалтурил. Вроде начал создавать правила, но потом просто его отключил и iptables тоже. Так нельзя :)
ОтветитьУдалить:))) Есть немного халтуры, согласен. Просто на тот момент, когда я дошёл до конфигурации правил, мне уже было не до настройки.
УдалитьПо Вашей статье пытаюсь поставить на RHEL 6.3
ОтветитьУдалитьВерсия ImageMagic - 6.8.1-10
Возникли проблемы при установке rmagic 2.13.1
checking for InitializeMagick() in -lMagickCore... no
checking for InitializeMagick() in -lMagick... no
checking for InitializeMagick() in -lMagick++... no
Can't install RMagick 2.13.1. Can't find the ImageMagick library or one of the dependent libraries. Check the mkmf.log file for more detailed information.
Способ решения:
[root@redmine lib]# cd /usr/local/lib
[root@redmine lib]# ln -s libMagick++-Q16.la libMagick++.la
[root@redmine lib]# ln -s libMagick++-Q16.so.7.0.0 libMagick++.so
[root@redmine lib]# ln -s libMagickCore-Q16.la libMagickCore.la
[root@redmine lib]# ln -s libMagickCore-Q16.so.7.0.0 libMagickCore.so
[root@redmine lib]# ln -s libMagickWand-Q16.la libMagickWand.la
[root@redmine lib]# ln -s libMagickWand-Q16.so.7.0.0 libMagickWand.so
Разместите пожалуйста в блоге. Я сам потратил час на поиски решения.
Спасибо, Денис, за комментарий.
УдалитьВремена меняются и меняются критерии установки. То что написано в статье было справделиво для тех версий, которые указаны во время установки. На текущий момент, ситуация изменилась. Я, устанавливая буквально неделю назад Redmine (а он уже подрос до версии 2.2.1), так же столкнулся с такой проблемой. Однако, данный вопрос решается немного проще. Вместо создания симлинков, нужно выполнить
$ sudo yum install ImageMagick-devel
Данная статья (все 3 части) останутся не изменными. Сейчас подготавливается статья с дополнениями к этой статье, куда и будет внесена данная поправка.
Размещать или нет - дело хозяйское.
УдалитьУже 2.2.2 (её и ставим)
А Вы не пробовали использовать БД Postgreesql или Oracle? Для корпоративных целей. Я думаю, что читателям тоже было бы интересно почитать про такие связки.