Najpierw o pułapkach: bundle nie instaluje się z MariaDB 10, zainstalowałem ponownie wersję 5.5
Przed instalacją MariaDB 5.5 należy usunąć wszystko z /var/lib/mysql
# yum install epel-release # yum install unzip patch ruby freetds-devel ImageMagick-c++-devel mariadb-devel gcc ruby-devel rubygem-json rubygem-psych libyaml
Po tym pobieramy Redmine 3.3.0 i wypakowujemy do wygodnego katalogu.
# wget http://www.redmine.org/releases/redmine-3.3.0.zip # unzip redmine-3.3.0.zip
Przeniesiemy pliki do jednego z przeznaczonych katalogów dla aplikacji webowych i utworzymy konfigurację połączenia z bazą danych:
# mv redmine-3.3.0 /var/www/redmine # cd /var/www/redmine/config # cp database.yml.example database.yml # vim database.yml
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "xxxxx" encoding: utf8
Tworzymy w bazie:
# mysql -p MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8 COLLATE utf8_general_ci; MariaDB [(none)]> grant all privileges on redmine.* to redmine@localhost identified by 'xxxxx'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit
Wróć do katalogu aplikacji i zainstaluj bundler oraz pozostałe gemy.
# cd /var/www/redmine/
# gem install bundler # vim Gemfile gem 'unicorn' # export PATH='/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin' # bundle install --without development test ... Bundle complete! 27 Gemfile dependencies, 46 gems now installed. ...
Dalej zgodnie z instrukcją należy wygenerować klucz tajny, a także wykonać migrację i wypełnić bazę danymi demonstracyjnymi. Przy instalacji zalecam natychmiast wybrać język rosyjski
# rake generate_secret_token # RAILS_ENV=production rake db:migrate # RAILS_ENV=production rake redmine:load_default_data Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ru ==================================== Default configuration data loaded.
Sprawdźmy, czy wszystkie komponenty zostały zainstalowane i czy aplikacja będzie mogła działać. Do tego celu można użyć serwera www webrick, który jest dostarczany z gemem rails.
# rails server webrick -e production -b 192.168.0.10 => Booting WEBrick => Rails 4.2.1 application starting in production on http://192.168.0.10:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2015-06-13 15:24:41] INFO WEBrick 1.3.1 [2015-06-13 15:24:41] INFO ruby 2.2.1 (2015-02-26) [x86_64-linux] [2015-06-13 15:24:41] INFO WEBrick::HTTPServer#start: pid=27426 port=3000
Można wejść pod podany adres i zobaczyć główną stronę Redmine.
Następnie tworzenie konfiguracji dla nowego gema
# vim config/unicorn.rb
worker_processes 1 # Количество процессов: master + 1 дочерний
working_directory "/var/www/redmine/" # Домашний каталог redmine
preload_app true
timeout 30
listen "/var/www/redmine/tmp/sockets/unicorn.sock", :backlog => 64 #путь к unix сокету с которым будет работать nginx
pid "/var/www/redmine/tmp/pids/unicorn.pid" # Место хранения PID-файла
stderr_path "/war/www/redmine/log/unicorn.stderr.log" # файл логов для ошибок
stdout_path "/war/www/redmine/log/unicorn.stdout.log" # файл логов для вывода
before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
I próbujemy uruchomić
# bundle exec unicorn_rails -E production -c config/unicorn.rb -D # ps aux | grep unicorn
Teraz trzeba połączyć unicorn z nginx:
# vim /etc/nginx/conf.d/redmine.conf
upstream redmine {
server unix:/var/www/redmine/tmp/sockets/unicorn.sock;
}
server {
listen 80;
server_name redmine.domain.com.ua;
client_max_body_size 200m;
root /var/www/redmine/;
location / {
try_files $uri @ruby;
}
location ~* \.(jpg|gif|png|js|css|ico)$ {
root /var/www/redmine/public;
expires 7d;
error_page 404 502 504 = @ruby;
}
location @ruby {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_read_timeout 300;
proxy_pass http://redmine; #upstream redmine
}
}
Sprawdzamy konfigurację i stosujemy reguły
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # nginx -s reload
Wejdź na http://redmine.domain.com.ua
