Configurer un serveur FreeBSD de A à  Z pour Ruby On Rails avec Nginx, Thin...

muqaddarmuqaddar Administrateur
juillet 2009 modifié dans Langages Web & serveurs #1
Je dispose actuellement d'un serveur dédié loué chez l'hébergeur français <a href="http://www.ovh.fr">OVH</a>; pour mes applications Web. Il s'agit d'une machine dotée de 4Go de Ram fonctionnant avec des Core 2 Duo. Nous allons configurer la bête sous <a href="http://www.freebsd.org">FreeBSD</a>, noyau UNIX proche de celui de Mac OS X, pour héberger des sites réalisés avec <a href="http://www.rubyonrails.org">Ruby On Rails</a>.

Côté serveur et cluster, nous allons installer <a href="http://wiki.codemongers.com/NginxFr">Nginx</a>; et <a href="http://code.macournoyer.com/thin/">Thin</a>, un duo qui a la côté en ce moment du côté des développeurs RoR !

Pour les mises à  jour du site et le déploiement, nous utiliserons <a href="http://subversion.tigris.org/">SVN</a>; et <a href="http://www.capify.org">Capistrano</a>. Pour être entièrement dans le mouv des gourous Rails, il aurait été préférable d'utiliser <a href="http://git.or.cz/">Git</a>, mais chaque chose en son temps...

Enfin pour être complet et surtout pouvoir utiliser <a href="http://www.phpmyadmin.net/">phpMyAdmin</a>; en exécutant des scripts .php avec fastCGI, nous installerons <a href="http://www.php.net">PHP</a>; et le serveur <a href="http://www.lighttpd.net/">Lighttpd</a>.

Avant de vous lancer dans cette folle aventure, sachez qu'il faut en connaà®tre un minimum en admin système. J'ai perdu énorménent de temps malgré la pléiade de tutorials, articles, documents disponibles sur la toile. Les choix ne sont pas évidents et les UNIX bien trop nombreux... avec leurs différences.

A savoir : dans cet article, X.X.X.X est en fait l'adresse IP de votre (mon) serveur dédié, et mon-domaine représente le domaine à  héberger (sans l'extension).

1-Partitionnement du disque dur

Dans cette première étape, nous allons prendre le serveur en main. J'ai choisi la distribution FreeBSD 6.2 (la 7.0 étant encore en beta). OVH dispose d'une interface d'administration très simple d'utilisation qui permet la réinstallation et le partitionnement de sa machine. Voici les choix effectués, et les tailles correspondantes :

ufs / 10000 Mo<br />swap none 4000 Mo<br />ufs /usr 10000 Mo<br />ufs /home 726000 Mo<br />


Vous l'aurez deviné (ou plutôt calculé), la taille du disque dur est bien de 750 Go, de quoi voir venir... Le tout fonctionne en RAID 1 pour plus de sécurité. Les données sont donc dupliquées d'un disque à  l'autre en permanence (ce qui fait perdre un peu de capacité de calcul, mais c'est pour la bonne cause... et surtout pour être plus serein en cas de pépin hardware).

2-Passer le shell en bash

Après quelques dizaines de minutes, nous pouvons enfin nous connecter en root par ssh (là , je vous laisse faire avec les données envoyées par votre hébergeur par email).
Pour des questions de préférences personnelles, mais aussi et surtout pour être en adéquation avec mon système local MacOS X (qui est aussi un BSD...), nous passons du C Shell au bash :

# cd /usr/ports/shells/bash<br /># make install clean<br /># chsh -s /usr/local/bin/bash root<br /># exit<br />


Il vous suffit ensuite de vous reloguer par ssh pour voir votre nouveau prompt tout beau tout neuf.

3-Mettre à  jour les ports de FreeBSD

C'est très simple, deux commandes suffisent :

# portsnap -s portsnap3.freebsd.org fetch<br /># portsnap -s portsnap3.freebsd.org extract<br />

