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

linux на сервереУстановка 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.

  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/ как советовали в комментариях к этому багу.

  6. 2012-12-11 15:05:40 | #

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