lighttpd + MySQL + Ruby on Rails + FastCGI
Ich habe diese Anleitung geschrieben, da ich kein wirklich durchgehendes Tutorial gefunden habe, welches das Aufsetzen eines lighttpd Webservers mit FastCGI und Ruby on Rails beschreibt. Ich verwende Fußnoten um auf andere Anleitungen zu verweisen, die mir nützlich waren und die dir vielleicht auch weiterhelfen.
Als Ausgangsposition solltest du ein funktionierendes Linuxsystem haben. Ich nutze für diese Anleitung Debian 4.0 Etch in der Minimalinstallation. Es kann also sein das du gegebenenfalls die Befehle anpassen, einen anderen Paketmanager nutzen oder andere Paketnamen verwenden musst oder manche Pakete einfach schon vorhanden sind.
lighttpd installieren
Als erstes benötigst du ein paar Pakete um lighttpd kompilieren zu können. (1)sudo apt-get install build-essential libpcre3-dev zlib1g-dev libbz2-dev subversion libssl-dev debhelper
die neueste Lighttpd Version. Geh auf http://www.lighttpd.net/download und kopiere dir den Downloadlink. Bei mir ist die 1.4.20 die aktuellste Version. Hol dir das Paket, entpacke es und wechsel in das entpackte Verzeichnis.
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.28.tar.gz
tar -xzf lighttpd-1.4.28.tar.gz
cd lighttpd-1.4.28
Mit einem einfachen
./configure
kannst du testen welche Pakete dir noch fehlen. Wenn das fehlerfrei durchläuft, kannst du dich um das Paket bauen kümmern.
svn checkout svn://svn.lighttpd.net/lighttpd/branches/post-upload-cleanup/debian debian
nano debian/changelog
Füge jetzt ganz oben folgendes ein:
lighttpd (1.4.28) unstable; urgency=low
* updated to 1.4.28
-- Your Name <[email protected]> Mon, 9 Feb 2009 17:48:00 -0000
Achte darauf, dass du die Version einträgst, die du runtergeladen hast. Jetzt noch schnell kopieren
cp debian/changelog changelog
Jetzt als root folgendes ausführen:
dpkg-buildpackage
Jetzt wird lighttpd kompiliert. Nachdem es fertig ist, wechsele ein Verzeichnis höher und installiere das Paket.
cd ..
dpkg -i lighttpd_1.4.28_i386.deb
Nun ist lighttpd erfolgreich auf deinem System!
MySQL installieren
Hier sollte ein einfachesapt-get install mysql-server
genügen. Der Benutzer root erhält hierbei standardmässig ein leeres Passwort. Wenn dir das zu unsicher ist oder du deine Datenbank mit Programmen wie phpmyadmin öffentlich zugänglich gemacht hast solltest du mit
mysqladmin -u root -p password "geheim"
ein root-Passwort vergeben. Wenn du Rails nur mal auf deinem lokalen Rechner testen willst, kann du diesen Schritt übersrpingen. ((http://wiki.ubuntuusers.de/MySQL#Benutzer))
Ruby on Rails installieren
Hole dir als erstes die neueste Version von Ruby auf http://www.ruby-lang.org/de/downloads/. Bei mir ist das Ruby 1.8.7-p72.wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
tar -xzf ruby-1.8.7-p72.tar.gz
cd ruby-1.8.7-p72
Nun musst du die ganze Sache wieder kompilieren und installieren. Hier kann es wieder sein, dass der configure Befehl abbricht, weil Pakete fehlen, diese eventuell noch per apt-get install nachinstallieren.
./configure
make
make install
Unter Debian/Ubuntu bietet sich statt dem letzten Befehl ein "checkinstall" an um ein Paket zu erstellen und dieses zu installieren. (ggf. muss hier dann vorher ein "sudo apt-get install checkinstall" ausgeführt werden)
Wenn alles ohne Fehler durchläuft, hast du ein funktionierendes Ruby.
Nun brauchst du noch RubyGems, Ruby's eigenen Paketmanager. Dieser funktioniert genauso wie aptitude, bloß halt für Ruby. Du kannst dir die aktuelle Version auf http://rubyforge.org/frs/?group_id=126 runterladen. Nach dem Download kannst du RubyGems dann direkt installieren.
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar -xzf rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb
Bei manchen System kann es notwendig sein ein --prefix=/usr an den letzten Befehl anzuhängen.
Jetzt kannst du alle benötigten Gem-Pakete und deren Abhängigkeiten per
gem install rails rake mysql fcgi
installieren. Hier kann es passieren, dass mysql und fcgi nicht installiert werden können. Mit
apt-get install libmysqlclient15-dev libfcgi-dev
kann dieses Problem behoben werden.
Ein Railsprogramm erstellen
Jetzt kannst du mitrails myfirstapp -D -d mysql
deine erste Ruby on Rails Applikation erstellen. Der Name kann natürlich auch anders lauten. Die Option -D erzeugt den Dispatcher für unsere FCGI-Anbindung. Die Option -d mysql erzeugt eine Anbindung an die MySQL-Datenbank. http://guides.rubyonrails.org/gettingstartedwithrails.html#creatingtheblog_application
http://guides.rubyonrails.org/gettingstartedwithrails.html#configuringadatabase
Jetzt kannst du mit
rake db:create
eine Datenbank für deine Railsapplikation erzeugen.
Mit FastCGI und lighttpd starten
Um dein Rails-Programm mit FastCGI ((http://www.fastcgi.com/)) und lighttpd nutzen zu können, musst du jetzt nur noch eine Änderung in der lighttpd.conf vornehmen.nano /etc/lighttpd/lighttpd.conf
Am Ende der Datei folgendes einfügen: ((https://help.ubuntu.com/community/RubyOnRails#Lighttpd))
server.modules += ( "mod_fastcgi", "mod_rewrite" )
$HTTP["host"] == "localhost" {
server.document-root = "/home/to/myfirstapp/public/"
server.dir-listing = "disable"
server.error-handler-404 = "/dispatch.fcgi"
fastcgi.server = ( ".fcgi" => ( "myfirstapp" => (
"min-procs" => 1,
"max-procs" => 1,
"socket" => "/tmp/ruby-myfirstapp.socket",
"bin-path" => "/home/to/myfirstapp/public/dispatch.fcgi",
"bin-environment" => ( "RAILS_ENV" => "development" )
) ) )
}
Jetzt den Server mit
/etc/init.d/lighttpd restart
neustarten und im Browser localhost aufrufen. Herzlichen Glückwunsch, du hast es geschafft! Viel Spass beim Rails nutzen!