Le téléchargement prend un peu de temps (en fait beaucoup...). Vous avez le droit d'aller vour servir un café ou de prendre une bière (cela dépend de l'heure), mais pas d'aller faire la sieste car vous avez un site à  terminer pour un client...

4-Changer d'éditeur de texte

Malheureusement, je ne connais ni vi, ni emacs, nous allons donc installer pico (dont je me sers encore une fois déjà  sur MacOS X) car je n'ai pas le temps (ni l'envie) d'apprendre les deux autres. Cela amusera sans doute les unixiens les plus chevronnés, mais je n'en aurai besoin que pour configurer 2 ou 3 fichiers après tout. Bien sûr si vous comptez utiliser vi, cette étape n'est pas utile.

Il faut d'abord installer une librairie /usr/share/dict/words supplémentaire. C'est parti :

# sysinstall


Dans les menus :

- Allez à  Configure
- Allez à  Distributions
- Sélectionnez dict puis validez
- Choisissez un serveur FTP puis validez
- Sortez de sysinstall quand c'est fini

Vous pouvez maintenant installer pico :

# cd /usr/ports/editors/pico<br /># make install clean<br />


Puis laissez les options choisies par défaut.

5-Créer un utilisateur

Pour accueillir nos sites, nous allons créer un utilisateur qui lui même contiendra un répertoire /webapp.

Auparavant, nous créons un groupe devs à  qui appartiendra l'utilisateur (et qui nous servira plus tard pour svn).

# sysinstall


Dans les menus :

- Allez à  Configure
- Allez à  User Management
- Allez à  Add a new user group to the system
- Saisissez un nom de groupe (devs dans mon cas)
- Sortez de sysinstall


Céation de l'utilisateur :

# adduser


puis saisissez les informations requises, sans omettre devs pour le groupe de l'utilisateur, ni de choisir le bash comme shell. Cela donne au final :

Username&nbsp;  : hoksitan<br />Password&nbsp;  : *****<br />Full Name&nbsp; : hoksitan<br />Uid&nbsp; &nbsp; &nbsp; &nbsp; : 1001<br />Class&nbsp; &nbsp; &nbsp; :<br />Groups&nbsp; &nbsp;  : devs<br />Home&nbsp; &nbsp; &nbsp;  : /home/hoksitan<br />Shell&nbsp; &nbsp; &nbsp; : /usr/local/bin/bash<br />Locked&nbsp; &nbsp;  : no<br />


Maintenant déconnectez-vous de root sur le SSH puis connectez vous avec votre nouveau nom d'utilisateur (hoksitan pour moi) en entrant votre mot de passe utilisateur bien sûr :

# exit<br /># ssh hoksitan@X.X.X.X<br />


Créez un répertoire webapps ainsi qu'un autre répertoire dans celui-ci qui accueillera le premier de nos sites :

# mkdir webapps<br /># cd webapps<br /># mkdir mon-domaine<br />


Il est important de créer ces dossiers avec les droits utilisateur et non root, pour SVN et Capistrano.

6-SSH Public/Private key authentification

Pour ne pas avoir à  retaper notre mot de passe à  chaque connexion ssh avec notre compte utilisateur, ou pour ne pas avoir à  le taper à  chaque déploiement avec Capistrano, nous allons renseigner une clé publique SSH pour l'utilisateur hoksitan.

Toujours logué avec votre nom d'utilisateur, créez un dossier .ssh dans celui-ci :

# mkdir .ssh


Sur le serveur de développement (en local donc), et seulement si vous n'avez pas encore de clé publique créée (ls -al ~/.ssh/ pour vérifier), saisissez :

# ssh-keygen -t dsa


Connecté en root, entrez ensuite les lignes suivantes pour copier votre clé locale sur le serveur de production :

# scp ~/.ssh/id_dsa.pub hoksitan@X.X.X.X:.ssh/authorized_keys<br /># exit<br />


puis testez en vous reconnectant avec le login utilisateur par la suite. Maintenant, vous ne devriez plus avoir à  taper votre mot de passe, ni par ssh, ni pour SVN, ni pour Capistrano (qui utilisera ssh et svn).

