Redmine - это довольно популярная в последнее время платформа для управления проектами и отслеживания ошибок. По идее, его установка - стандартная процедура, но мне, как совершенно незнакомому с Ruby и тонкостями установки Ruby софта пришлось повозиться.
Кроме того, в большинстве инструкций описывается использование Apache в качестве веб-сервера. У меня для этой цели будет использован Nginx
Подготовка системы
Для начала установим минимально необходимые для работы Ruby пакеты
sudo apt-get install ruby rubygems ruby1.8-dev libgemplugin-ruby libgemplugin-ruby1.8 libruby-extras libruby1.8-extras rubygems1.8 libsqlite3-ruby libopenssl-ruby
Пакеты ruby, ruby1.8-dev, libruby-extras, libruby1.8-extras нужны для работы самого руби, rubygemslib, gemplugin-ruby, libgemplugin-ruby1.8, rubygems1.8 нужны для установки Ruby библиотек из самого руби (эт такой руби-пакетный менеджер), libopenssl-ruby - для SSL, libsqlite3-ruby - для работы с sqlite3 базой данных. Хочу заметить, что это НЕОБХОДИМЫЙ МИНИМУМ пакетов.
Далее устанавливаем необходимые для работы Redmine Ruby - библиотеки через встроенный пакетный менеджер gem
sudo gem install -v=2.3.5 rails sudo gem install i18n sudo gem install mysql mongrel mongrel_cluster
mysql - C-библиотека для работы с MySQL базой данных (см UPD), rails - знаменитые RubyOnRails (таблица совместимости различных версий redmine с версиями rails есть тут), mongrel и mongrel_cluster - родной веб-сервер для Ruby веб-приложений, i18n - библиотека для перевода интерфейса.
Создание учетных записей
В принципе, этот шаг можно пропустить и использовать существующего пользователя, например www-data, но я крайне рекомендую все-же не полениться и, ради безопасности, проделать и эту часть инструкции.
Создаем нового пользователя с домашней директорией /home/redmine , и именем redmine
sudo useradd -d /home/redmine -m -s /bin/bash redmine ; sudo passwd redmine
После ввода этой команды придумайте пароль для нового пользователя и введите его в появившемся запросе.
Переключаемся на созданного пользователя
sudo su redmine ; cd ~
.
Загрузка и настройка Redmine
Если у вас есть GIT, то
git clone git://github.com/edavis10/redmine.git
Если нет:
svn co http://redmine.rubyforge.org/svn/trunk redmine
Можно в общем-то и tarball скачать тут http://rubyforge.org/frs/?group_id=1850:
wget http://rubyforge.org/frs/download.php/75097/redmine-1.2.1.tar.gz tar -xzf redmine-1.2.1.tar.gz
Перемещаем полученные файлы в корень домашней директории и подчищаем мусор
mv redmine/* . ; rm -r redmine
Теперь нужно настроить соединение Redmine с базой данных... Redmine поддерживает работу с базами данных sqlite, mysql и postgre-sql. MySQL у меня на сервере есть, но его версия 5.1. Проблема в том, что текущая версия Ruby библиотеки не поддерживает работу с версией 5.1 сервера MySQL, поэтому я решил использовать sqlite3 базу данных. Так вот, копируем пример конфиг-файла
cp config/database.yml.example config/database.yml
И редактируем этот конфиг
nano config/database.yml
Меняем строки production на что-то вроде backup_production а строку test_sqlite3 на production, сохраняем. Т.е. вся база данных будет храниться в sqlite3 файле db/test.db (создастся автоматически)
После создаем некое рандомное значение, необходимое для кодирования Cookies
rake config/initializers/session_store.rb
Генерируем структуру базы данных
rake db:migrate RAILS_ENV="production"
Загружаем и импортируем в базу данных стандартные данные
RAILS_ENV=production rake redmine:load_default_data
Выставляем необходимые права доступа
mkdir tmp public/plugin_assets sudo chown -R redmine:redmine files log tmp public/plugin_assets sudo chmod -R 755 files log tmp public/plugin_assets
В принципе, теперь можно попробовать запустить:
ruby script/server webrick -e production
При этом запустится простенький веб-сервер по адресу http://localhost:3000/ Можно открыть в браузере, зайти под учеткой admin/admin, сменить пароль на нормальный. Для остановки сервера жмем Ctrl+C. Если хотите использовать redmine локально - на этом можно остановиться, а для совместной работы через интернет нужно настроить веб-сервер для работы с Ruby и Redmine. Как это сделать - см во 2-й части
UPD: для использования Redmine с базой данных MySQL необходимо установить драйвер MySQL для Ruby т.к. без этого будет выскакивать сообщение "!!! The bundled mysql.rb driver has been removed from Ruby 2.2". Т.е. выполняем
sudo gem install mysql
Если при этом у вас появляется сообщение об ошибке типа
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension./usr/bin/ruby1.8 extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
...........
*** extconf.rb failed ***
То нужно немного настроить окружение:
sudo apt-get install build-essential libmysqlclient-dev
Возможно понадобится libmysql-cil-dev пакет. После этого повторяем sudo gem install mysql и спокойненько пользуемся MySQL в качестве БД для Redmine.
[...] Установка Redmine на Ubuntu 9.10 под Nginx 14 [...]
[...] целиком подошла вот эта инструкция по установке: Установка Redmine на Ubuntu 9.10 под Nginx с небольшими оговорками, базу я все таки в отличии от [...]
Разобрался таки, с запуском в бэкграунд:
ruby script/server webrick -d -e production+ скрипт для запуска#!/bin/bash
# здесь должен быть путь к месту установки redmine
cd /var/www/redmine
SCRIPT="ruby script/server webrick -d -e production"
RETVAL=0
case "$1" in
start)
$SCRIPT
RETVAL=$?
;;
stop)
killall -9 ruby
RETVAL=$?
;;
restart)
killall -9 ruby
$SCRIPT
RETVAL=$?
;;
*)
echo "Usage: /etc/inid.d/redmine {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
Спасибо)Пришлось конечно поплясать, но Redmine завёлся)
Рад что помогло.
Есть момент, что статья старая, так что версии приложений уже заметно подросли а часть информации могла стать неактуальной…
Доброго времени суток, огромное спасибо за подробную инструкцию. После установки не мог войти в аккаунт по умолчанию. В логах нашел эту ошибку:
«Error calling Dispatcher.dispatch #»
Лечение:
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/cgi.rb @@ -104,8 +104,13 @@ cookie.each {|c| to['Set-Cookie'] = c.to_s } when Hash cookie.each_value {|c| to['Set-Cookie'] = c.to_s} + when String + cookies = cookie.split(/\n+/) + cookies.each do |c| + to['Set-Cookie'] = c + end else - to['Set-Cookie'] = options['cookie'].to_s + to['Set-Cookie'] = cookie.to_s end @head.delete('cookie')да, тоже сталкивался недавно, это проявляется для определенных версий рельсов и mongrel.
Есть тикет в редмайне http://www.redmine.org/issues/7688 — мне удалось решить засовыванием https://gist.github.com/826692 в config/initializers/ как советовали в комментариях к этому багу.