В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться
с вводной статьей.
1. Работа с ruby
2. Установка зависимостей
3. Работа с готовым Ruby on Rails приложением на примере redmine
Если вы планируете перенести готовый проект на Ruby на хостинг, то основная особенность
облачного хостинга заключается в том, что вашему сайту потребуется прикрепиться на IP и порт,
указанные в переменных окружения APP_IP и APP_PORT.
Для этого достаточно создать файл sitename.ru/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.ru/app, а статические файлы
(.html, .css, .jpg, .png и другие) - в каталоге sitename.ru/www.
Управлять проектом можно подключившись по SSH.
После входа на сервер по SSH можно, например, установить необходимые для работы вашего сайта пакеты.
Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное
виртуальное окружение создавать не требуется.
При установке пакетов через bundle install сначала перейдите в каталог с сайтом и виртуальное
окружение активируется автоматически:
c71824@h2:~$ cd sitename.ru/app
(ruby 3.1)c71824@h2:~/sitename.ru/app$
Если в каталоге sitename.ru/app существует файл Gemfile, то можно автоматически
установить нужные расширения:
(ruby 3.1)c71824@h2:~/sitename.ru/app$ bundle install
В качестве примера установки Rails приложения развернем redmine из git репозитория на github.
rm -rf sitename.ru/app
cd sitename.ru
git clone https://github.com/redmine/redmine.git app
cd app/config
mv database.yml.example database.yml
(ruby 3.1)c71824@h2:~/sitename.ru/app$ echo $DB_CONNECTION_STRING
mysql2://c71824_sitename_ru:phaeC0otee2oomi@localhost/c71824_sitename_ru
mcedit database.yml
production:
adapter: mysql2
database: c71824_sitename_ru
host: localhost
username: c71824_sitename_ru
password: "phaeC0otee2oomi"
encoding: utf8
cd ..
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}"
bundle install
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data