A cette étape, la configuration de FreeBSD en elle-même est terminée. Félicitations !

7-Installer MySQL, Ruby, Rails et Gem

Connectez-vous en root pour installer la suite des outils nécessaires pour notre serveur Ruby On Rails à  commencer par le serveur de bases de données <a href="http://www-fr.mysql.com/">MySQL 5</a> :
# cd /usr/ports<br /># portinstall databases/mysql50-server<br />


Pour démarrer et arrêter MySQL :

# /usr/local/etc/rc.d/mysql-server start<br /># /usr/local/etc/rc.d/mysql-server stop<br />


Empressons nous de donner un mot de passe root à  MySQL (en remplaçant MYPASSWORD par le mot de passe désiré) :

# mysqladmin -u root password MYPASSWORD


Puis installez *Ruby, Rails et Gem* :

# portinstall www/rubygem-rails


Vous pouvez confirmer l'options _MemCached_ dans la boà®te de dialogue qui s'ouvre.

Maintenant, vérifiez les versions installées par les ports :

# ruby -v<br />ruby 1.8.5 (2006-08-25) [i386-freebsd6]<br /># rails -v<br />Rails 1.2.6<br /># gem -v<br />1.0.1<br />


Empressons-nous de mettre à  jour Rails par les gem :

# gem install rails --include-dependencies


et testons à  nouveau la version :

# rails -v<br />Rails 2.1.0<br />


Oh ! Rails 2.1 est sorti ! Magnifique.

8-Installer ImageMagick, Rmagick et RedCloth

Vous allez maintenant installer et compiler <a href="http://www.imagemagick.org/">ImageMagick</a>; (autre pause café ?) :

# cd /usr/ports/graphics/ImageMagick<br /># make install clean<br />


Confirmez la boà®te de dialogue.

Puis installons son compère indispensable, le bien nommé *Rmagick* :

# gem install rmagick

ainsi que mon deuxième gem favori <a href="http://whytheluckystiff.net/ruby/redcloth/">RedCloth</a>; pour pouvoir écrire en mode Textile :

# gem install RedCloth


9-Installer Nginx et Thin

C'est au tour de <a href="http://nginx.net/">Nginx</a>; (qui remplacera dans notre cas Apache). Il faut dire que Nginx a le vent en poupe dernièrement (plus facile à  configurer, plus réactif) :

# portinstall www/nginx


Confirmons la boà®te de dialogue avec les options par défaut.

Ensuite, nous allons installer le fameux <a href="http://code.macournoyer.com/thin/">Thin</a>; qui est un server web léger, performant et stable, et qui remplacera <a href="http://mongrel.rubyforge.org/">Mongrel</a>; et son mongrel-cluster (autre solution possible).

# gem install thin


Profitez-en pour l'installer sur votre machine locale également, nous en aurons besoin.
Nous configurerons Nginx et Thin un peu plus tard.

10-SVN et Capistrano

Pour expédier les fichiers de nos sites sur le serveur et déployer les versions désirées, nous allons utiliser le duo <a href="http://subversion.tigris.org">SVN</a>; + <a href="http://capify.org/">Capistrano</a>; :

Installez d'abord SVN :

# cd /usr/ports/devel/subversion<br /># make install clean<br />


puis Capistrano qui est un gem :

# gem install -y capistrano


Installez-le aussi en local, nous en aurons besoin.

11-Configuration des répertoires source et destination, qui fait quoi, et dans quel ordre ?

Maintenant que tout est installé, nous allons créer un dossier svn de dépôt qui recevra les sites avant le déploiement par Capistrano.

Logué en root, créez un répertoire général pour svn :

# mkdir /var/svn<br /># chmod -R 775 /var/svn/<br /># cd /var/svn<br />


Puis nous créons un dossier pour recevoir notre site, donnons les droits au groupe devs (donc à  hoksitan également) et vérifions que tout est bien en place :

