CentOS 5, Ruby on Rails, Apache, FastCGI/FCGI

Meine Installationsschritte für Apache, Ruby on Rails, fcgi, mod_fastcgi, rmagick auf CentOS 5 Jan Bromberger am 10. Januar 2010

Für ein neues Projekt haben wir gestern bei 1&1 einen Server bestellt. Es war CentOS 5 vorinstalliert. Das Projekt wird in Ruby on Rails entwickelt. Hier sind meine Installationsschritte:

Erstmal alles auf den neuesten Stand bringen:

yum upgrade
yum install lynx bc gcc make

Mein frisch installierter Server hatte Probleme mit dem Auflösen mancher Domains. Das lag an dem via DHCP bezogenen Nameserver.

Als nächstes habe ich die MySQL-Tuning-Einstellungen von meinem anderen Server übernommen. Ich werde hier nicht ins Detail gehen (wird wohl ein anderer Artikel), aber empfehle als Einstieg das Tuning Primer Script, welches bc benötigt.

touch /var/log/mysqld-slow-queries.log
chown mysql.mysql /var/log/mysqld-slow-queries.log
vi /etc/my.cnf
/etc/init.d/mysqld restart

Dann User und Datenbank einrichten für das Rails-Projekt.

Dann kümmern wir uns mal um FastCGI bzw. fcgi. Achtung: Wir haben ein 64bit-System. Daher steht unten /usr/lib64/httpd – für 32bit durch /usr/lib/httpd ersetzen.

yum install libtool httpd-devel apr apr-devel apr-util-devel emacs-common
cd ~
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar xvzf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install

Und nun mod_fastcgi

cd ~
wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
tar xvzf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
make top_dir=/usr/lib64/httpd
make install top_dir=/usr/lib64/httpd
vi /etc/httpd/conf.d/mod_fastcgi.conf

Dort nur eine Zeile reinschreiben:

LoadModule fastcgi_module modules/mod_fastcgi.so

Packete, die wir für Ruby oder Gems brauchen werden:

yum install mysql-devel readline-devel

Ruby installieren. Ich wollte eine aktuellere Version, als die, die ich mit yum install ruby bekommen hätte. Die Rails-Seite empfielt immer eine Ruby-Version, also warum nicht diese verwenden? Ich habe mein ruby auf anderen Servern in /usr/local/bin/ruby und wollte es hier deshalb auch so haben. Warum es auf den anderen Servern so ist, weiss ich nicht mehr. :-)

cd ~
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
tar xzvf ruby-1.8.7-p174.tar.gz
cd ruby-1.8.7-p174
./configure --prefix=/usr/local
make
make install

Edit: Auf dem neuen Server reichte das aus, um script/console zum laufen zu bekommen. Auf dem alten Server (selber Hoster, selbes OS, …) nicht. Hier half dies:

cd ~/ruby-1.8.7-p174/ext/readline
ruby extconf.rb
make
make install 

So, jetzt her mit Rubygems (aktuelle Version nachsehen!) und ein par Gems.

cd ~
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb
gem install rails -v 2.3.5
gem install mysql
gem install fcgi

Jetzt das Projekt installieren. Ich habe meine Projekte in Subversion. Git geht natürlich auch. CVS geht schon lange nicht mehr.

yum install subversion
cd /var/www/vhosts
svn co <Dein Projekt>
cd <Dein Projekt>
chown apache.apache -R .
rake db:migrate RAILS_ENV=production
rake db:seed RAILS_ENV=production
vi /etc/httpd/conf.d/<Dein Projekt>.conf
<VirtualHost <Deine Server-IP>:80>
 ServerAdmin <Deine E-Mail-Adresse>
 DocumentRoot /var/www/vhosts/<Dein Projekt>/public/
 ServerName www.<Dein Projekt>
 ServerAlias <Dein Projekt>
 ErrorLog logs/<Dein Projekt>-error_log
 CustomLog logs/<Dein Projekt>-access_log common

 <Directory /var/www/vhosts/<Dein Projekt>/public>
   Options ExecCGI FollowSymLinks
   AllowOverride all
   Order allow,deny
   Allow from all
 </Directory>

 FileETag MTime Size

 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript application/x-javascript text/css
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</VirtualHost>

Für meine Projekte brauche ich eigentlich immer rmagick. Es gab/gibt memory leaks in rmagick, die man mit vorsichtigem Coden vermeiden kann. Bitte schaut euch auch Alternativen wie minimagick an. Ich installiere ImageMagick erst per yum, um Abhängigkleiten nicht alle einzeln eingeben zu müssen, deinstalliere es dann aber wieder und installiere eine deutlich neuere Version per Hand.

cd ~
yum install ImageMagick ImageMagick-devel libpng libpng-devel freetype freetype-devel giflib giflib-devel
yum erase ImageMagick ImageMagick-devel
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -xzvf ImageMagick.tar.gz
cd ImageMagick-6.5.8-10
./configure

Hier die Gelegenheit nutzen, um zu schauen, ob alle Grafikformate aktiv sind, die man benötigt. Sonst gegebenenfalls die Nötigen Bibliotheken installieren und nochmal ./configure laufen lassen.

make
make install
gem install rmagick

Ach ja und nicht vergessen:

apachectl restart

Tags: , , , , , ,

2 Antworten auf „CentOS 5, Ruby on Rails, Apache, FastCGI/FCGI“

  1. frank sagt:

    Hallo,

    danke für die gute Anleitung, aber wie formuliere ich svn co
    genau, was muss ich bei angeben. Und wo kann ich diese
    Angabe auslesen?

    Gruss und Danke
    Thomas

  2. Hi Thomas,

    mit “svn help co” sieht man die Syntax und die Parameter. Wenn Dein Code schon im Subversion ist, also dann svn co http://dein.sv.host/dein/projekt – eben die URL Deines Repositories. Alternativ kannst Du den Code aber natürlich auch anders auf den Server legen (per FTP zum Beispiel).

    LG Jan

Schreibe eine Antwort