В данном посте рассказывается как поставить систему управления проектами Redmine на CentOS с сохранением БД в PostgreSQL. В качестве фронденда будет использоваться nginx в связке с Phusion Passenger. Поскольку установка тестовая, все будет располагаться на одной машине. Версии ПО по возможности используются последние на момент написания, поэтому применяется сборка из исходных кодов.
Последовательность установки:
- Ruby — интерпретируемый язык
- Node.js — JavaScript сервер
- Ruby on Rails — веб-фрэймворк на базе Ruby
- ImageMagick — библиотека для экспорта диаграмм Ганта в PNG
- Phusion Passenger — сервер приложений для Ruby on Rails
- nginx — веб-сервер
- PostgreSQL — сервер баз данных
- Redmine — система управления проектами
Процесс установки на CentOS:
- Ruby
Устанавливаем репозиторий EPEL для дополнительных пакетов RPMrpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Устанавливаем необходимые для сборки Ruby пакеты
yum groupinstall ‘Development Tools’ yum --enablerepo=epel -y install libyaml libyaml-devel readline-devel ncurses-devel gdbm-devel tcl-devel openssl-devel db4-devel libffi-devel
Подготавливаем исходный код для сборки
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz -P rpmbuild/SOURCES wget https://raw.githubusercontent.com/hansode/ruby-2.1.x-rpm/master/ruby21x.spec -P rpmbuild/SPECS
Изменяем в файле спецификации версию Ruby на 2.1.1
nano rpmbuild/SPECS/ruby21x.spec rubyver 2.1.1
Собираем RPM-пакет Ruby
rpmbuild -bb rpmbuild/SPECS/ruby21x.spec
Устанавливаем RPM-пакет
rpm -Uvh rpmbuild/RPMS/x86_64/ruby-2.1.1-2.el6.x86_64.rpm
Проверяем установку Ruby и включенный в него менеджер пакетов Gem
ruby -v gem -v
- Node.js
Устанавливаем Node.js, т.к. он требуется для работы Ruby on Railsyum --enablerepo=epel -y install nodejs
- Ruby on Rails
Устанавливаем Ruby on Rails с использованием стандартного менеджера пакетов Gemgem install bundler gem install rails
Проверяем установку Ruby on Rails
rails -v
- ImageMagick
Устаналиваем ImageMagickyum -y install ImageMagick ImageMagick-devel libcurl-devel
- Phusion Passenger
Устанавливаем сервер приложений через стандартный менеджер пакетов Gemgem install passenger
Запускаем установщик, который скачает и скомпилирует nginx с модулем Phusion Passenger
passenger-install-nginx-module
Проверяем установку Phusion Passenger
passenger-memory-stats
- nginx
Веб-сервер nginx был установлен с включенным модулем Phusion Passenger, по умолчанию его файл конфигурации лежит в /opt/nginx/conf/nginx.conf.
Публикуем Redminenano /opt/nginx/conf/nginx.conf server { listen 80; server_name www.redmine-fqdn.com; root /var/www/public; passenger_enabled on; } закомментируем секцию с location
Скачиваем с сайта http://wiki.nginx.org/RedHatNginxInitScript скрипт загрузки nginx и помещаем его в папку /etc/init.d/ (не забываем указать права на исполнение chmod a+x /etc/init.d/nginx). Редактируем файл для указания правильного места расположения файлов nginx
nano /etc/init.d/nginx nginx="/opt/nginx/sbin/nginx" NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
Включаем автозагрузку nginx
chkconfig nginx on
- PostgreSQL
Устанавливаем репозиторий PostgreSQLrpm -Uhv http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
Исключаем из основго репозитория CentOS поиск пакетов PostgreSQL
nano /etc/yum.repos.d/CentOS-Base.repo [base] exclude=postgresql* [updates] exclude=postgresql*
Устанавливаем PostgreSQL
yum install postgresql93-server postgresql93-devel
Инициализируем PostgreSQL и добавляем в автозагрузку
service postgresql-9.3 initdb chkconfig postgresql-9.3 on service postgresql-9.3 start
Переключаем на пользователя PostgreSQL и запускаем коммандную строку
su - postgres psql postgres postgres
В коммандной строке PostgreSQL изменяем пароль стандартного пользователя postgre, создаем пользователя redmine и БД для redmine
ALTER USER postgres WITH PASSWORD 'password'; CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Разрешаем подключение с этой машины к PostgreSQL
nano /var/lib/pgsql/data/pg_hba.conf local all all md5 host all all 127.0.0.1/32 md5
Применяем изменения к PostgreSQL
service postgresql-9.3 restart
- Redmine
Создаем папку для Redminemkdir -p /var/www
Скачиваем с сайта http://www.redmine.org/releases/redmine-2.5.0.tar.gz архив с Redmine и копируем в эту папку.
Создаем файл настроек БД Redmine из файла примера и правим егоcp /var/www/config/database.yml.example /var/www/config/database.yml nano /var/www/config/database.yml закомментируем все и оставляем только production: adapter: postgresql database: redmine host: localhost username: redmine password: <password>
Устанавливаем требуемые для Redmine пакеты с использованием Bundle
cd /var/www/ bundle install --without development test
Генерируем рандомные ключи для шифрования куков Rails
rake generate_secret_token
Подготавливаем БД для Redmine
RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data
Назначаем права для nginx для работы с Redmine
mkdir -p public/plugin_assets chown -R nobody:nobody files log tmp public/plugin_assets chmod -R 755 files log tmp public/plugin_assets
Запускаем nginx
service nginx start
Открываем в браузере FQDN или IP адрес машины, на которой установили Redmine и заходим под аккаунтом
login: admin password: admin