# svnadmin create mon-domaine<br /># chmod -R 775 /var/svn/mon-domaine<br /># chown -R root:devs /var/svn/mon-domaine<br /># ls -al mon-domaine<br />


Avec la dernière commande, nous devrions voir les fichiers installés par SVN dans le répertoire de notre site.

En local, nous nous plaçons dans le répertoire qui accueillera le site, puis faisons un CheckOut pour le rapatrier :

# cd ~/Sites/webapps<br /># svn co svn+ssh://hoksitan@X.X.X.X/var/svn/mon-domaine<br /># cd mon-domaine<br />


Vous pouvez faire un svn info en local pour voir le repository, le path et le numéro de version. Tout semble s'être bien passé.

Ajoutez 3 répertoires "classiques" pour SVN :

# mkdir trunk<br /># mkdir branches<br /># mkdir tags<br />


Maintenant, nous pouvons, soit créer une nouvelle application avec la commande rails app, soit déposer les fichiers et dossiers de l'application que nous voulons déverser sur le serveur (ce qui est mon cas). Dans tous les cas, il faut se placer dans le dossier trunk.

Je ne vais pas faire un cours sur les bases de SVN, mais vous pouvez ajouter vos fichiers au contrôle de versions avec la commande svn add. Ensuite, vous pouvez faire votre premier commit, c'est-à -dire envoyer les fichiers sur le serveur de production ! Cela tombe bien, c'est exactement ce que l'on veut faire !

# cd ~/Sites/webapps/mon-domaine<br /># svn status<br /># svn add trunk<br /># svn commit -m &quot;Import initial&quot;<br /># svn update<br />


Nous allons maintenant signaler à  SVN d'ignorer certains fichiers et dossiers à  mettre à  jour :

# cd trunk<br /># svn propset svn:ignore &quot;*.log&quot; log/<br /># svn propset svn:ignore &quot;*&quot; tmp/<br />


12-L'heure de la capification a sonné !

Il est maintenant temps de passer notre projet sous Capistrano. Une seule commande suffit (en local) :

# cd trunk<br /># capify .<br />


Cela va générer 2 fichiers. Le plus important est deploy.rb que l'on va remplir un peu plus tard.

13-Configurer Nginx pour Thin

La partie délicate commence. Nous allons éditer le fichier /usr/local/etc/nginx.conf qui contiendra les différents sites que notre serveur gérera.

Sur le serveur de production (et en mode root) :

# pico /usr/local/etc/nginx/nginx.conf


En haut du fichier, passez le nombre de workers nginx à  2 :

# number of nginx workers<br />worker_processes&nbsp; 2;<br />


Et ajoutez un site de cette façon (mettez le à  jour avec vos sites ET vos bons répertoires...) :

# mon-domaine<br />upstream mon-domaine {<br />&nbsp; server 127.0.0.1:4000;<br />&nbsp; server 127.0.0.1:4001;<br />&nbsp; server 127.0.0.1:4002;<br />}<br /><br />server {<br />&nbsp; listen 80;<br />&nbsp; server_name mon-domaine.com www.mon-domaine.com;<br />&nbsp; root /home/hoksitan/webapps/mon-domaine/current/public/;<br />&nbsp; index index.html;&nbsp;  <br /><br />&nbsp; access_log /home/hoksitan/webapps/mon-domaine/current/log/nginx_access.log;<br />&nbsp; error_log /home/hoksitan/webapps/mon-domaine/current/log/nginx_error.log;<br /><br />&nbsp; location / {<br />&nbsp; &nbsp; proxy_set_header&nbsp; X-Real-IP&nbsp; $remote_addr;<br />&nbsp; &nbsp; proxy_set_header&nbsp; X-Forwarded-For $proxy_add_x_forwarded_for;<br />&nbsp; &nbsp; proxy_set_header Host $http_host;<br />&nbsp; &nbsp; proxy_redirect false;<br /><br />&nbsp; &nbsp; if (-f $request_filename/index.html) {<br />&nbsp; &nbsp; &nbsp; rewrite (.*) $1/index.html break;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (-f $request_filename.html) {<br />&nbsp; &nbsp; &nbsp; rewrite (.*) $1.html break;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (!-f $request_filename) {<br />&nbsp; &nbsp; &nbsp; proxy_pass http://mon-domaine;<br />&nbsp; &nbsp; &nbsp; break;<br />&nbsp; &nbsp; }<br />&nbsp; }<br />}<br />


