Installer Ruby On Rails et Mongrel sur un serveur OVH en release 1

2006-10-17

L’idée est d’installer tout un environnement Ruby on Rails sur un serveur dédié OVH en release 1 (Apache 1.3, MySQL 3.23…)

Cet article a été écrit de mémoire, il est possible qu’il y ait de petites erreurs. N’hésitez pas à me les signaler.

1) Installer Ruby

Voir : ruby-lang.org

# wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.5.tar.gz
# tar xzvf ruby-1.8.5.tar.gz
# cd ruby-1.8.5
# ./configure
# make
# sudo make install

2) Installer RubyGems

# wget http://rubyforge.iasi.roedu.net/files/rubygems/rubygems-0.9.0.tgz
# tar xzvf rubygems-0.9.0.tgz
# cd rubygems-0.9.0
# sudo /usr/local/bin/ruby setup.rb

3) Installer Ruby On Rails

# sudo gem install rails --include-dependencies

4) Installer FastCGI

# wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
# tar xzvf fcgi-2.4.0.tar.gz
# cd fcgi-2.4.0
# ./configure
# make
# sudo make install

5) Installer les bindings Ruby-FastCGI

# wget http://sugi.nemui.org/pub/ruby/fcgi/ruby-fcgi-0.8.6.tar.gz
# tar xzvf ruby-fcgi-0.8.6.tar.gz
# cd ruby-fcgi-0.8.6
# /usr/local/bin/ruby install.rb config
# /usr/local/bin/ruby install.rb setup
# sudo /usr/local/bin/ruby install.rb install

# sudo gem install fcgi

6) Installer la librairie PCRE

  # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.7.tar.gz
  # tar xzvf pcre-6.7.tar.gz
  # cd pcre-6.7
  # ./configure
  # make
  # sudo make install

7) Installer les serveur web Mongrel

Voir : mongrel.rubyforge.org

# sudo gem install mongrel

8) Installer les bindings MySQL

Attention, Rails conseille fortement MySQL 4+, notamment pour les tables InnoDB…
J’ai des tas d’autres sites qui tournent avec du MySQL 3 et je ne souhaite pas changer, donc je vais utiliser SQLite pour mon appli Rails qui sera peu gourmande en base de données.

# sudo gem install mysql

9) Installer SQLite

9.1) Installer le serveur SQLite

# wget http://sqlite.org/sqlite-3.3.8.tar.gz
# tar -xzf sqlite-3.3.8.tar.gz
# cd sqlite-3.3.8/
# mkdir build
# cd build/
# ../configure --prefix=/usr/local/sqlite --disable-tcl --with-gnu-ld
# make
# make install

# gem install sqlite

9.1) Installer SWIG

# wget http://heanet.dl.sourceforge.net/sourceforge/swig/swig-1.3.29.tar.gz
# tar -xzf swig-1.3.29.tar.gz
# cd swig-1.3.29/
# ./configure
# make
# make check
# make install

9.2) Installer les bindings Ruby-SQLite

# gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/sqlite

10) Rendre l’appli Rails accessible

10.1) Créer et démarrer une appli Rails

# rails /home/user/appli
# cd /home/user/appli
# mongrel_rails start -d -p 8000

On a donc une appli nommée “appli” qui tourne dans Mongrel en mode démon, sur le port 8000

On souhaite pouvoir acceder à l’appli sur le port 80 au lieu du port 8000, il faut donc utiliser le mod_proxy d’Apache sur un VirtualHost spécifique.

10.2) Recompiler Apache avec mod_proxy

J’ai utilisé la configuration présente dans le patch 1.67 :

# cd apache_1.3.34
# ./configure
--prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--enable-suexec
--suexec-caller=nobody
--suexec-userdir=www
--suexec-docroot=/home
--suexec-logfile=/usr/local/apache/logs/cgi.log
--suexec-uidmin=99
--suexec-gidmin=99
--suexec-safepath=/usr/local/bin:/usr/bin:/bin
--enable-module=so
--enable-module=rewrite
--add-module=src/modules/extra/mod_gzip.c
--enable-module=proxy
--enable-module=ssl
# make
# sudo make install
# sudo /etc/rc.d/init.d/httpd restart

10.3) Création du VirtualHost

Adapter et ajouter ceci dans votre httpd.conf

<VirtualHost *:80>
  ServerName appli.mon-domaine.com
  ProxyPass / http://appli.mon-domaine.com:8000/
  ProxyPassReverse / http://appli.mon-domaine.com:8000
</VirtualHost>