Ruby
From Rootnode
Contents |
Wstęp
Język Ruby na Rootnode obsługiwany jest przez maszynę typu fastweb z wykorzystaniem serwera nginx oraz modułu passenger. Oprócz standardowej konfiguracji w pliku conf/nginx, można także stosować dodatkowe znaczniki, takie jak: <passenger_base_uri>, <rails_env> oraz <rack_env>. Szczegóły na temat zastosowania znajdziesz w tym dokumencie.
Zasoby serwera www obsługującego język Ruby podmontowane są w katalogu /ruby. W tym samym zasobie znajdują się vhosty korzystające z języka Python, ponieważ język Python jest obsługiwany przez tę samą maszynę co Ruby (także za pomocą modułu passenger).
|
Ze względu na to, że obecne serwery shellowe jak stallman i korn mają przestarzałe wersje składników języka Ruby oraz Gemów zaleca się wykonywanie wszystkich operacji na nowym serwerze shellowym, którego tymczasowa nazwa to stallman2.rootnode.net. Logowanie odbywa się za pomocą tych samych danych co do serwerów shellowych. Braki w pakietach proszę zgłaszać za pomocą mailisty users-pl. |
Koniecznie przeczytaj opis konfiguracji serwerów typu fastweb.
Wersja oprogramowania
Na serwerach fastweb oraz stallman2 zainstalowany jest:
- ruby w wersji 1.8, wersja standardowa, nie Enterprise
- rails w wersji 2.3.8 oraz 2.3.5
Katalog z binarkami dla gemów na serwerze stallman2 znajduje się w katalogu /var/lib/gems/1.8/bin. W przypadku istnienia innych wersji ruby w katalogu wystarczy zmienić numer wersji.
.Jeśli brakuje ci jakiegoś gemu napisz koniecznie do nas i zainstalujemy go globalnie. Nie ma potrzeby tworzenia własnych środowisk z gemami.
Konfiguracja domeny, vhosta i bazy danych
Konfiguracja nie odbiega znacząco od tej opisanej na podstronie Fastweb. Słówkiem kluczowym do poleceń szatana jest ruby, który należy dodać na końcu poleceń. Rekord A domeny powinien wskazywać na adres IP serwera wall.rootnode.net, czyli 89.248.171.136.
| przykład |
W skrócie konfiguracja vhosta dla aplikacji Redmine, może wyglądać następująco:
satan dns add a bongo.pl redmine 89.248.171.136 satan vhost add bongo.pl redmine.bongo.pl ruby satan vhost init redmine.bongo.pl satan mysql adddb my1234_redmine ruby satan mysql adduser my1234_redmine stdin ruby satan mysql grant my1234_redmine my1234_redmine ruby
Sprawdzamy czy nasza konfiguracja jest poprawna za pomocą poleceń:
$ satan dns list bongo.pl | grep redmine 38456 redmine a 89.248.171.136 $ satan vhost list | grep redmine bongo.pl redmine.bongo.pl ruby $ satan mysql list ruby | grep redmine my1234_redmine my1234_redmine all my1234_redmine.* yes
Wszystko wygląda w porządku. Zanim zaczniemy testować naszą stronę z lokalnego komputera warto sprawdzić, czy DNS zdążyły się rozpropagować np. za pomocą polecenia ping, dig, host albo nslookup:
$ ping -c 1 redmine.bongo.pl PING redmine.bongo.pl (89.248.171.136) 56(84) bytes of data. 64 bytes from wall.rootnode.net (89.248.171.136): icmp_seq=1 ttl=63 time=1.55 ms --- redmine.bongo.pl ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.553/1.553/1.553/0.000 ms
Widzimy, że odezwał się serwer wall. To oznacza, że DNS działa poprawnie.
Ścieżka do aplikacji
Domyślnie katalog główny vhosta jest ustawiony na /home/<login>/www/mój.vhost.pl/htdocs/public/. Należy zwrócić uwagę na ostatni katalog - jest to public. Tam możemy wrzucać pliki statyczne.
Sprawa ma się zupełnie inaczej jeśli korzystami z opcji <passenger_base_uri> określonej w pliku conf/nginx. Wtedy domyślnym katalogiem dla vhosta jest /home/<login>/www/mój.vhost.pl/htdocs - tym razem już bez katalogu public. Ścieżkę do aplikacji określa wartość podana w znaczniku, np. <passenger_base_uri path="/redmine"/>.
Z punktu widzenia obu serwerów (shellowego i www) ścieżkę do aplikacji można ustalić jako /ruby/<login>/www/mój.vhost.pl/htdocs. Odpowiednie symlinki gwarantują, że ścieżka jest identyczna na obu maszynach.
Jeżeli nie posiadasz, w swoim katalogu domowym, katalogu ~/ruby możesz go utworzyć za pomocą polecenia ln -s /ruby/<login>/www ~/ruby.
Wiele aplikacji w ramach jednego vhosta
Jeśli chcemy deployować wiele aplikacji w ramach jednego vhosta należy skorzystać ze znacznika <passenger_base_uri> w ramach konfiguracji w pliku conf/nginx.
Należy pamiętać, że w przypadku korzystania z tego znacznika głównym katalogiem dla vhosta już nie jest htdocs/public/, a htdocs/.
Dla przykładu jeśli chcemy uruchomić Redmine na http://bongo.pl/redmine, zamiast http://redmine.bongo.pl należy:
- skonfigurować DNS dla domeny bongo.pl, aby wskazywała na serwer wall.rootnode.net.
- ściągnąć kod aplikacji, np. do katalogu ~/ruby/mój.vhost.pl/apps/redmine.
$ cd ~/ruby/mój.vhost.pl/htdocs $ ln -s ../apps/redmine/public redmine
- utworzyć plik conf/nginx z zawartością:
<nginx> <passenger_base_uri path="/redmine"/> </nginx>
- oraz przeładować vhosta tworząc plik conf/reload.
Od tej chwili twoja aplikacja będzie dostępna pod adresem http://mój.vhost.pl/redmine
Memcache
Jeśli twoja aplikacja ma możliwość integracji z memcache, wykorzystaj to! Wystarczy utworzyć plik conf/memcache w katalogu vhosta oraz przeładować vhosta za pomocą pliku conf/reload. Twój memcache o wielkości 32M, będzie dostępny pod adresem 127.0.0.1:11211.
Szczegóły znajdziesz na podstronie Fastweb.
Instalacja aplikacji
W tym miejscu znajdziesz informacje na temat instalacji konkretnych aplikacji. Zakładamy, że vhosty, domeny i bazy danych są już utworzone. Nasz użytkownik to bongo o uidzie 1234.
Redmine
Redmine to aplikacja do zarządzania projektami napisana w Rubym, będąca odpowiednikiem Traca. Zobacz szczegółowe informacje na temat instalacji. Poniższe polecenia wykonujemy na serwerze stallman2.
$ cd ~/ruby/redmine.bongo.pl/htdocs $ git clone git://github.com/edavis10/redmine.git . Initialized empty Git repository in /ruby/bongo/www/redmine.bongo.pl/htdocs/.git/ remote: Counting objects: 40026, done. remote: Compressing objects: 100% (9589/9589), done. remote: Total 40026 (delta 30668), reused 38539 (delta 29536) Receiving objects: 100% (40026/40026), 8.55 MiB | 6.36 MiB/s, done. Resolving deltas: 100% (30668/30668), done. $ vim config/database.yml production: adapter: mysql database: my1234_redmine host: wall.rootnode.net username: my1234_redmine password: redmine666 encoding: utf8 $ rake generate_session_store (in /ruby/bongo/www/redmine.bongo.pl/htdocs) $ RAILS_ENV=production rake db:migrate (in /ruby/bongo/www/redmine.bongo.pl/htdocs) tutaj kilka ekranów tekstu $ RAILS_ENV=production rake redmine:load_default_data (in /ruby/bongo/www/redmine.bongo.pl/htdocs) Select language: bg, bs, ca, cs, da, de, el, en, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-CY, sv, th, tr, uk, vi, zh, zh-TW [en] pl ==================================== Default configuration data loaded. $ touch ../conf/reload
Gotowe. Teraz możemy wejść na stronę http://redmine.bongo.pl:81 i zalogować się domyślnym hasłem jako administrator:
- login: admin
- hasło: admin
Troubleshooting
Logowanie do Redmine nie działa, ActionView::TemplateError w production.log
Sprawdzić czy:
- czy w config/environment.rb jest wpisana dobra wersja Railsów
RAILS_GEM_VERSION = '2.3.8' unless defined? RAILS_GEM_VERSION
- jak nie działa, czy nie ma jakiś zmian w repo
git pull
- i czy są jakieś migracje $ rake db:migrate
Po zmianach przeładować konfigurację za pomocą pliku conf/reload.