Pour rendre le démarrage automatique de Nginx et Mysql lorsque le serveur est rebooté, ajouter ces lignes dans /etc/rc.conf :

# pico /etc/rc.conf


mysql_enable=&quot;YES&quot;<br />memcached_enable=&quot;YES&quot;<br />nginx_enable=&quot;YES&quot;<br />


Et pour démarrer ou arrêter nginx :

# /usr/local/etc/rc.d/nginx stop<br /># /usr/local/etc/rc.d/nginx start<br />


Dans cet exemple, nous indiquons à  Nginx d'utiliser 3 ports (4000, 4001, 4002) pour le site mon-domaine.com. Ces 3 ports sont en fait les 3 instances de Thin. Voyons pourquoi dans l'étape suivante.

14-Configurer Thin

Maintenant, on crée le fichier de configuration de Thin. Attention, je le crée en local, mais le chemin indiqué est bien celui du site sur le serveur FreeBSD !

# thin config -C config/thin.yml -c /home/hoksitan/webapps/mon-domaine/current&nbsp; --servers 3 -e production -p 4000<br />


Voici son contenu :

---<br />pid: tmp/pids/thin.pid<br />log: log/thin.log<br />timeout: 30<br />max_conns: 1024<br />port: 4000<br />chdir: /home/hoksitan/webapps/mon-domaine/current<br />environment: production<br />max_persistent_conns: 512<br />servers: 3<br />daemonize: true<br />address: 0.0.0.0<br />


Il y a plusieurs choses à  remarquer. Premièrement, nous avons bien 3 instances (3 servers) qui commenceront au port 4000. Ensuite, le répertoire défini est celui du site déployé (/current) car c'est le répertoire utilisé par Capistrano pour la version courante (en ligne) du site. Et l'environnement rails précisé est bien production.

15-Configurer Capistrano et son deploy.rb... et déployer !

Je crois que j'ai passé un temps fou à  trouver comment il fallait configurer ce fichier pour Thin.
Voilà  au final, la tête de mon fichier deploy.rb :

default_run_options[:pty] = true<br /><br />set :application, &quot;mon-domaine&quot;<br />set :domain, &quot;X.X.X.X&quot;<br />set :user, &quot;hoksitan&quot;<br /><br />set :scm_username, &quot;hoksitan&quot;<br />set :scm_password, &quot;PASSWORD&quot;<br /><br />set :repository, &quot;svn+ssh://hoksitan@X.X.X.X/var/svn/#{application}/trunk&quot;<br />set :deploy_to, &quot;/home/hoksitan/webapps/#{application}&quot;<br /><br />role :web, domain<br />role :app, domain<br />role :db, domain, :primary =&amp;gt; true<br /><br /># =============================================================<br /># Application Server Settings (Thin or Mongrel)<br /># =============================================================<br />set :app_server, :thin<br />set :thin_conf, &quot;#{shared_path}/config/thin.yml&quot;<br /><br />namespace :deploy do<br />&nbsp; %w(start stop restart).each do |action|<br />&nbsp; &nbsp;  desc &quot;#{action} the Thin processes&quot;<br />&nbsp; &nbsp;  task action.to_sym do<br />&nbsp; &nbsp; &nbsp;  find_and_execute_task(&quot;thin:#{action}&quot;)<br />&nbsp; &nbsp; end<br />&nbsp; end<br />end<br />namespace :thin do<br />&nbsp; %w(start stop restart).each do |action|<br />&nbsp; desc &quot;#{action} the app&#39;s Thin Cluster&quot;<br />&nbsp; &nbsp; task action.to_sym, :roles =&amp;gt; :app do<br />&nbsp; &nbsp; &nbsp; run &quot;thin #{action} -c #{deploy_to}/current -C #{deploy_to}/current/config/thin.yml&quot;<br />&nbsp; &nbsp; end<br />&nbsp; end<br />end<br /><br /># =============================================================<br /># SHARED DOCS<br /># =============================================================<br /><br />set :chmod755, %w(app config db lib public vendor script tmp public/dispatch.cgi public/dispatch.fcgi public/dispatch.rb)<br /><br />task :after_setup, :roles =&amp;gt; [:web, :app] do<br />&nbsp; run &quot;mkdir -m 775 #{shared_path}/config&quot;<br />&nbsp; run &quot;mkdir -m 775 #{shared_path}/upload&quot;<br />end<br /><br />task :after_deploy do<br />&nbsp; chmod755.each do |item|<br />&nbsp; &nbsp; run &quot;chmod 755 #{current_path}/#{item}&quot;<br />&nbsp; end<br />&nbsp; # upload<br />&nbsp; run &quot;rm -rf #{release_path}/public/upload&quot;<br />&nbsp; run &quot;ln -nfs #{shared_path}/upload #{release_path}/public/upload&quot;<br />end<br />


