OVH Community, votre nouvel espace communautaire.

[HOW-TO] Apache-Mongrel-Rails pour Gentoo


tombabibel
17/01/2010, 21h53
J'ai un problème. Je n'arrive pas à utiliser passenger a cause de la version d'apache -ovh.
Quand j'ajoute
Code:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /usr/bin/ruby18
il me dit qu'il ne peu pas charger "mod_passenger.so". C'est normal j'ai regarder il n'existe pas. Quelqu'un aurait une idée svp ?

sunny
01/11/2007, 13h27
Je vais essayer, mais j'aimerais bien conserver mon apache-ovh sur le port 1000 pour la maintenance. Est-ce que tu penses que c'est "facile" ?
Le pb avec la realease d'ovh c'est vraiment l'absence de la version 2.2 d'apache et du mod_proxy_balancer.
Parceque j'arrive à faire tourner 1 instance de mongrel derrière mon apache-ovh mais ça s'arrete' là.

Juke
02/08/2007, 14h59
Hello,

Je viens de tenter l'install', ca coince à la 2ème manip ... apparemment ya pas gem sur la release 2 ... :-(

++

Kusanar
24/06/2007, 16h48
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.

Code:
emerge ruby
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"/

Code:
rails "mon_appli"
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.

Code:
rake db:migrate
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.