пятница, 30 октября 2015 г.

Установка нескольких версий Redmine с конкретными версиями ruby (nginx + passenger + rvm + Ubuntu 14.04)


Статья недоработана, но в плане справочной уже вполне себе :-)

 

Установка Nginx и Passenger


Установим PGP-ключ:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

Добавим поддержку HTTPS для APT (APT репозиторий Phusion Passenger хранится на HTTPS-сервере):
sudo apt-get install apt-transport-https ca-certificates

Добавим сам репозиторий. В /etc/apt/sources.list.d/passenger.list поместим:
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

Затем установим соответствующие права и обновим списки пакетов:
sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.lis
sudo apt-get update

Установим Nginx и Passenger:
sudo apt-get install nginx-extras passenger

Раскомментируем passenger_root и passenger_ruby в конфиге nginx: /etc/nginx/nginx.conf.

Перезапустим nginx:
sudo service nginx restart
 
Настроим nginx (пример): 
cat /etc/nginx/sites-available/redmine-test 
server {
  listen  8080;
  server_name project-t.centrofinans.ru;
  root /opt/redmine-3.1/public;
  passenger_user www-data;
  passenger_group www-data;
  passenger_enabled on;
  passenger_ruby /usr/local/rvm/gems/ruby-1.9.3-p551/wrappers/ruby;
  allow all;
  client_max_body_size      10m; # Max attachemnt size
}


Установка RVM и Rails


RVM нам нужен по нескольким причинам. Во-первых, велика вероятность, что в репозиториях убунты нету версии Ruby, которую вы используете в своём проекте. Во-вторых, через него удобнее установить Rails (чем через gem install rails), т.к. он подтягивает необходимые пакеты автоматически. В-третьих, если на сервере будет висеть несколько проектов, то вероятно, что они будут использовать разные версии Ruby, и тут нам поможет RVM.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --rails

После установки нужно выйти и зайти в шелл.

P.S. Если где-то в окружении не хватает rvm или rails, выполним "source /usr/local/rvm/scripts/rvm" или пропишем эту строку в profile (~/.profile или для всех /etc/profile).

 Нам нужна версия руби:


$ rvm install 1.9.3
 
Для удобства создадим для каждого проекта свой набор гемов:
$ rvm use 1.9.3
$ rvm gemset create redmine-3.1
 
Для того, чтобы rvm автоматически переключался на нужную версию руби и набор гемов делаем следующее:

$ echo "rvm use 1.9.3@redmine-3.1" > /opt/redmine-3.1/.rvmrc
 
Теперь в консоли при смене каталога проекта будет автоматически подключена нужная версия руби и набор 
гемов для проекта. 


Установка Redmine


cd /opt
svn co http://svn.redmine.org/redmine/branches/3.1-stable redmine-3.1
cd /opt/redmine-3.1
 
 
Чтобы указать необходимую версию Ruby выполним:

rvm use <версия Ruby>
passenger-config --ruby-command

На строке с префиксом "To use in Nginx :" скопируем оставшуюся часть и добавим в соответствующую запись server конфигурации nginx, завершив точкой с запятой (пример выше).



Add following lines
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8
 

Plugins installation

Unarchive plugins to /plugins/ folder
cd /var/data/redmine bundle install

Configuring redmine

Setup redmine folder permissions

cd /var/data/redmine mkdir public/plugin_assets
chown -R www-data:www-data files log tmp public/plugin_assets config.ru chmod -R 755 files log tmp public/plugin_assets

Create database

mysql -u root -p Execute following lines to MySQL
CREATE DATABASE redmine character SET utf8; CREATE user 'redmine'@'localhost' IDENTIFIED BY 'redmine'; GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost'; exit

Migrate database

cd /var/data/redmine bundle exec rake db:migrate bundle exec rake redmine:plugins

Generate session store

bundle exec rake generate_secret_token

Start web server

service nginx start

Restart Redmine

touch /var/data/redmine/tmp/restart.txt
 
 

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.