Quelques remarques :

-Le déploiement ne marchait pas sans la première ligne : default_run_options[:pty] = true
or j'avais lu que cette ligne n'était plus nécessaire après Capistrano 2.1, ce qui est mon cas...
-J'ai choisi d'intégrer le login/password SVN, (pas forcément le même que celui demandé par SSH). Au final, et grâce à  la clé publique SSH, je ne rentre plus aucun login ni mot de passe pour déployer.
-Le serveur choisi est bien Thin, et l'on indique où est le fichier de configuration thin.yml créé précédemment.
-Enfin les 2 _namespaces_ lancent le Thin Cluster après le déploiement.


Nous sommes (en théorie) en mesure de déployer notre site maintenant. N'oubliez pas de faire un commit pour les nouveaux fichiers ajoutés (après un _svn add_ bien sûr) :

# svn commit -m &quot;thin.yml deploy.rb et autres...&quot;<br /># cap deploy:setup<br /># cap deploy<br />


Note : le cap deploy:setup crée les répertoires de base pour Capistrano (shared, releases...) dans le répertoire de votre site.

Mettre à  jour votre site est maintenant un jeu d'enfants ! Un svn commit puis un cap deploy est le tour est joué! C'est certes un peu long à  mettre en oeuvre mais tellement maniable par la suite !

Pour exécuter une migration, placer vous dans le dossier /current de votre site puis :

# RAILS_ENV=&quot;production&quot; rake db:migrate


16-Envoyer un pigeon voyageur à  notre nom de domaine

C'est bien joli tout ça, mais comment notre nom de domaine va-t-il savoir où se trouve notre site (et surtout notre serveur)? Il va falloir lui dire.
Pour ma part, j'achète mes noms de domaine chez gandi et ensuite je dispatche entre serveurs dédiés ou hébergements mutualisés.

Pour faire pointer le domaine sur un serveur dédié, il faut modifier les zones chez votre registrar, ce qui donne dans mon cas :

@ A X.X.X.X<br />www A X.X.X.X<br />


Après quelques heures (dû au temps de propaganation des DNS), l'adresse pointera bien sur l'ip de notre serveur. Or, à  l'arrivée, nous avons demandé à  Nginx d'écouter le port 80 (http). Nginx regarde donc dans son fichier de configuration quels noms de domaines sont associés à  quels répertoires. Ce n'est pas plus compliqué !

17-PHP, Lighttpd et PhpMyAdmin sont dans un bateau

J'ai du mal à  me passer de phpMyAdmin pour gérer mes tables et mes bases (même si je me sers des migrations). Je vais donc installer PHP, PhpMyAdmin et le serveur Lighttpd qui lancera les scripts PHP via fastCGI.

