Відносно нещодавно я писав як установити систему управління проектами та відстежування помилок Atlassian Jira. Проте ймовірно вона влаштовує не всіх, адже як кожна річ вона має свої недоліки та і ліцензія на цей програмний продукт коштує зовсім не дешево. Тому як альтернативу я пропоную Redmine, open source рішення на ruby, що є повністю безкоштовним і розповсюджується під ліцензією GPL v2. Варто також зауважити, що Redmine має клієнти під ОС Android та Iphone.
У цій статті піде мова про установку системи управління проектами та відстежування помилок Redmine, що працюватиме під ОС Ubuntu 13.04, у якості веб-серверу будемо використовувати Nginx та Thin (веб-сервер для Ruby).
Почнемо із установки Redmine. Сирці можна скачати багатьма способами: через Git/SVN/Mercurial репозиторій, чи просто як tar.gz чи zip-архів із RubyForge. Подробиці тут http://www.redmine.org/projects/redmine/wiki/Download.
1. Скачаємо Redmine і розпакуємо:
# wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
# tar xvfz redmine-2.3.3.tar.gz
# mv redmine-2.3.3 /var/www/
2. У якості бази даних будемо користуватись MySQL. Установлюємо його та переходимо до створення користувача і самої бази:
mysql> CREATE DATABASE redmine CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'my_password';
3. Налаштовуємо параметри конекту Redmine із базою данних:
# cd /var/www/redmine-2.3.3
# cp config/database.yml.example config/database.yml
# vim config/database.yml
...
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: my_password
...
4. Redmine використовує Bundler (менеджер пакетів, щоб трохи зрозуміти як все влаштовано, можна почитати це http://nashbridges.me/gem-for-end-user) для управління gem-ми, тому спершу встановимо його:
# gem install bundler
І встановимо gem-и, що необхідні для роботи Redmine:
# bundle install --without development test
Ймовірно вам необхідно буде встановити також додаткові пакети для успішного закінчення попередньої команди:
http://stackoverflow.com/questions/16376010/ubuntu-cannot-install-rmagick
http://stackoverflow.com/questions/7645918/require-no-such-file-to-load-mkmf-loaderror
5. Генеруємо ключ для збереження cookies та сесій:
# rake generate_secret_token
6. Створюємо структуру та дефолтну конфігурацію бази данних, що буде використовувати Redmine:
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
7. Редагуємо права в директорії /var/www/redmine-2.3.3 та створюємо public/plugin_assets:
# mkdir -p tmp tmp/pdf public/plugin_assets
# sudo chown -R redmine:redmine files log tmp public/plugin_assets
# sudo chmod -R 755 files log tmp public/plugin_assets
8. Стартуємо Redmine:
# ruby script/rails server webrick -e production
І перевіряємо його роботу в браузері http://localhost:3000/.
Сервер Webrick зазвичай використовується у якості тестування ruby-додатків, і не використовується для більш серйозних цілей. Тому надалі ми будемо використовувати зв'язку Nginx + Thin (можна також замість thin встановити Passenger, Puma і т.д.).
1. Будемо встановлювати Thin из Rubygems, тому додамо його в Gemfile і оновимо оточення:
# cd /var/www/redmine-2.3.3
# echo "gem 'thin'" >> Gemfile
# bundle install --without development test mysql
2. Створюємо файл конфігурації для Thin і необхідні диркторії для його роботи:
# mkdir /etc/thin
# mkdir /var/log/thin
# chmod 755 /var/log/thin
# thin config --config /tmp/redmine.yml --chdir /var/www/redmine-2.3.3 \
--environment production --socket /var/run/redmine/sockets/thin.sock \
--daemonize --log /var/log/thin/redmine.log --pid /var/run/thin/redmine.pid \
--user root --group root --servers 1 --prefix
# mv /tmp/redmine.yml /etc/thin/redmine.yml
У моєму випадку остаточний конфіг виглядає так:
# cat /etc/thin/redmine.yml
---
chdir: /var/www/redmine-2.3.3
environment: production
timeout: 30
log: /var/log/thin/redmine.log
pid: /var/run/thin/redmine.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
socket: /var/run/redmine/sockets/thin.sock
daemonize: true
user: root
group: root
servers: 1
prefix: /
chdir - директорія з Redmine
prefix - префікс, по якому буде доступним сайт. / - тобто сайт буде доступним без префіксів, типу http://myredmine.com/
Ставимо необхідні права на конфігураційні файли:
# chown root:root /etc/thin/redmine.yml
# chmod 644 /etc/thin/redmine.yml
Можна запускати Thin не від користувача root, але тоді необхідно змінити шлях до сокету/pid-файлу. Також в мене Thin скаржився на права директорії логів, хоча там і стояли рекомендовані 0666. Тому я встановив 0777:
# chmod -R 0777 /var/www/redmine-2.3.3/log/
3. Створюємо скрипт запуску Thin-сервера:
# cat /etc/init.d/thin
#!/bin/sh
### BEGIN INIT INFO
# Provides: thin
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: thin initscript
# Description: thin
### END INIT INFO
# Original author: Forrest Robertson
# Do NOT "set -e"
DAEMON=/var/lib/gems/1.9.1/gems/thin-1.5.1/bin/thin
SCRIPT_NAME=/etc/init.d/thin
CONFIG_PATH=/etc/thin/redmine.yml
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
case "$1" in
start)
$DAEMON start -C $CONFIG_PATH
;;
stop)
$DAEMON stop -C $CONFIG_PATH
;;
restart|force-reload|reload)
$DAEMON restart -C $CONFIG_PATH
;;
*)
echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
exit 3
;;
esac
І надаємо йому права на запуск:
# chmod ug+x /etc/init.d/thin
4. Переходимо до налаштування веб-серверу Nginx, який виступатиме фронтендом. Встановлюємо, якщо цього ще не було зроблено.
5. Створюємо віртуалхост. Nginx взаємодіятиме із Thin-сервером за допогою локального сокета thin.0.sock:
# vim /etc/nginx/sites-available/redmine.conf
upstream redmine_thin_servers {
server unix:/var/run/redmine/sockets/thin.0.sock;
}
server {
listen 80; ## listen for ipv4
server_name myredmine.com;
server_name_in_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
location / {
root /var/www/redmine-2.3.3/;
error_page 404 404.html;
error_page 500 502 503 504 500.html;
try_files $uri/index.html $uri.html $uri @redmine_thin_servers;
}
location @redmine_thin_servers {
proxy_pass http://redmine_thin_servers;
}
}
За необхідності також можна створити секцію https.
Активуємо віртуалхост, створивши лінку:
# ln -s /etc/nginx/sites-available/redmine.conf /etc/nginx/sites-enabled/redmine.conf
6. Додаємо тестовий доменейм в /etc/hosts:
# vim /etc/hosts
...
10.224.53.135 myredmine.com
...
7. Запускаємо thin, (пере)запускаємо nginx:
# /etc/init.d/thin start
# ps aux | grep thin
root 28839 5.8 1.1 315868 89944 ? Sl 07:07 0:02 thin server (/var/run/redmine/sockets/thin.0.sock)
# /etc/init.d/nginx start
Читаємо логи, коли щось пішло не за планом.
Трохи власних скріншотів під кінець:
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Nginx_to_run_Redmine
http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Apache_to_run_Redmine
http://doomatel.web-profile.org/entries/show/razvertyivanie-debian--redmine--nginx--postgresql/
http://patttern.blogspot.ie/2012/06/redmine-centos-62-1.html
http://wiki.nginx.org/Redmine
Немає коментарів:
Дописати коментар