Przejdź do treści
PocztaPanel klienta

Hosting i serwer

Jak uruchomić aplikację Ruby w Plesk?

Krótka odpowiedź: aplikację Ruby (Rack, Sinatra, Ruby on Rails) uruchamia w Plesku rozszerzenie Ruby, a proces obsługuje Phusion Passenger. Wybierasz wersję Ruby i katalog aplikacji z plikiem config.ru. Katalogiem publicznym musi być jego podkatalog public. Zależności instalujesz z Gemfile przyciskiem Bundle install, a restart robisz z panelu albo plikiem tmp/restart.txt. Poniżej instrukcja krok po kroku, minimalna aplikacja i problemy typowe dla hostingu z izolacją kont.

Jak Plesk uruchamia aplikację Ruby

Rozszerzenie Ruby korzysta z Phusion Passenger, tego samego serwera aplikacji co Node.js Toolkit. Passenger szuka w katalogu aplikacji pliku config.ru (standard Rack) i przy pierwszym żądaniu uruchamia proces. Każda domena może mieć własną wersję Ruby, którą Plesk wybiera przez rbenv (w katalogu aplikacji pojawia się plik .ruby-version).

Nie instalujesz Ruby samodzielnie — wersje dostarcza administrator serwera. Nie potrzebujesz też uprawnień roota: wszystko, co opisujemy niżej, robi się z poziomu użytkownika subskrypcji.

Struktura katalogów

Passenger uznaje za katalog aplikacji katalog nadrzędny względem katalogu publicznego. Najprościej założyć subdomenę, np. app.twojafirma.pl, z katalogiem dokumentów 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

Pliki konfiguracyjne i zależności leżą poza public, więc nie da się ich pobrać z przeglądarki.

Minimalna aplikacja: config.ru i Gemfile

app/config.ru — aplikacja Rack bez frameworka:

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ę

Wersja z Sinatrą w config.ru:

require "sinatra/base"

class App < Sinatra::Base
  get("/") { "Działa: Ruby #{RUBY_VERSION}" }
end

run App

Włączenie Ruby w panelu

  1. Otwórz domenę lub subdomenę w Witryny i domeny i wybierz Ruby.
  2. Kliknij Włącz Ruby i wybierz wersję — na nowe projekty najlepiej najnowszą dostępną.
  3. Sprawdź, czy katalog dokumentów wskazuje …/public, a katalog aplikacji — jego katalog nadrzędny.
  4. Ustaw tryb aplikacji (production) i ewentualne zmienne środowiskowe.
  5. Kliknij Bundle install, a potem Restart App.

Jeśli w public leży domyślny index.html utworzony razem z subdomeną, usuń go — inaczej serwer WWW pokaże go zamiast aplikacji. Nowa konfiguracja zaczyna działać po przeładowaniu serwera WWW (w DoSieci do 30 minut).

Gemy i Bundler

Bundle install instaluje gemy z Gemfile dla wybranej wersji Ruby. Z dostępem SSH możesz zrobić to z konsoli — gemy najlepiej trzymać w katalogu projektu, żeby nie mieszały się między aplikacjami:

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'

Plik Gemfile.lock commituj do repozytorium — wtedy na serwerze zainstalują się dokładnie te same wersje, które testowałeś lokalnie.

Gemy natywne i narzędzia budowania

Część popularnych gemów zawiera kod w C i kompiluje się przy instalacji: nokogiri (starsze wersje), pg, mysql2, bcrypt, puma. Do tego potrzebne są kompilator i biblioteki nagłówkowe. Na hostingu współdzielonym z izolacją kont (CageFS) kompilator zwykle nie jest dostępny dla użytkownika i instalacja kończy się błędem:

make: gcc: No such file or directory

Co możesz zrobić:

  • wybrać wersję gemu z gotowymi binariami dla Linuksa (np. nowsze nokogiri instaluje się jako gem platform, bez kompilacji);
  • zastąpić gem odpowiednikiem w czystym Ruby, jeśli taki istnieje;
  • poprosić obsługę hostingu o zbudowanie gemu dla Twojej aplikacji.

Ruby on Rails

Rails działa w Plesku tak samo jak każda aplikacja Rack: katalogiem publicznym jest public projektu, a config.ru generuje sam Rails. Przed uruchomieniem ustaw RAILS_ENV=production i SECRET_KEY_BASE w zmiennych środowiskowych, wykonaj migracje i zbuduj zasoby:

bundle exec rails db:migrate
bundle exec rails assets:precompile

Rails zależy od kilku gemów natywnych (adapter bazy danych, bcrypt, często nokogiri). Dlatego przed wdrożeniem sprawdź, czy na Twoim hostingu da się je zainstalować — to najczęstsza przeszkoda przy Rails na hostingu współdzielonym. Rails nie był jeszcze uruchamiany na naszym serwerze testowym.

Zmienne, restart i logi

  • Zmienne środowiskowe (hasła, DATABASE_URL) ustaw w panelu Ruby albo w pliku poza katalogiem publicznym. Przykład połączenia z PostgreSQL znajdziesz w poradniku o bazie PostgreSQL w Plesku.
  • Restart: Restart App w panelu albo touch tmp/restart.txt w katalogu aplikacji.
  • Logi: błędy startu Passenger pokazuje na stronie błędu i zapisuje w logach domeny; logi Rails są w log/production.log.
  • Uprawnienia: pliki aplikacji muszą należeć do użytkownika subskrypcji — przy wgrywaniu przez FTP/SFTP dzieje się to automatycznie.

Najczęstsze problemy

  • „rbenv: version `3.x' is not installed” w konsoli SSH — wersja wybrana w panelu nie jest widoczna w środowisku konta. Użyj ścieżki podanej przez obsługę hostingu albo uruchamiaj komendy przez panel (Bundle install).
  • Domyślna strona zamiast aplikacji — w public jest index.html.
  • „Could not find gem … in locally installed gems” — nie wykonano bundle install dla tej samej wersji Ruby, którą wybrano w panelu.
  • Błąd kompilacji gemu (gcc, make) — gem natywny; patrz sekcja wyżej.
  • „The application process exited prematurely” — błąd przy starcie aplikacji (szczegóły w logu) albo problem konfiguracji Passengera po stronie serwera.
  • Zmiany nie są widoczne — zrestartuj aplikację; nowa konfiguracja domeny wymaga przeładowania serwera WWW.

FAQ

Czy mogę zainstalować własną wersję Ruby?

Na hostingu współdzielonym nie — wersje Ruby instaluje administrator serwera i udostępnia je wszystkim kontom. Wybierasz jedną z dostępnych w panelu.

Sinatra czy Rails na hostingu?

Sinatra i czyste Rack mają mało zależności natywnych i łatwiej je uruchomić. Rails wymaga więcej gemów kompilowanych i zasobów, więc sprawdź najpierw, czy hosting je obsługuje.

Jak zrestartować aplikację bez panelu?

Utwórz lub zaktualizuj plik tmp/restart.txt w katalogu aplikacji.

Gdzie instalować gemy?

Najlepiej lokalnie w projekcie (bundle config set --local path vendor/bundle), żeby każda aplikacja miała własny komplet.

Weryfikacja techniczna: 17.09.2026, Plesk Obsidian 18.0.80, rozszerzenie Ruby 1.6, Ruby 3.3.10 (Bundler 2.5), Passenger 6.1, CloudLinux z CageFS. Powiązane poradniki: aplikacja Node.js w Plesku, PostgreSQL w Plesku, Docker i Docker Compose w Plesku. Pakiety: hosting NVMe (Business) i hosting VIP.