Я давно использую Redmine на работе. Вернее я его и внедрил в рабочий процесс, как и Git. Долго и нудно боролся с тем, чтобы всех к нему приучить и вроде бы как получилось. Лично мне Redmine очень помогает быть “на волне” рабочего процесса и переключаться между задачами.
И вот я решил установить его у себя на свой хостинг для личного использования.
Дело в том, что у меня есть проблема с мотивацией и ленью, а Redmine помогает мне сосредоточиться на деле. Так же просто удобно записывать в него задачи, и если они записаны – вероятность выполнения вырастает почти до 100%.
Так же для Redmine есть отличные мобильные клиенты, в частности для Android и я планирую использовать его и как todo list.
И так, на локальной машине у меня Ubuntu 14.04, а на сервере Debian Wheezy 7, на который я недавно переехал специально, чтобы установить php 5.5 для работы.
Я решил провести установку сначала на локалке, но по Debian мануалам, а потом уже на сервере. В последствии столкнувшись с некоторыми проблемами я разделил мануалы по установке. Тут только Debian.
Установка ruby, rails, gems и passenger
Для начала надо убедиться в том, что система обновлена
1 2 3 |
apt-get update && apt-get upgrade |
Далее предварительная установка зависимостей, на всякий случай
1 2 3 4 5 6 7 8 9 |
apt-get install git subversion apt-get install imagemagick libmagickwand-dev apt-get install gcc build-essential zlib1g zlib1g-dev zlibc libzlib-ruby libssl-dev libyaml-dev apache2-mpm-prefork apache2-prefork-dev libapr1-dev libxslt-dev checkinstall \ curl gawk g++ make libc6-dev libreadline6-dev libsqlite3-dev \ sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev git subversion imagemagick \ libmagickwand-dev mysql-server libmysqlclient-dev apache2 apache2-threaded-dev libcurl4-gnutls-dev \ libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libauthen-simple-ldap-perl openssl |
Теперь надо установить ruby, rails, gem и rvm конечно же. Устанавливать это все в ручную будет муторно. Тем более я решил ставить Ruby 2.1 версии, а в репозиториях Debian только 1.9 версия. В кратце, если это делать в ручную, то надо сначала скачать Ruby с ftp://ftp.ruby-lang.org/pub/ruby/2.1/ и выполнить ручную сборку и компиляцию.
Я же сделаю все через bash скрипт, расположенный по данному адресу https://get.rvm.io. Подробнее тут http://rvm.io/
1 2 3 4 5 |
apt-get install curl curl -sSL https://get.rvm.io | bash -s stable --ruby=2.1.5 su - |
Скачиваем скрипт, далее сразу же его вызываем. В параметре указана желаемая версия Ruby. Скрипт установит RVM, еще зависимости, а так же автоматически скачает нужную версию Ruby, соберет и скомпилирует ее, далее так же поставит gem.
Последняя команда выполняет как бы регистрацию переменных окружения, иначе надо перелогиниться.
При скачке может возникнуть ошибка ключа. Тогда надо сделать
1 2 3 |
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 |
Проверяем версии.
1 2 3 4 5 6 7 8 9 |
ruby -v ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux] gem -v 2.4.3 rvm list known |
Теперь устновка доков и Rails последней версии, в моем случае 4.1.8.
1 2 3 4 5 |
gem install rdoc gem install rails --no-ri --no-rdoc gem install bundler mysql2 |
Для того, чтобы подключить Ruby к Apache2 нужен passenger и его модуль для Apache2.
1 2 3 4 |
gem install passenger passenger-install-apache2-module |
Чтобы увидеть лист установленных гемов поможет команда
1 2 3 |
gem list --local |
Теперь нужно прописать конфиг, который выдает устновщик модуля Passenger для Apache в конце установки. Я продублирую его тут для примера. Версии могут отличаться!
В файл /etc/apache/mods-available/passenger.load надо поместить следующую строку
1 2 3 |
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.1.5/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so |
А в файл /etc/apache/mods-available/passenger.conf
1 2 3 4 5 6 |
<IfModule mod_passenger.c> PassengerRoot /usr/local/rvm/gems/ruby-2.1.5/gems/passenger-4.0.57 PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.5/wrappers/ruby </IfModule> |
Теперь надо включить модуль и перезапустить Apache2.
1 2 3 4 |
a2enmod passenger service apache2 restart |
На этом предварительная настройка окружения завершена.
Установка и настройка Redmine
Скачивается редмайн через SVN. Я решил ставить сразу в /opt/redmine. Потом можно будет сделать ссылку на папку названную по имени домена, на котором будет висеть редмайн, для понятности.
1 2 3 4 5 |
cd /opt/redmine svn co https://svn.redmine.org/redmine/branches/2.6-stable current |
Далее устанавливаем зависимости проекта с исключениями
1 2 3 4 |
cd redmine/current bundle install --without development test postgresql |
Исправляем права доступа
1 2 3 4 5 |
mkdir -p tmp tmp/pdf public/plugin_assets chown -R www-data:www-data files log tmp public/plugin_assets chmod -R 755 files log tmp public/plugin_assets |
Создаем базу данных Mysql и пользователя с паролем, даем права. Я сделал это в консоли Mysql.
1 2 3 4 5 6 7 |
CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; FLUSH PRIVILEGES; exit |
Далее копируем файл конфигурации БД и настраиваем его
1 2 3 4 |
cp config/database.yml.example config/database.yml nano config/database.yml |
1 2 3 4 5 6 7 8 |
production: adapter: mysql2 database: redmine host: localhost username: redmine password: my_password |
Теперь надо сгенерировать уникальный идентификатор для rake и запустить миграцию, чтобы создать структуру в БД и так же загрузить начальную конфигурацию.
1 2 3 4 5 6 |
rake generate_secret_token RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data |
Теперь можно проверить, что все работает. Для этого надо запустить встроенный сервер
1 2 3 |
ruby script/rails server webrick -e production |
И перейти по адресу – http://your ip:3000
Откроется первозданный redmine и можно будет зайти в админ панель по admin:admin.
Настройка apache2 и passenger
Теперь осталось повесить redmine на нужный хост. Для этого надо создать виртуальный хост и включить его, потом перезапустить apache2.
При условии, что хост уже есть в сети и пингуется – все будет работать.
Если апач через прокси, то надо указать порт 8080, если же апач как основной веб сервер, то указывается 80 порт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<VirtualHost *:80> ServerName yourdomain.ru ServerAdmin admin@seyferseed.ru DocumentRoot /var/www/seyfer/data/www/yourdomain.ru/public ErrorLog /var/log/apache2/redmine_error_log #PassengerMinInstances 6 #PassengerMaxPoolSize 20 #RailsBaseURI / #PassengerAppRoot /opt/redmine/current #RailsEnv development RailsEnv production PassengerResolveSymlinksInDocumentRoot On <Directory /var/www/seyfer/data/www/yourdomain.ru/public> Options Indexes FollowSymLinks -MultiViews Order allow,deny Allow from all AllowOverride All </Directory> </VirtualHost> |
Или же можно скопировать пример виртуального хоста, который будет выдавать команда в конце установки
1 2 3 |
passenger-install-apache2-module |
После нужно включить сайт и перезапустить апач. По указанному адресу откроется redmine.
1 2 3 4 |
a2ensite yourdomain.ru service apache2 restart |
Все должно работать. Лично я столкнулся с тем, что у меня было в файле /etc/apache2/conf.d/secure.conf переопределение настроек разрешений и опций для всех директорий /var/www/*. Там надо подправить или удалить секцию вообще.
При возникновении проблем, чтобы разобраться помогут команды:
1 2 3 4 5 6 7 8 |
apachectl configtest cat /var/log/apache2/error.log cat /opt/redmine/current/log/production.log sudo passenger-status apachectl -t -D DUMP_MODULES|grep -i passenger |
После успешного входа надо сменить пароль admin. Добавляются новые пользователи путем регистрации и активации их из под админа в админке.
В админке на вкладке information у меня выдается следуующее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Environment: Redmine version 2.6.0.stable.13840 Ruby version 2.1.5-p273 (2014-11-13) [x86_64-linux] Rails version 3.2.21 Environment production Database adapter Mysql2 SCM: Subversion 1.6.17 Git 1.7.10.4 Filesystem Redmine plugins: redmine_create_git 0.1.0 |
Как видно я уже поставил один плагин.
1 2 3 4 5 6 |
cd /opt/redminecurrent/plugins/ git clone https://github.com/martin-denizet/redmine_create_git.git bundle install service apache2 restart |
Настройка почтовых уведомлений
Для начала надо скопировать стандартный конфиг
1 2 3 4 |
cp config/configuration.yml.example config/configuretion.yml nano configuration.yml |
Далее есть 2 варианта. Первый это использовать сторонний smtp. Тут минус в том, что письма будут приходить от имени используемого почтового аккаунта.
1 2 3 4 5 6 7 8 9 10 11 12 |
email_delivery: delivery_method: :smtp smtp_settings: enable_starttls_auto: true address: "smtp.gmail.com" port: 587 domain: "yourdomain.ru" authentication: :plain user_name: "yourlogin@gmail.com" password: "passwd" |
И второй вариант это использовать локальный postfix (если он настроен) или sendmail.
1 2 3 4 5 6 7 8 9 10 |
email_delivery: delivery_method: :smtp smtp_settings: address: "localhost" port: 25 domain: yourdomain.ru tls: false enable_starttls_auto: false |
Установка плагина People и темы оформления Pixel Cookers
Плагин People я ставлю потому, что он мне очень нравится. Привносит элемент социальной сети, расширяет данные о пользоватаеле, дает создавать департаменты и грузит аватарку с gravatar.
Официальная страница плагина – http://redminecrm.com/projects/people/pages/1
1 2 3 4 5 6 7 8 |
cd /opt/redmine/current/plugins wget http://redminecrm.com/license_manager/11368/redmine_people-0_1_8.zip unzip redmine_people-0_1_8.zip bundle install --without development test bundle exec rake redmine:plugins NAME=redmine_people RAILS_ENV=production service apache2 restart |
Далее я установлю мою любимую и самую красивую тему Pixel Cookers, которая только есть.
Официальная страница – http://pixel-cookers.github.io/redmine-theme/
1 2 3 4 5 |
cd public/themes git clone git://github.com/pixel-cookers/redmine-theme.git pixel-cookers service apache2 restart |
Далее меняется тема в админке. На этом установка завершена! :)
BONUS: Установка Redmine 2.6 на Debian 7 Wheezy (Nginx + Thin)