Ruby

Установка и настройка Ruby on Rails

Сначала необходимо подключится к аккаунту по протоколу SSH.

Если Вы пользуетесь OS Windows, то, скорее всего, Вам подойдет SSH-клиент Putty (статью по настройке можно прочитать здесь). Когда настроите - можно переходить на шаг 2.

Если Вы пользуетесь OS Linux или OS X, то подойдет обычный терминал, который присутствует во всех Unix-подобных операционных системах. Подключиться можно такой командой:

$ ssh username@servername.beget.com

Где username - логин, servername.beget.com - имя сервера, на котором располагается аккаунт. При подключении необходимо будет ввести пароль от аккаунта. Например:

denia@begetsupp:~$ ssh erveeebbet@osiris.beget.com
The authenticity of host 'osiris.beget.com (5.101.157.37)' can't be established.
ECDSA key fingerprint is e2:fb:d8:7d:fc:12:8f:6e:c3:24:b5:ce:46:da:ff:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'osiris.beget.com,5.101.157.37' (ECDSA) to the list of known hosts.
erveeebbet@osiris.beget.com's password:

 Welcome to LTD BeGet server 'osiris'
Last login: Wed Jul 22 03:26:57 2015 from 80.79.241.142

erveeebbet@osiris:~ [0] $ 

Далее нужно перейти в специальный виртуальный контейнер на сервере(Docker, подробнее можно ознакомится по ссылке Общие сведения по установке приложений (виртуальное окружение Docker) ). Для этого следует использовать следующую команду:

erveeebbet@osiris:~ [0] $ ssh localhost -p222

Затем ввести пароль. Он такой же, как и для доступа к аккаунту.

erveeebbet@localhost's password:
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 4.0.4-3-beget-acl x86_64)

 * Documentation:  https://help.ubuntu.com/
(docker) erveeebbet@osiris:~ [0] $ 

Необходимо настроить общий доступ к каталогу .gem средствами Файлового менеджера. Инструкция о том, как это сделать, есть в данной статье.


Вернёмся в консоль и продолжим настройку Ruby.
Для того, чтобы выбрать нужную версию Ruby, необходимо выполнить следующую команду:

(docker) erveeebbet@osiris:~ [0] $ chruby
   ruby-1.8
   ruby-1.8.7-p375
   ruby-1.9
   ruby-1.9.3-p551
   ruby-2.0
   ruby-2.0.0-p598
   ruby-2.1
   ruby-2.1.5
   ruby-2.2
   ruby-2.2.0

В этом руководстве будем использовать последнюю на текущий момент версию. Для этого нужно выполнить такую команду:

(docker) erveeebbet@osiris:~ [0] $ chruby ruby-2.2

Проверка, что нужная версия Ruby выбрана - напротив нее будет символ *:

(docker) erveeebbet@osiris:~ [0] $ chruby
   ruby-1.8
   ruby-1.8.7-p375
   ruby-1.9
   ruby-1.9.3-p551
   ruby-2.0
   ruby-2.0.0-p598
   ruby-2.1
   ruby-2.1.5
 * ruby-2.2
   ruby-2.2.0

Сейчас уже можно устанавливать Rails. Скачать гем Rails нужно следующим способом:

(docker) erveeebbet@osiris:~ [0] $ gem install rails --no-rdoc --no-ri
Fetching: activesupport-4.2.3.gem (100%)
Successfully installed activesupport-4.2.3
Fetching: actionview-4.2.3.gem (100%)
Successfully installed actionview-4.2.3
Fetching: actionpack-4.2.3.gem (100%)
Successfully installed actionpack-4.2.3
Fetching: railties-4.2.3.gem (100%)
Successfully installed railties-4.2.3
Fetching: activejob-4.2.3.gem (100%)
Successfully installed activejob-4.2.3
Fetching: actionmailer-4.2.3.gem (100%)
Successfully installed actionmailer-4.2.3
Fetching: activemodel-4.2.3.gem (100%)
Successfully installed activemodel-4.2.3
Fetching: activerecord-4.2.3.gem (100%)
Successfully installed activerecord-4.2.3
Fetching: rails-4.2.3.gem (100%)
Successfully installed rails-4.2.3
9 gems installed

