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
- Otwórz domenę lub subdomenę w Witryny i domeny i wybierz Ruby.
- Kliknij Włącz Ruby i wybierz wersję — na nowe projekty najlepiej najnowszą dostępną.
- Sprawdź, czy katalog dokumentów wskazuje
…/public, a katalog aplikacji — jego katalog nadrzędny. - Ustaw tryb aplikacji (production) i ewentualne zmienne środowiskowe.
- 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
nokogiriinstaluje 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.txtw 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
publicjestindex.html. - „Could not find gem … in locally installed gems” — nie wykonano
bundle installdla 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.
