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

Redmine – это довольно популярная в последнее время платформа для управления проектами и отслеживания ошибок. По идее, его установка – стандартная процедура, но мне, как совершенно незнакомому с Ruby и тонкостями установки Ruby софта пришлось повозиться.

Кроме того, в большинстве инструкций описывается использование Apache в качестве веб-сервера. У меня для этой цели будет использован Nginx

Подготовка системы

Для начала установим минимально необходимые для работы Ruby пакеты

[codesyntax lang=”bash”]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[/codesyntax]

Пакеты 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

[codesyntax lang=”bash”]sudo gem install -v=2.3.5 rails
sudo gem install i18n
sudo gem install mysql mongrel mongrel_cluster[/codesyntax]

mysql – C-библиотека для работы с MySQL базой данных (см UPD), rails – знаменитые RubyOnRails (таблица совместимости различных версий redmine с версиями rails есть тут), mongrel и mongrel_cluster – родной веб-сервер для Ruby веб-приложений, i18n – библиотека для перевода интерфейса.

Создание учетных записей

В принципе, этот шаг можно пропустить и использовать существующего пользователя, например www-data, но я крайне рекомендую все-же не полениться и, ради безопасности, проделать и эту часть инструкции.

Создаем нового пользователя с домашней директорией /home/redmine , и именем redmine

[codesyntax lang=”bash”]sudo useradd -d /home/redmine -m -s /bin/bash redmine ; sudo passwd redmine[/codesyntax]

После ввода этой команды придумайте пароль для нового пользователя и введите его в появившемся запросе.

Переключаемся на созданного пользователя

[codesyntax lang=”bash”]sudo su redmine ; cd ~[/codesyntax]

.

Загрузка и настройка Redmine

Если у вас есть GIT, то

[codesyntax lang=”bash”]git clone git://github.com/edavis10/redmine.git[/codesyntax]

Если нет:

[codesyntax lang=”bash”]svn co http://redmine.rubyforge.org/svn/trunk redmine[/codesyntax]

Можно в общем-то и tarball скачать тут http://rubyforge.org/frs/?group_id=1850:

[codesyntax lang=”bash”]wget http://rubyforge.org/frs/download.php/75097/redmine-1.2.1.tar.gz
tar -xzf redmine-1.2.1.tar.gz[/codesyntax]

Перемещаем полученные файлы в корень домашней директории и подчищаем мусор

[codesyntax lang=”bash”]mv redmine/* . ; rm -r redmine[/codesyntax]

Теперь нужно настроить соединение Redmine с базой данных… Redmine поддерживает работу с базами данных sqlite, mysql и postgre-sql. MySQL у меня на сервере есть, но его версия 5.1. Проблема в том, что текущая версия Ruby библиотеки не поддерживает работу с версией 5.1 сервера MySQL, поэтому я решил использовать sqlite3 базу данных. Так вот, копируем пример конфиг-файла

[codesyntax lang=”bash”]cp config/database.yml.example config/database.yml[/codesyntax]

И редактируем этот конфиг

[codesyntax lang=”bash”]nano config/database.yml[/codesyntax]

Меняем строки production на что-то вроде backup_production а строку test_sqlite3 на production, сохраняем. Т.е. вся база данных будет храниться в sqlite3 файле db/test.db (создастся автоматически)

После создаем некое рандомное значение, необходимое для кодирования Cookies

[codesyntax lang=”bash”]rake config/initializers/session_store.rb[/codesyntax]

Генерируем структуру базы данных

[codesyntax lang=”bash”]rake db:migrate RAILS_ENV="production"[/codesyntax]

Загружаем и импортируем в базу данных стандартные данные

[codesyntax lang=”bash”]RAILS_ENV=production rake redmine:load_default_data[/codesyntax]

Выставляем необходимые права доступа

[codesyntax lang=”bash”]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[/codesyntax]

В принципе, теперь можно попробовать запустить:

[codesyntax lang=”bash”]ruby script/server webrick -e production[/codesyntax]

При этом запустится простенький веб-сервер по адресу 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″. Т.е. выполняем

[codesyntax lang=”bash”]sudo gem install mysql[/codesyntax]

Если при этом у вас появляется сообщение об ошибке типа

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 ***

То нужно немного настроить окружение:

[codesyntax lang=”bash”]sudo apt-get install build-essential libmysqlclient-dev[/codesyntax]

Возможно понадобится libmysql-cil-dev пакет. После этого повторяем sudo gem install mysql и спокойненько пользуемся MySQL в качестве БД для Redmine.

8 thoughts on “Установка Redmine на Ubuntu под Nginx

  1. Pingback: PS » Заметки » Установка Redmine на Ubuntu 9.10 под Nginx часть 2

  2. Pingback: Установка Redmine на Ubuntu » Blog Archive » заметки на полях

  3. k

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

    Reply
    1. P.S. Post author

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

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

      Reply
  4. KosMax

    Доброго времени суток, огромное спасибо за подробную инструкцию. После установки не мог войти в аккаунт по умолчанию. В логах нашел эту ошибку:
    “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')
    Reply
    1. P.S. Post author

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

      Reply
  5. Pingback: Установка Redmine на Ubuntu под Nginx+php-Fpm | Electronic Information Technologies

Leave a Reply to KosMax Cancel reply

Your email address will not be published. Required fields are marked *