Блог - Linux, программирование, Я!

linux на сервереУстановка Redmine на Ubuntu под Nginx

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.

  1. 2010-01-14 05:10:06 | #

    [...] Установка Redmine на Ubuntu 9.10 под Nginx 14 [...]

  2. 2010-03-21 12:17:04 | #

    [...] целиком подошла вот эта инструкция по установке: Установка Redmine на Ubuntu 9.10 под Nginx с небольшими оговорками, базу я все таки в отличии от [...]

  3. 2010-03-22 23:36:39 | #

    Разобрался таки, с запуском в бэкграунд:
    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

  4. 2011-03-26 17:59:58 | #

    Спасибо)Пришлось конечно поплясать, но Redmine завёлся)

    • 2011-03-26 18:59:44 | #

      Рад что помогло.

      Есть момент, что статья старая, так что версии приложений уже заметно подросли а часть информации могла стать неактуальной…

  5. KosMax
    2011-09-06 01:39:31 | #

    Доброго времени суток, огромное спасибо за подробную инструкцию. После установки не мог войти в аккаунт по умолчанию. В логах нашел эту ошибку:
    «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')
                      
    • 2011-09-06 02:46:08 | #

      да, тоже сталкивался недавно, это проявляется для определенных версий рельсов и mongrel.
      Есть тикет в редмайне http://www.redmine.org/issues/7688 — мне удалось решить засовыванием https://gist.github.com/826692 в config/initializers/ как советовали в комментариях к этому багу.