Poziom: 0 | Kategoria: Komputerowo-internetowo, Ruby, Ruby on Rails, Techblog.
Ostatnio dane mi było instalować pełen stos programów potrzebnych do uruchomienia aplikacji w Railsach na serwerze pod kontrolą systemu Debian 4.0 etch minimal w wersji 64-bitowej. Ponieważ proces ten jest dosyć długi, opisuję go poniżej.
Opis nie będzie zawierał prawie żadnych instrukcji jak zabezpieczyć serwer, przy okazji zakładam kilka rzeczy:
Na początku warto upewnić się, że mamy aktualną listę pakietów. W tym celu warto wykonać następujące czynności:
$ apt-get update $ apt-get upgrade
Instalujemy też potrzebne pakiety:
$ apt-get install apt-utils build-essential ruby1.8-dev imagemagick libmysqlclient15off \ libmysqlclient15-dev mysql-server mysql-common mysql-client memcached libxslt1-dev libpcre3-dev \ zlib1g-dev unzip gzip libssl-dev libreadline5-dev libmysql-ruby sqlite3 imagemagick man-db cron wget lynx curl bind9 -y
Od razu możemy zmienić hasło roota MySQL:
$ mysqladmin -u root password NEWPASSWORD
Żeby korzystać z jedynie Ruby Enterprise Edition można opuścić ten punkt.
Ruby instalujemy ze źrodeł. W momencie tworzenia opisu w oficjalnych repozytoriach Debiana znalazłem wersję 1.8.5, a najnowszą stabilną wersją Ruby na stronie Ruby-Lang była wersja 1.8.6-p286. Pobieramy i rozpakowujemy źródła Ruby:
$ cd /usr/src $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p286.tar.gz $ tar zxf ruby-1.8.6-p286.tar.gz $ cd ruby-1.8.6-p286
Przed konfiguracją edytujemy plik ext/Setup w celu dołączenia potrzebnych rozszerzeń. Powyższy plik może wyglądać tak:
#Win32API #bigdecimal curses #dbm digest digest/md5 #digest/rmd160 digest/sha1 digest/sha2 dl enumerator #etc #fcntl #gdbm iconv #io/wait #nkf #pty openssl #racc/cparse readline #sdbm socket stringio strscan syck syslog #tcltklib thread #tk #win32ole zlib
Zawartość pliku oznacza, że chcemy skompilować Ruby wraz z rozszerzeniami curses, digest (md5, sha1/2), dl, enumerator, iconv, openssl, readline, socket, stringio, strscan, syck, syslog, thread, zlib.
Przyszła kolej na konfigurację, kompilację i instalację:
$ ./configure --prefix=/usr/local --with-openssl-dir=/usr \ --with-readline-dir=/usr --with-zlib-dir=/usr $ make $ make install $ make install-doc
Ostatnia linijka jest opcjonalna i odpowiedzialna za wygenerowanie dokumentacji.
Po zainstalowaniu interpretera języka Ruby przychodzi kolej na Rubygems:
$ cd /usr/src $ wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz $ tar zxf rubygems-1.3.1.tgz $ cd rubygems-1.3.1/ $ ruby setup.rb $ gem isntall rubygems-update $ update_rubygems $ gem source --add http://gems.github.com
Ostatnia linijka dodaje do źródeł gemów repozytorium Github
Pora na instalacje potrzebnych gemów, moja proponowana lista:
gem install actionmailer actionpack actionwebservice active_graph \ activerecord activeresource activesupport addressable archive-tar-minitar \ bcrypt-ruby BlueCloth builder capistrano capistrano-ext cgi_multipart_eof_fix \ chronic color columnize daemons eventmachine extlib fastercsv fastthread \ feedtools gem_plugin haml highline hoe hpricot image_science \ InlineAttachment json libxml-ruby linecache memcache-client metaid \ mime-types mini_magick mislav-will_paginate mongrel mongrel_cluster \ mongrel_proctitle needle net-scp net-sftp net-ssh net-ssh-gateway nokogiri \ oauth passenger progressbar rack rails rake rcov RedCloth rmagick rspec \ rspec-rails rspec_hpricot_matchers ruby-debug ruby-debug-base rubyforge \ RubyInline rubyzip thin thor tlsmail transaction-simple uuid uuidtools \ webrat wirble xml-simple youtube ZenTest
Ponieważ będziemy uruchamiać aplikację Rails z użyciem Passengera, możemy zredukować zużycie pamięci korzystając ze specjalnie przygotowanej wersji interpretera. Instalujemy go ze źródeł:
$ cd /usr/src $ wget http://rubyforge.org/frs/download.php/50087/ruby-enterprise-1.8.6-20090113.tar.gz $ tar zxf ruby-enterprise-1.8.6-20090113.tar.gz $ cd ruby-enterprise-1.8.6-20090113/ $ ./installer
Wraz z REE zostaną zainstalowane rubygems oraz pewne gemy. Dodatkowe gemy instalujemy jak wyżej, z tym, że korzystamy ze zmodyfikowanej wersji Ruby:
/opt/ruby-enterprise-1.8.6-20090113/bin/ruby -S /opt/ruby-enterprise-1.8.6-20090113/bin/gem install capistrano # ... i inne gemy
Zainstalowałem apache2 wraz z pakietami apache2-mpm-worker, apache2-utils oraz apache2-prefork-dev
apt-get install apache2 apache2-mpm-worker apache2-utils apache2-prefork-dev
Ponieważ gem Passengera został zainstalowany wcześniej pozostaje wygenerować odpowiedni moduł dla apache2:
/opt/ruby-enterprise-1.8.6-20090113/bin/passenger-install-apache2-module
Pora na konfigurację. Wykorzystamy modułowość apache2 oraz program a2enmod do załadowania modułu. Tworzymy pliki /etc/apache2/mods-available/passenger.load z zawartością taką, jak wygenerowała nam instalacja modułu Passengera, np.:
LoadModule passenger_module /opt/ruby-enterprise-1.8.6-20090113/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
i /etc/apache2/mods-available/passenger.conf:
PassengerRoot /opt/ruby-enterprise-1.8.6-20090113/lib/ruby/gems/1.8/gems/passenger-2.0.6 PassengerRuby /opt/ruby-enterprise-1.8.6-20090113/bin/ruby
Po zapisaniu tych plików ładujemy moduł:
$ a2enmod passenger
I to już praktycznie wszystko, jedyne, co zostaje do zrobienia, to utworzenie konfiguracji vhosta dla konkretnej aplikacji, np. w /etc/apache2/sites-available, uaktywnienie jej programem a2ensite i przeładowanie apache.
Mam nadzieję, że powyższy opis pozwoli komuś zaoszczędzić trochę czasu.
zeby zainstalowac ree potrzeba mri ?
30 stycznia 2009 o 23:32:28nie trzeba, nie ma problemu z instalacja samego ree
31 stycznia 2009 o 00:20:19To w takim razie po co najpierw instalujesz mri ?
31 stycznia 2009 o 00:21:37chcialem miec i MRI, i REE.
31 stycznia 2009 o 00:23:53Dla niektorych moze byc to mylace (w tytule masz o ree) ;]
31 stycznia 2009 o 00:25:20i w tresci Passenger jest podpiety pod REE :-) ale dopisze o tym info, dzieki
31 stycznia 2009 o 00:26:26Jak ktoś ma opory morlane przed robieniem ze swojego Debiana Slackware albo innego Gentoo, to może skorzystać z http://debs.ciemnogrod.eu/ – ryby 1.8.6 + gems 1.3.1 w debach
31 stycznia 2009 o 15:26:54