Comme beaucoup aujourd’hui, vous avez choisi d’utiliser les services d’Amazon Web Service pour vos déploiements de solutions web.
Seulement, plutôt que d’utiliser le classique Apache + PHP + MySQL, vous vous orientez vers une solution à base de Ruby on Rails.
Les instances EC2 d’Amazon utilisent, dans leur version Linux, Ubuntu 12.04 Server LTS. Et c’est là qu’est le problème : Ubuntu 12.04 est fourni en standard avec Ruby 1.8. Les dernières versions de Rails 3 nécessitent la version 1.9 de Ruby et il en va de même pour les futures versions.
Je vais donc considérer que vous avez en place un système Ubuntu 12.04 fonctionnel, ainsi que le serveur Apache 2 pleinement opérationnel.
Cet article est fortement inspiré d’une autre source orientée Nginx / PostgreSQL.
Première étape : installer les paquets pré-requis
Mettez à jour vos paquets via Aptitude.
sudo aptitude update;sudo aptitude upgrade |
Puis, installez les paquets nécessaires à la suite des opérations.
sudo aptitude install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev curl git-core python-software-properties wget apache2-prefork-dev |
Si vous utilisez une base de données MySQL
sudo aptitude install libmysqlclient-dev |
Ou PostgreSQL
sudo aptitude install libpq-dev |
Installer Ruby 1.9
Au moment de la rédaction de cette article, la dernière version en date de Ruby est la 1.9.3-p374.
Téléchargez et décompressez l’archive.
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz tar -xvzf ruby-1.9.3-p374.tar.gz |
Allez dans le répertoire des sources et compiler le tout.
cd ruby-1.9.3-p374/ ./configure make |
Installez Ruby. (installé dans /usr/local)
sudo make install |
Configurez Gem. (optionnel mais conseillé dans une configuration serveur)
echo "gem: --no-ri --no-rdoc" >> ~/.gemrc |
Enfin, installez le gem Bundler.
sudo gem install bundler |
Installer Passenger
Passenger permet de lancer des applications Ruby on Rails directement via Apache ou Nginx.
Installons Passenger.
sudo gem install passenger |
Installons maintenant le module Passenger pour Apache 2.
sudo passenger-install-apache2-module |
Un assistant va se lancer : laissez le faire son job.
Il faut maintenant créer les fichiers de configuration.
/etc/apache2/mods-available/passenger.conf
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19 PassengerRuby /usr/local/bin/ruby PassengerUserSwitching off PassengerDefaultUser www-data |
/etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19/ext/apache2/mod_passenger.so |
Ensuite, activons le module passenger.
sudo a2enmod passenger sudo service apache2 restart |
Pour déployer une application Ruby on Rails, il suffit de créer le fichier de configuration correspondant dans le répertoire /etc/apache2/sites-available.
Appelons ce fichier /etc/apache/sites-available/test.
On considère que le répertoire où est installée l’application est /var/www/test.
<VirtualHost *:80> ServerAdmin webmaster@test.fr ServerName test.fr PassengerDefaultUser www-data DocumentRoot /var/www/test/public <Directory /var/www/test/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost> |
Le fichier est configuré. Vérifiez les autorisations sur /var/www/test.
Vérifiez que vous avez installé les gems nécessaires et que vous avez pré-compilé vos assets.
Dans le répertoire de l’application, pensez à réinitialiser l’app.
touch tmp/restart.txt |
Ensuite, on peut activer le site.
sudo a2ensite test sudo service apache2 reload |
Normalement, tout devrait être opérationnel.
