25 июня 2010 г.

Установка redmine на lighttpd в debian squeeze

Начинаем как здесь:

#apt-get install mysql-server rails lighttpd
#apt-get install librmagick-ruby
#apt-get install libmysql-ruby
#apt-get install subversion git-core
#apt-get install libfcgi-ruby1.8

Создаем пользователя и базу:

# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 63
Server version: 5.1.47-1 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.08 sec)

mysql> create user 'redmine'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.47 sec)

mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Query OK, 0 rows affected (0.01 sec)

Добавляем системного пользователя redmine:

#adduser --disabled-password redmine
#su redmine

Качаем релиз wget'ом redmine (я работал с версией redmine-0.9.4.tar.gz).

Распаковываем содержимое в ~/redmine (tar zxf)

Создаем файл redmine*/config/database.yml (можно скопировать из примера):

production:
adapter: mysql
database: redmine
host: localhost
username: rbuser
password: password
encoding: utf8

Генерируем секретный ключ сессий.

~/redmine$ rake generate_session_store
(in /home/redmine/redmine)

Заполняем базу данных.

~/redmine$ RAILS_ENV=production rake db:migrate
(in /home/redmine/redmine)
rake aborted!
Could not find RubyGem rack (~> 1.0.1)

Я получил такую ошибку.

#gem install rack -v 1.0.1
Successfully installed rack-1.0.1
1 gem installed
Installing ri documentation for rack-1.0.1...
Installing RDoc documentation for rack-1.0.1...

Запускаем повторно из под пользователя redmine:

#su redmine
redmine@srv:/root$ cd ~/redmine/
redmine@srv:~/redmine$ RAILS_ENV=production rake db:migrate
(in /home/redmine/redmine)

Должно все успешно заполниться.

Настройка lighttpd.

Создаем файл /etc/lighttpd/conf-available/20-redmine.conf :

/etc/lighttpd/conf-available# cat 20-redmine.conf
server.modules += ( "mod_fastcgi" )

$HTTP["url"] =~ "^/redmine/" {
alias.url = ("/redmine" => "/home/redmine/redmine/public")
server.document-root = "/home/redmine/redmine/public/"
server.error-handler-404 = "/redmine/dispatch.fcgi"
index-file.names = ("dispatch.fcgi")
fastcgi.server += (
".fcgi" => (
"localhost" => (
"min-procs" => 1,
"max-procs" => 2,
"check-local" => "disable",
"socket" => "/home/redmine/redmine/tmp/sockets/redmine_fcgi.socket" + var.PID,
"bin-path" => "/home/redmine/redmine/public/dispatch.fcgi",
"bin-environment" => (
"RAILS_ENV" => "production",
"RAILS_RELATIVE_URL_ROOT" => "/redmine",
"RAILS_ROOT" => "/home/redmine/redmine"
)
)
)
)
}

Включаем конфигурацию:

#lighttpd-enable-mod redmine

Создаем файл:

srv:/home/redmine/redmine/public# cp dispatch.fcgi.example dispatch.fcgi
srv:/home/redmine/redmine/public# chmod +x dispatch.fcgi

Даем права пользователю www-data (запускает lighttpd)

srv:/home/redmine#chown -R www-data:www-data redmine

Даем права на директории

srv:/home/redmine#chmod 755 logs tmp files

Перезапускаем конфигурации lighttpd:

#/etc/init.d/lighttpd force-reload

Заходим: http://srv/redmine/

По умолчанию, логин admin, пароль admin.

Если что-то пошло не так, смотрим логи:

#tail -F /var/log/lighttpd/access.log /var/log/lighttpd/error.log /home/redmine/redmine/log/production.log

8 комментариев:

  1. Заметил большое использование памяти redmine'ом (стоит на виртуалке с 256 Мб, забил всю память, даже svn info у него не работает - падает с ошибкой выделения памяти, поэтому выдавал ошибку при просмотре хранилища)

    В dispatch.fcgi меняем

    RailsFCGIHandler.process!

    на

    RailsFCGIHandler.process! nil, 10

    уменьшило до 50 Мб оперативной и 200 Мб свапа.

    вообще я так понял это общая проблема для Ruby On Rails приложений.

    ОтветитьУдалить
  2. Кстати вот dispatch cgi для debian ( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=585976) :

    require File.dirname(__FILE__) + "/../config/environment"
    require 'fcgi_handler'
    if ENV['RAILS_LOG']
    RailsFCGIHandler.process! File.join(ENV['RAILS_LOG'], 'fastcgi.crash.log')
    else
    RailsFCGIHandler.process!
    end

    Все равно кушает 80 Мб в режиме ожидания, очень много для виртуалки с 256 Мб.

    ОтветитьУдалить
  3. Выставил "max-procs" => 1, по началу кушает 80 Мб один процесс, потом со временем опускается до 1 Мб, при запросе главной страницы поднимается до 30 Мбит. В принципе, жить можно.

    ОтветитьУдалить
  4. Анонимный30 июня 2010 г., 1:43

    сделал конфиг для ssl:

    $SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/site.pem"
    $HTTP["host"] =~ "online.home.net" {
    server.name = "online.home.net"
    alias.url = ()
    server.document-root = "/home/redmine/redmine/public/"
    server.error-handler-404 = "/redmine/dispatch.fcgi"
    index-file.names = ("dispatch.fcgi")
    fastcgi.server = (
    ".fcgi" => (
    "localhost" => (
    "min-procs" => 1,
    "max-procs" => 2,
    "check-local" => "disable",
    "socket" => "/home/redmine/redmine/tmp/sockets/redmine_fcgi.socket" + var.PID,
    "bin-path" => "/home/redmine/redmine/public/dispatch.fcgi",
    "bin-environment" => (
    "RAILS_ENV" => "production",
    "RAILS_RELATIVE_URL_ROOT" => "/redmine",
    "RAILS_ROOT" => "/home/redmine/redmine"
    )
    )
    )
    )
    }


    вываливается с ошибкой: unexpected end-of-file (perhaps the fastcgi process died): pid: 5869 socket: unix:/home/redmine/redmine/tmp/sockets/redmine_fcgi.socket5862-1

    подскажите пожалуйста, где копать?

    ОтветитьУдалить
  5. пакет libfcgi-ruby1.8 стоит? в принципе, не важно ssl или нет, конфиг один, у меня 80 порт редиректится на 443. (если отключить редирект, то работает и на 80 и на 433 с одним конфигом)

    ОтветитьУдалить
  6. А почему не Trac? Он ведь, как и django, на питоне.

    ОтветитьУдалить
  7. Так сложилось :) В то время мне нужна была система, которая поддерживает многопроектность и git.

    ОтветитьУдалить
  8. Спасибо за подсказку. В ответ в вашу копилку полезностей связанных с Redmine рекомендую таймер RMClient. Считаю очень нужная програмка для тех, кто планирует проекты с помощью Redmine. Нашел тут: http://rmclient.org

    ОтветитьУдалить