Затем нужно создать новый проект, в качестве названия проекта в рассматриваемом примере указано имя каталога:

    (docker) erveeebbet@osiris:~ [0] $ rails new erveeebbet.bget.ru
 exist
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  app/mailers/.keep

После чего перейти в каталог проекта:

    (docker) erveeebbet@osiris:~ [0] $ cd erveeebbet.bget.ru/

И создать символическую ссылку на каталог в корне сайта .gem для корректного доступа к гемам:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ ln -s ~/.gem

Для корректной отдачи статического контента средствами Nginx создается симлинк на public_html:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ ln -s public public_html

Для того, чтобы гем rb-readline корректно работал, нужно добавить строку в файл Gemfile:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ echo "gem 'rb-readline'" >> Gemfile
    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ echo "gem 'i18n'" >> Gemfile
    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ echo "gem 'therubyracer'" >> Gemfile
    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ rm Gemfile.lock

Затем необходимо будет в файл .htaccess вписать следующие строки:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ echo -e "PassengerRuby $(which ruby)\nPassengerUploadBufferDir `pwd`/tmp" > .htaccess
SetENV GEM_HOME /home/e/erveeebbet/.gem/ruby/2.2:/opt/rubies/ruby-2.2/lib/ruby/gems/2.2
SetENV GEM_PATH /home/e/erveeebbet/.gem/ruby/2.2:/opt/rubies/ruby-2.2/lib/ruby/gems/2.2

Где /home/e/erveeebbet/ - домашний каталог, например у пользователя user11 он будет /home/u/user11/

Относительно версии ruby 1.9.3-p551 файл бдет выглядеть так:

SetENV GEM_HOME /home/e/erveeebbet/.gem/ruby/1.9.3:/opt/rubies/ruby-1.9/lib/ruby/gems/1.9.1
SetENV GEM_PATH /home/e/erveeebbet/.gem/ruby/1.9.3:/opt/rubies/ruby-1.9/lib/ruby/gems/1.9.1

Для установки всех нужных гемов нужно использовать команду bundle install:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ bundle install
Resolving dependencies...
Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.8.0
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 4.2.3
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2
Using nokogiri 1.6.6.2
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.6
Using loofah 2.0.2
Using rails-html-sanitizer 1.0.2
Using actionview 4.2.3
Using rack 1.6.4
Using rack-test 0.6.3
Using actionpack 4.2.3
Using globalid 0.3.6
Using activejob 4.2.3
Using mime-types 2.6.1
Using mail 2.6.3
Using actionmailer 4.2.3
Using activemodel 4.2.3
Using arel 6.0.3
Using activerecord 4.2.3
Using debug_inspector 0.0.2
Using binding_of_caller 0.7.2
Using bundler 1.8.3
Using columnize 0.9.0
Using byebug 5.0.0
Using coffee-script-source 1.9.1.1
Using execjs 2.5.2
Using coffee-script 2.4.1
Using thor 0.19.1
Using railties 4.2.3
Using coffee-rails 4.1.0
Using multi_json 1.11.2
Using jbuilder 2.3.1
Using jquery-rails 4.0.4
Using sprockets 3.3.0
Using sprockets-rails 2.3.2
Using rails 4.2.3
Using rb-readline 0.5.2
Using rdoc 4.2.0
Using sass 3.4.16
Using tilt 1.4.1
Using sass-rails 5.0.3
Using sdoc 0.4.1
Using spring 1.3.6
Using sqlite3 1.3.10
Using turbolinks 2.5.3
Using uglifier 2.7.1
Using web-console 2.2.1
Bundle complete! 13 Gemfile dependencies, 55 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

Для того, чтобы Passenger переприменил конфиг, необходимо создать файл tmp/restart.txt:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ touch tmp/restart.txt

Проверка работоспособности сайта средствами браузера:


Первоначальная настройка Redmine

Redmine - это инструмент для управления проектами и отслеживания ошибок. Распространяется по лицензии GNU GPL. Использует Ruby on Rails.

Для установки Redmine сначала необходимо будет зайти в Docker и "установить" окружение Ruby (описано выше).

