В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.
1. Работа с ruby
2. Установка зависимостей
3. Работа с готовым Ruby on Rails приложением на примере redmine
Если вы планируете перенести готовый проект на Ruby на хостинг, то основная особенность облачного хостинга заключается в том, что вашему сайту потребуется прикрепиться на IP и порт, указанные в переменных окружения APP_IP и APP_PORT.
Для этого достаточно создать файл имясайта/app/config.rb
со следующим содержимым (содержимое
изменять не требуется):
app_dir = ENV["APP_PATH"]
app_port = ENV["APP_PORT"]
app_ip = ENV["APP_IP"]
working_directory app_dir
# Set unicorn options
worker_processes 4
preload_app true
timeout 30
# Set up socket location
listen "#{app_ip}:#{app_port}"
Такой config.rb
будет автоматически использоваться вебсервером unicorn
.
При создании сайта необходимо выбрать, что сайт работает на Ruby on Rails:
Загрузить файлы сайта можно подключившись по SFTP.
Файлы вашего приложения можно расположить в каталоге sitename/app
, а статические файлы
(.html, .css, .jpg, .png и другие) - в каталоге sitename/www
.
Управлять проектом можно подключившись по SSH.
После входа на сервер по SSH можно, например, установить необходимые для работы вашего сайта пакеты.
Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное виртуальное окружение создавать не требуется.
При установке пакетов через bundle install
сначала перейдите в каталог с сайтом и виртуальное
окружение активируется автоматически:
@h2:~$
c3087@h2:~$ cd mydomain-ror.com/app
(ruby 2.5)c3087@h2:~/mydomain-ror.com/app$
Если в каталоге mydomain-ror.com/app
существует файл Gemfile
, то можно автоматически
установить нужные расширения:
(ruby 2.5)c3087@h2:~/mydomain-ror.com/app$ bundle install
В качестве примера установки Rails приложения развернем redmine из git репозитория на github.
При создании сайта необходимо выбрать, что сайт работает на Ruby on rails:
Удалите содержимое тестового сайта:
rm -rf имя_сайта/app
Далее перейдите в каталог с сайтом:
cd имя_сайта
Клонируйте репозиторий redmine в каталог app
git clone https://github.com/redmine/redmine.git app
Настройте подключение к базе данных MySQL.
Перейдите в каталог app/config:
cd app/config
Переименуйте файл database.yml.example
в database.yml
mv database.yml.example database.yml
Теперь нам потребуются реквизиты для подключения к MySQL.
Узнать мы их можем из переменной окружения DB_CONNECTION_STRING
(ruby 2.5)c3087@h2:~/mydomain-ror.com/app$ echo $DB_CONNECTION_STRING
mysql2://c3087_mydomain_ru:phaeC0otee2oomi@localhost/c3087_mydomain_ru
Здесь все нужные нам данные в формате mysql2://имяпользователя:пароль@сервер/имябазы
Отредактируйте database.yml
:
mcedit database.yml
И внесите в него полученные данные
production:
adapter: mysql2
database: c3087_mydomain_ru
host: localhost
username: c3087_mydomain_ru
password: "phaeC0otee2oomi"
encoding: utf8
Для сохранения нажмите на клавиатуре F2.
Перейдите в каталог выше:
cd ..
Создайте файл config.rb
mcedit config.rb
И заполните его следующим содержимым (содержимое изменять не требуется):
app_dir = ENV["APP_PATH"]
app_port = ENV["APP_PORT"]
app_ip = ENV["APP_IP"]
working_directory app_dir
# Set unicorn options
worker_processes 4
preload_app true
timeout 30
# Set up socket location
listen "#{app_ip}:#{app_port}"
Для сохранения нажмите на клавиатуре F2.
Установите зависимости:
bundle install
Далее выполните последовательно выполните 3 команды, необходимые для завершения установки redmine
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
Перезапустите Ruby
Готово!