Подготовка rails-окружения для установки Redmine используя RVM

в 0:41, , рубрики: linux, open source, redmine, ruby on rails, rvm, scripting, метки: , , , ,

Для корректной работы многих rails-приложении требуются конкретные версии состовляющих компонент, таких как версия ruby, версия самого rails, а так же rake, rubygems и т.д. И скорее всего в вашем дистрибутиве Linux (в моём случае это Ubuntu 10.04 LTS Server) версии этих компонент будут отличаться. Можно пойти простым путём — поставить ruby нужной версии из исходных кодов, а всё остальное с помощьью rubygems. Но мы же хотим получить надёжный и воспроизводимый результат, а систему, при этом не превратить в свалку.

Для решения поставленной задачи воспользуемся RVM (Ruby Version Manager). Следующий по тексту скрипт (redmine-1.2-prepare.sh) готовит rails-окружение для установки Redmine версии 1.2 с базой данных в формате sqlite. В качестве web-сервера используется apache2 + passenger. Скрипт создаёт пользователя redmine, устанавливает необходимые пакеты, устанавливает RVM в домашнюю директорию пользователя Redmine и затем там же собирается rails-окружение.

Следом за скриптом пример файла конфигурации для apache2 (redmine.conf) предложенный самим RVM по окончанию установки (от себя добавил только PassengerUser www-data, т.к. по умолчанию используется nobody).

redmine-1.2-prepare.sh

#!/bin/bash -e

# Set common variables
USERNAME=redmine
RUN_WITH_USERNAME="sudo -iu $USERNAME http_proxy=$http_proxy https_proxy=$https_proxy"

# Create user with $USERNAME
id $USERNAME || sudo useradd -m $USERNAME

# Install apache2
sudo apt-get install apache2

# Install RVM and rvm reqirements
sudo apt-get install curl
$RUN_WITH_USERNAME bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
# Install packages suggested by rvm-installer
sudo apt-get install 
	build-essential openssl libreadline6 libreadline6-dev curl 
	git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 
	libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev 
	ncurses-dev automake libtool bison subversion

# Prepare environment for Redmine 1.2
## Set versions
REDMINE_VERSION=1.2
RUBY_VERSION=1.8.7
GEM_VERSION=1.6.2
RAKE_VERSION=0.8.7
RACK_VERSION=1.1.3
I18N_VERSION=0.4.2
RAILS_VERSION=2.3.11
## Install packages necessary to build passenger for apache2
sudo apt-get install libcurl4-gnutls-dev apache2-prefork-dev libapr1-dev libaprutil1-dev
## Prepare
GEM_INSTALL="gem install --no-rdoc --no-ri"
GEM_VERSION_SHORT=${GEM_VERSION//./}
cat << EOF | $RUN_WITH_USERNAME bash -e
	[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" && 
	rvm install $RUBY_VERSION-gems$GEM_VERSION_SHORT && 
	rvm use $RUBY_VERSION-gems$GEM_VERSION_SHORT && 
	rvm rubygems $GEM_VERSION && 
	rvm gemset create redmine$REDMINE_VERSION && 
	rvm use $RUBY_VERSION-gems$GEM_VERSION_SHORT@redmine$REDMINE_VERSION
	## Install necessary gems
	$GEM_INSTALL -v=$RAKE_VERSION rake && 
	$GEM_INSTALL -v=$RACK_VERSION rack && 
	$GEM_INSTALL -v=$I18N_VERSION i18n && 
	$GEM_INSTALL -v=$RAILS_VERSION rails && 
	$GEM_INSTALL sqlite3
	## Install passenger
	$GEM_INSTALL passenger
	## Build passenger
	passenger-install-apache2-module -a
EOF

redmine.conf

<VirtualHost *:80>
	# Passenger
	PassengerUser www-data
	LoadModule passenger_module /home/redmine/.rvm/gems/ruby-1.8.7-p358-gems162@redmine1.2/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
	PassengerRoot /home/redmine/.rvm/gems/ruby-1.8.7-p358-gems162@redmine1.2/gems/passenger-3.0.11
	PassengerRuby /home/redmine/.rvm/wrappers/ruby-1.8.7-p358-gems162@redmine1.2/ruby

	# Public directory
	DocumentRoot /opt/redmine/redmine-1.2/public
	<Directory /opt/redmine/redmine-1.2/public>
		AllowOverride None
		Options -MultiViews
	</Directory>
</VirtualHost>

PS: В скрипте предусмотрена возможность установки используя прокси сервер. Прокси должен быть установлен через переменные окружения http_proxy и https_proxy.

Скрипт проверен в Ubuntu 10.04 LTS Server

Автор: giner

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js