(docker) erveeebbet@osiris:~ [0] $ chruby ruby-2.2

Затем нужно перейти в каталог с сайтом:

    (docker) erveeebbet@osiris:~ [0] $ cd redmine.ru/

И скачать дистрибутив Redmine:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ wget http://www.redmine.org/releases/redmine-3.0.3.tar.gz
--2015-08-18 11:49:47--  http://www.redmine.org/releases/redmine-3.0.3.tar.gz
Resolving www.redmine.org (www.redmine.org)... 46.4.36.71
Connecting to www.redmine.org (www.redmine.org)|46.4.36.71|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2157425 (2,1M) [application/x-gzip]
Saving to: `redmine-3.0.3.tar.gz'

100%[=============================================================================================================>] 2 157 425   2,68M/s   in 0,8s

2015-08-18 11:49:48 (2,68 MB/s) - `redmine-3.0.3.tar.gz' saved [2157425/2157425]

После чего распаковть скачанный архив:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ tar xvzf redmine-3.0.3.tar.gz

И переместить распакованные файлы в каталог сайта:

(docker) erveeebbet@osiris:~/redmine.ru [0] $ mv redmine-3.0.3/* .

Затем можно удалить скачанный архив и каталог, куда он был распакован:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ rm -rf redmine-3.0.3*

И создать символическую ссылку на каталог в корне сайта .gem для корректного доступа к гемам:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ ln -s ~/.gem

Напомним, что самому каталогу ~/.gem нужно будет предоставить общий доступ. Это описывалось уже в данной статье выше.

Для корректной отдачи статического контента средствами Nginx создается симлинк на public_html:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ ln -s public public_html

Для работы Redmine необходимо создать базу данных, подробнее здесь.

Затем необходимо указать актуальные данные для подключения к базе данных в файле config/database.yml.example, например, с помощью редактора nano:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ nano config/database.yml.example

Изменить нужно только абзац production:

    production:
  adapter: mysql2
  database: erveeebbet_test
  host: localhost
  username: erveeebbet_test
  password: "AX@8lBCy"
  encoding: utf8

Где database - имя базы данных, username - имя пользвателя (оно такое же, как имя базы данных), password - пароль для доступа к базе (указывается обязательно в двойных кавычках).

После правки нужно переименовать конфигурационный файл:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ cp config/database.yml.example config/database.yml

После чего создать каталоги для статического контента:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ mkdir -p tmp tmp/pdf public/plugin_assets

Затем необходимо добавить в .htaccess настройки для работы Redmine:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ echo -e "PassengerRuby $(which ruby)\nPassengerUploadBufferDir `pwd`/tmp" > .htaccess

Также в .htaccess добавляем строки, задающие переменные окружения

SetENV GEM_HOME /home/e/erveeebbet/.gem/ruby/2.2:/opt/rubies/ruby-2.2/lib/ruby/gems/2.2
SetENV GEM_PATH /home/e/erveeebbet/.gem/ruby/2.2:/opt/rubies/ruby-2.2/lib/ruby/gems/2.2

Делаем bundle install

erveeebbet@osiris:~/redmine.ru [0] $ rm Gemfile.lock
erveeebbet@osiris:~/redmine.ru [0] $ bundle install --without development test

Генерируем секретный ключ, используемый Rails для шифрования хранилища, содержащего данные сессий, тем самым предотвращая их фальсификацию

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ rake generate_secret_token

После чего создаём структуру базы данных:

    (docker) erveeebbet@osiris:~/redmine.ru [0] $ RAILS_ENV=production rake db:migrate

И загружаем в базу данных значения по умолчанию:

    (docker) erveeebbet@osiris:~/redmine.ru [0] RAILS_ENV=production REDMINE_LANG=en rake redmine:load_default_data

Для того, чтобы Passenger переприменил конфиг, необходимо создать файл tmp/restart.txt:

    (docker) erveeebbet@osiris:~/erveeebbet.bget.ru [0] $ touch tmp/restart.txt

Проверка работоспособности сайта средствами браузера:

По умолчанию для доступа к административной части сайта используются следующие данные:

    логин: admin
    пароль: admin




Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".