En mode root, sur le serveur de production, on installe ces 3 "paquets" :

# portinstall lang/php5<br /># portinstall databases/phpmyadmin<br /># cd /usr/ports/www/lighttpd<br /># make install clean<br />


Le répertoire PhpMyAdmin s'installe ici : /usr/local/www/phpMyAdmin

Pour rendre le démarrage du serveur lighttpd automatique, il faut ajouter cette ligne dans /etc/rc.conf :

lighttpd_enable=&quot;YES&quot;


Il est maintenant nécessaire de créer un répertoire pour les logs de lighty et de configurer le fichier lighttpd.conf :

# mkdir /var/log/lighttpd<br /># chmod 777 /var/log/lighttpd<br />


puis :

# pico /usr/local/etc/lighttpd.conf


Je ne mets pas tout le fichier de conf dans cet article, mais voilà  ce qu'il faut changer :

Décommentez les modules requis :

server.modules = (<br />&nbsp; &quot;mod_rewrite&quot;,<br />&nbsp; &quot;mod_access&quot;,<br />&nbsp; &quot;mod_fastcgi&quot;,<br />&nbsp; &quot;mod_proxy&quot;,<br />&nbsp; &quot;mod_accesslog&quot; )<br />


Changez le répertoire root (celui où se trouve PMA) :

server.document-root = &quot;/usr/local/www/&quot;


Passez le serveur sur le port 81 :

## bind to port (default: 80)<br />server.port = 81<br />


Décommentez le module fast-cgi, pour l'utiliser :

fastcgi.server = ( &quot;.php&quot; =&amp;gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ( &quot;localhost&quot; =&amp;gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  (<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;socket&quot; =&amp;gt; &quot;/tmp/php-fastcgi.socket&quot;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;bin-path&quot; =&amp;gt; &quot;/usr/local/bin/php-cgi&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  )<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  )<br />


Enfin, changer la dernière ligne pour le port 81 :

$SERVER[&quot;socket&quot;] == &quot;0.0.0.0:81&quot; { }


Enregistrez le nouveau fichier de conf de Lighttpd.
Maintenant nous allons indiquer à  Nginx que nous voulons transférer les requêtes du répertoire /phpMyAdmin au port 81 géré par Lighttpd, qui lui, lancera PHP via fast-cgi (je sais, ça paraà®t compliqué !).

Pour cela, il faut créer un nouvel item server {} :

# fait tourner phpMyAdmin avec Lighttpd lancé sur le port 81 par une passerelle proxy<br />server {<br />&nbsp; listen 80;<br />&nbsp; server_name X.X.X.X;<br />&nbsp; location /phpMyAdmin {<br />&nbsp; &nbsp; proxy_pass http://127.0.0.1:81;<br />&nbsp; }<br />}<br />


Ainsi, chaque requête vers http://X.X.X.X/phpMyadmin sera interprétée par Lighttpd. Noter que rien n'empêche de créer un proxy_pass pour phpMyAdmin sur chaque site, mais c'est moins propre à  mes yeux.

Maintenant, il ne vous reste qu'à  lancer Lighttpd (notez la commande pour l'arrêter également) :

# /usr/local/etc/rc.d/lighttpd start<br /># /usr/local/etc/rc.d/lighttpd stop<br />


Evidemment, il faut aussi configurer le fichier config.inc.php dans le répertoire de phpMyAdmin. Mais ça, c'est un classique du genre, je vous laisse faire tout seul.

Et voilà , vous devez normalement pouvoir éxécuter du PHP également sur votre nouveau serveur !

Voilà , c'est terminé, si vous en êtes là , c'est que vous avez bien bossé !

N'hésitez pas à  me signaler des erreurs ou approximations. J'ai appris beaucoup de choses en configurant ce serveur, il peut donc y avoir quelques inexactitudes.
Connectez-vous ou Inscrivez-vous pour répondre.