Перейти до вмісту
КонтактПоштаПанель клієнта

Хостинг і сервер

Як запустити застосунок Ruby у Plesk?

Коротка відповідь: застосунок 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 в панелі

  1. Відкрийте домен або субдомен у розділі Сайти та домени і виберіть Ruby.
  2. Натисніть Увімкнути Ruby і виберіть версію — для нових проєктів найкраще найновішу доступну.
  3. Перевірте, чи каталог документів вказує на …/public, а каталог застосунку — на його батьківський каталог.
  4. Встановіть режим застосунку (production) і, за потреби, змінні середовища.
  5. Натисніть 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.