Ruby

From Rootnode

Jump to: navigation, search

Image:ruby.gif

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).

Image:Warning.png

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.

Image:Warning.png

Katalog nie jest dodany do twojej ścieżki $PATH. Należy to zrobić we własny zakresie.

.

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

Image:Warning.png

Obsługa wielu aplikacji w ramach jednego vhosta jest chwilowo wyłączona

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.

Przewodnik po Rootnode

Nasze strony są oparte o system wiki, co znaczy, że każdy użytkownik może edytować dowolną stronę.
Treści tutaj zawarte mogą być nieaktualne i niewłaściwe. Nie bierzemy odpowiedzialności za ewentualne szkody.

Zobacz ostatnie zmiany.

Pierwsze kroki z Rootnode

Bazy danych


Poczta

Domena i system DNS

Vhost, strona www

Nieuporządkowane

© ITspec Wszelkie prawa zastrzeżone. | Wiki | Status | Support | Planeta | Fortunki | Kontakt
Szukasz oferty indywidualnej lub specjalistów IT? Zobacz naszą stronę domową i skontaktuj się z nami.
Personal tools