Ostatnio zainteresowałem się językiem programowania Ruby, a w szczególności frameworkiem Ruby on Rails i to w wersji 3.0[rc2].
Próbowałem w sieci odnaleźć prosty tutorial opisujący krok po kroku instalację samego Ruby 1.9.2, RoR w wersji 3.0 jak i serwera Mongrel/Thin w połączeniu z Apache2.
Nic ciekawego nie znalazłem, więc postawiłem napisać samemu.
Poniższy opis dotyczy świeżej instalacji Ubuntu Server 10.4, ale pod Debianem powinno również zadziałać.
Wszystkie komendy wykonujemy z prawami administratora systemu (root), tak więc albo od razu się na niego zalogujmy, albo z konta użytkownika, który posiada uprawnienia do sudo, wykonujemy polecenie:
sudo su -
Rozpocząć należy od aktualizacji listy pakietów w systemie:
apt-get update apt-get upgrade
Instalujemy całą listę pakietów:
apt-get install build-essential libreadline-dev libncurses-dev zlib1g-dev libssl-dev libsqlite3-dev apache2
Pobieramy i rozpakowujemy najnowszą wersję Ruby (w chwili pisania tego tesktu jest to 1.9.2-p0 oraz 1.8.7-p302):
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz tar zxvf ruby-1.9.2-p0.tar.gz tar zxvf ruby-1.8.7-p302.tar.gz
Przechodzimy do katalogu ruby-1.8.7-p302 i kompilujemy Ruby 1.8.7 (jest wymagane przed przejściem do 1.9.2):
cd ~/ruby-1.8.7-p302 ./configure make make install
Teraz czas na najnowszą wersję Ruby:
cd ~/ruby-1.9.2-p0 ./configure make make install
Aktualizujemy RubyGems i zainstalowane gemy (dodatkowo instalujemy gem do sqlite3):
gem update --system gem update gem install sqlite3-ruby
Instalacja Railsów:
gem install rails --pre
Teraz potrzebujemy jeszcze serwer Thin (Mongrel to zło i nie działa poprawnie z pakietem Rails3+Ruby1.9.2):
gem install thin thin install sudo /usr/sbin/update-rc.d -f thin defaults
Przyszedł czas na stworzenie pierwszej strony (oczywiście wszystkie wystąpienia mysite.pl zmieniamy na odpowiednią domenę) i ustawienie odpowiednich praw:
cd /var/www rails new mysite.pl chown -R www-data: mysite.pl
Przechodzimy do konfiguracji. Najpierw ustawiamy Thin:
thin -a 127.0.0.1 -p 4000 -c /var/www/mysite.pl -e production -d -u www-data -g www-data -s 5 -C /var/www/mysite.pl/config/thin.yml -O config
To polecenie wygeneruje nam plik /var/www/mysite.pl/config/thin.yml z taką oto zawartością (komentarzy tam jednakże nie będzie):
--- # katalog z naszą aplikacją chdir: /var/www/mysite.pl # środowisko uruchomieniowe environment: production # adres na którym będzie działał Thin # (potrzebny podczas ustawiania Apache'a) address: 127.0.0.1 # pierwszy port port: 4000 timeout: 30 log: log/thin.log pid: tmp/pids/thin.pid max_conns: 1024 max_persistent_conns: 512 require: [] wait: 30 daemonize: true user: www-data group: www-data # ilość instancji serwerów Thin # porty, na których Thin się uruchomi to (wcześniej podany) # 4000 i kolejne (w tym przypadku: 4000, 4001, 4002, 4003, 4004) servers: 5 # przy tej opcji ustawionej na true podczas restartu Thin # nie wyłączy od razu wszystkich serwerów tylko będzie się restartował jeden po drugim onebyone: true
Jeszcze tylko podlinkowanie pliku konfiguracyjnego do katalogu Thina, aby ten mógł automatycznie uruchomić serwery:
ln -s /var/www/mysite.pl/config/thin.yml /etc/thin/mysite.pl.yml
Teraz przechodzimy do konfiguracji Apache’a.
Uaktywniamy wymagane moduły:
a2enmod rewrite a2enmod proxy a2enmod proxy_http a2enmod proxy_balancer
i tworzymy plik z konfiguracją naszego hosta /etc/apache2/sites-available/mysite.pl z taką oto zawartością:
<VirtualHost *:80>
ServerName mysite.pl
# ścieżka do katalogu "public" w naszym projekcie
DocumentRoot /var/www/mysite.pl/public
LogLevel warn
ErrorLog /var/log/apache2/mysite.pl-error.log
CustomLog /var/log/apache2/mysite.pl-access.log combined
# zgodnie z konfiguracją Thina podajemy tutaj lokalne serwery
<Proxy balancer://thin_mysite>
BalancerMember http://127.0.0.1:4000
BalancerMember http://127.0.0.1:4001
BalancerMember http://127.0.0.1:4002
BalancerMember http://127.0.0.1:4003
BalancerMember http://127.0.0.1:4004
</Proxy>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Directory "/var/www/mysite.pl/public">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://thin_mysite%{REQUEST_URI} [P,QSA,L]
</VirtualHost>
Teraz już tylko należy uaktywnić naszą stronę, uruchomić Thina i zrestartować Apache’a:
a2ensite mysite.pl /etc/init.d/thin start /etc/init.d/apache2 restart
To już koniec. 🙂 Pod adresem http://mysite.pl (czyli pod Twoją domeną) powinna pojawić się taka witryna:
czyli czas zabrać się do pracy!
Powodzenia! 🙂

Skomentuj Skorupa Anuluj pisanie odpowiedzi