Коротка відповідь: застосунок Ruby (Rack, Sinatra, Ruby on Rails) у Plesk запускає розширення Ruby, а процес обслуговує Phusion Passenger. Ви обираєте версію Ruby та каталог застосунку з файлом config.ru. Публічним каталогом обов'язково має бути його підкаталог public. Залежності встановлюєте з Gemfile кнопкою Bundle install, а перезапуск робите з панелі або файлом tmp/restart.txt. Нижче — покрокова інструкція, мінімальний застосунок і проблеми, типові для хостингу з ізоляцією акаунтів.
Як Plesk запускає застосунок Ruby
Розширення Ruby використовує Phusion Passenger — той самий сервер застосунків, що й Node.js Toolkit. Passenger шукає в каталозі застосунку файл config.ru (стандарт Rack) і при першому запиті запускає процес. Кожен домен може мати власну версію Ruby, яку Plesk обирає через rbenv (у каталозі застосунку з'являється файл .ruby-version).
Ви не встановлюєте Ruby самостійно — версії надає адміністратор сервера. Вам також не потрібні права root: усе, що описано нижче, виконується на рівні користувача підписки.
Структура каталогів
Passenger вважає каталогом застосунку батьківський каталог відносно публічного каталогу. Найпростіше створити субдомен, наприклад app.twojafirma.pl, з каталогом документів app/public:
app/
├── config.ru # punkt startowy Rack
├── Gemfile
├── Gemfile.lock
├── .ruby-version # tworzy Plesk
├── public/ # katalog dokumentów domeny (pliki statyczne)
└── tmp/
└── restart.txt # dotknięcie = restart aplikacji
Конфігураційні файли та залежності лежать поза public, тож завантажити їх через браузер неможливо.
Мінімальний застосунок: config.ru і Gemfile
app/config.ru — застосунок Rack без фреймворка:
require "json"
run lambda { |env|
body = { ok: true, ruby: RUBY_VERSION, path: env["PATH_INFO"] }.to_json
[200, { "content-type" => "application/json" }, [body]]
}
app/Gemfile:
source "https://rubygems.org"
gem "rack", "~> 3.1"
# gem "sinatra", "~> 4.1" # jeśli wolisz Sinatrę
Версія із Sinatra у config.ru:
require "sinatra/base"
class App < Sinatra::Base
get("/") { "Działa: Ruby #{RUBY_VERSION}" }
end
run App
Увімкнення Ruby в панелі
- Відкрийте домен або субдомен у розділі Сайти та домени і виберіть Ruby.
- Натисніть Увімкнути Ruby і виберіть версію — для нових проєктів найкраще найновішу доступну.
- Перевірте, чи каталог документів вказує на
…/public, а каталог застосунку — на його батьківський каталог. - Встановіть режим застосунку (production) і, за потреби, змінні середовища.
- Натисніть Bundle install, а потім Restart App.
Якщо в public лежить типовий index.html, створений разом із субдоменом, видаліть його — інакше вебсервер показуватиме його замість застосунку. Нова конфігурація починає діяти після перезавантаження вебсервера (у DoSieci — до 30 хвилин).
Геми і Bundler
Bundle install встановлює геми з Gemfile для обраної версії Ruby. За наявності доступу SSH те саме можна зробити з консолі — геми найкраще тримати в каталозі проєкту, щоб вони не змішувалися між застосунками:
cd ~/app
bundle config set --local path vendor/bundle
bundle config set --local without "development test"
bundle install
bundle exec ruby -e 'require "rack"; puts Rack.release'
Файл Gemfile.lock комітьте в репозиторій — тоді на сервері встановляться саме ті версії, які ви тестували локально.
Нативні геми та інструменти збірки
Частина популярних гемів містить код на C і компілюється під час встановлення: nokogiri (старіші версії), pg, mysql2, bcrypt, puma. Для цього потрібні компілятор і бібліотеки заголовків. На спільному хостингу з ізоляцією акаунтів (CageFS) компілятор зазвичай недоступний користувачу, і встановлення завершується помилкою:
make: gcc: No such file or directory
Що можна зробити:
- обрати версію гема з готовими бінарниками для Linux (наприклад, новіший
nokogiriвстановлюється як platform-гем, без компіляції); - замінити гем аналогом на чистому Ruby, якщо такий існує;
- попросити підтримку хостингу зібрати гем для вашого застосунку.
Ruby on Rails
Rails у Plesk працює так само, як будь-який застосунок Rack: публічним каталогом є public проєкту, а config.ru генерує сам Rails. Перед запуском встановіть RAILS_ENV=production і SECRET_KEY_BASE у змінних середовища, виконайте міграції та зберіть ресурси:
bundle exec rails db:migrate
bundle exec rails assets:precompile
Rails залежить від кількох нативних гемів (адаптер бази даних, bcrypt, часто nokogiri). Тому перед розгортанням перевірте, чи їх можна встановити на вашому хостингу — це найпоширеніша перешкода для Rails на спільному хостингу. Rails ще не запускався на нашому тестовому сервері.
Змінні, перезапуск і логи
- Змінні середовища (паролі,
DATABASE_URL) вкажіть у панелі Ruby або у файлі поза публічним каталогом. Приклад підключення до PostgreSQL знайдете в статті про базу PostgreSQL у Plesk. - Перезапуск: Restart App у панелі або
touch tmp/restart.txtу каталозі застосунку. - Логи: помилки запуску Passenger показує на сторінці помилки та записує в логах домену; логи Rails — у
log/production.log. - Права доступу: файли застосунку мають належати користувачу підписки — при завантаженні через FTP/SFTP це відбувається автоматично.
Найпоширеніші проблеми
- «rbenv: version `3.x' is not installed» у консолі SSH — версія, обрана в панелі, не видна в середовищі акаунту. Використайте шлях, наданий підтримкою хостингу, або запускайте команди через панель (Bundle install).
- Типова сторінка замість застосунку — у
publicєindex.html. - «Could not find gem … in locally installed gems» — не виконано
bundle installдля тієї самої версії Ruby, яку обрано в панелі. - Помилка компіляції гема (gcc, make) — нативний гем; див. розділ вище.
- «The application process exited prematurely» — помилка під час запуску застосунку (деталі в лозі) або проблема з конфігурацією Passenger на боці сервера.
- Зміни не видно — перезапустіть застосунок; нова конфігурація домену вимагає перезавантаження вебсервера.
FAQ
Чи можу я встановити власну версію Ruby?
На спільному хостингу — ні: версії Ruby встановлює адміністратор сервера і надає їх усім акаунтам. Ви обираєте одну з доступних у панелі.
Sinatra чи Rails на хостингу?
Sinatra і чистий Rack мають мало нативних залежностей, тож їх легше запустити. Rails потребує більше гемів, що компілюються, і ресурсів, тож спершу перевірте, чи хостинг їх підтримує.
Як перезапустити застосунок без панелі?
Створіть або оновіть файл tmp/restart.txt у каталозі застосунку.
Де встановлювати геми?
Найкраще локально в проєкті (bundle config set --local path vendor/bundle), щоб кожен застосунок мав свій власний набір.
Технічна перевірка: 17.09.2026, Plesk Obsidian 18.0.80, розширення Ruby 1.6, Ruby 3.3.10 (Bundler 2.5), Passenger 6.1, CloudLinux з CageFS. Пов'язані статті: застосунок Node.js у Plesk, PostgreSQL у Plesk, Docker і Docker Compose у Plesk. Пакети: хостинг NVMe (Business) і NVMe Performance і Pro.
