Bien, il s'agit de mon premier HOW-TO. Il risque d'etre un peu incomplet au début car j'ai pas mal tatonné pour le faire donc je risque d'oublier certaines choses que j'ai faites.
Je reviendrais dessus s'il manque quelque chose. Vos commentaires sont les bienvenus pour améliorer ou corriger certains points.
Bon tout d'abord, une note importante.
La Release 2 Gentoo d'OVH utilise une version spéciale d'apache : apache-ovh.
Elle est parfaite pour un hébergement web avec php...mais pour Rails via Mongrel, on se retrouve coincé car on ne peut pas utiliser mod_proxy_balancer (> apache 2.2)
Choisir d'installer apache 2.2 signifie donc abandonner apache-ovh et donc OVHM. Bien que dans le HOW-TO, je ne désinstalle pas apache-ovh vous permettant de revenir dessus, ce HOW-TO est déconseillé si vous n'etes pas pret a gérer vos configurations "à la main".
Maintenant, commençons...
1. Installation de Rails/Mongrel
La première étape consiste à installer rails et mongrel. Ici, c'est très simple.
Puis on va utiliser gem pour le reste
Code:
gem install -y rake
gem install -y rails
gem install -y termios
gem install -y mongrel
gem install -y mongrel_cluster
hop nous voilà avec toute la panoplie rails/mongrel, plus qu'a tester tout ça.
Placez vous dans /home/"compte"/
Rails va vous générer votre squelette d'application. Créez une base "mon_appli"_production (le principe étant que sur votre serveur se trouvera l'environnement de production seulement) et configurez config/database.yml
Nous allons créer un petit exemple afin de bien tester si tout fonctionne. Placez vous à la racine de l'appli
Code:
ruby script/generate scaffold_resource Example titre:string contenu:text
Là aussi, celà devrait vous créer le squelette du controlleur, du modèle et de la vue.
Vous pouvez donc migrer la base.
Si tout se passe bien, votre application est prete...on va pouvoir tester mongrel.
Code:
mongrel_rails cluster::configure -e production -p 8000 -a 127.0.0.1 -N 2 -c /home/"compte"/"votre_appli"
mongrel_rails cluster::start
Vous devriez maintenant avoir vos 2 serveurs mongrels qui répondent depuis les ports 8000 et 8001. Vous pouvez les tester depuis votre navigateur via
http://votre_ip:8000 et 8001. Testez aussi si votre Exemple fonctionne aussi sur
http://votre_ip:8000/Exemples
Si tout est ok, il reste plus qu'a installer apache 2.2 et le configurer.
2. Installer apache 2.2
1er constat...il est masqué donc vous ne pouvez pas l'installer comme ça. un emerge -- search apache ne vous donnera que apache-ovh.
La solution consiste a forcer les choses.
Tout d'abord, créez le fichier /etc/portage/package.unmask avec le contenu suivant
Code:
app-admin/apache-tools
net-www/apache
dev-libs/apr
dev-libs/apr-util
Puis éditez le fichier /etc/portage/package.keywords en y rajoutant ceci
Code:
~app-admin/apache-tools-2.2.4
~net-www/apache-2.2.4
~dev-libs/apr-1.2.7
~dev-libs/apr-util-1.2.7
Vous pouvez alors installer apache-tools et apache
Code:
emerge ~app-admin/apache-tools-2.2.4
emerge ~net-www/apache-2.2.4
A ce niveau là, j'ai eu un soucis. Il cherchait sans succès apr-0.97. Si c'est aussi votre cas, il faut mettre a jour votre arbre de portage (cf le guide ovh)
Sinon, nous pouvons passer à la configuration d'apache.
Editez le fichier /etc/apache2/vhost.d/00_default_vhost.conf et ajoutez-y ceci :
Code:
# votre-domaine.com
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
ServerAdmin webmaster@votre-domaine.com
DocumentRoot /home/"compte"/"votre_appli"
SuexecUserGroup "compte" users
ServerName www.votre-domaine.com
ServerAlias votre-domaine.com
CustomLog logs/votre-domaine-access_log combined
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
RewriteRule ^/$ /index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://votre-domaine_cluster%{REQUEST_URI} [P,QSA,L]
Editez aussi le fichier /etc/conf.d/apache2 en modifiant la ligne suivante :
Code:
APACHE2_OPTS="-D INFO -D LANGUAGE -D SSL -D SUEXEC -D DEFAULT_VHOST -D SSL_DEFAULT_VHOST"
par
Code:
APACHE2_OPTS="-D INFO -D LANGUAGE -D SSL -D SUEXEC -D DEFAULT_VHOST -D SSL_DEFAULT_VHOST -D PROXY"
Tout est maintenant en place pour faire fonctionner votre application rails sur votre serveur. Il ne vous reste plus qu'a stopper apache-ovh et lancer apache2
Code:
/etc/init.d/apache stop
/etc/init.d/apache2 start
Puis de tester votre application sur un navigateur via
http://www.votre-domaine.com
Voilà, en espérant que celà vous aura servi. J'ai rencontré divers obstacles durant la procédure que je n'ai pas mentionné ici car lié a ma configuration (notemment un problème au lancement d'apache a cause d'un fichier de log innacessible). Si toutefois vous rencontrez un problème, n'hésitez pas a en faire part ici.