mod_proxy_fcgi
Le module mod_proxy_fcgi est nouveau et il permet à apache de se connecter/de transmettre des requêtes à un gestionnaire de processus fastcgi externe comme php fpm. Cela permet une séparation complète entre l'exécution des scripts php et Apache.
Auparavant, nous devions utiliser des modules comme mod_fcgid et mod_fastcgi qui avaient tous des limitations. Mod_fcgid, par exemple, n'a pas correctement utilisé la capacité de gestion des processus de php-cgi alors que mod_fastcgi est un module tiers.
Avec l'arrivée de mod_proxy_fcgi Apache obtient enfin la possibilité de parler proprement aux gestionnaires de processus fastcgi externes, ce qui le rend plus efficace dans la tâche.
La délégation des requêtes php à des serveurs fpm externes réduit considérablement la charge sur les serveurs Web comme apache, ce qui se traduit par une utilisation efficace des ressources de la machine et un traitement plus rapide.
request page.php --> Apache --> Php FPM service --> Le processus Php exécute page.php
Parallèlement à tout cela, php fpm peut exécuter des moteurs de mise en cache d'opcodes comme apc de manière très stable.
Donc, dans cet article, notre tâche consiste à configurer apache + php-fpm à l'aide du connecteur mod_proxy_fcgi.
1. Installer et configurer Apache
Ubuntu 13.10 est déjà livré avec apache 2.4, donc tous les installables se trouvent dans le référentiel lui-même.
Installez Apache si ce n'est déjà fait
$ sudo apt-get install apache2
Activer mod_proxy_fcgi
$ sudo a2enmod proxy_fcgiConsidération du proxy de dépendance pour proxy_fcgi :Activation du module proxy.Activation du module proxy_fcgi.Pour activer la nouvelle configuration, vous devez exécuter :service apache2 restart
Redémarrez Apache
$ sudo service apache2 redémarrer
Configurer les hôtes virtuels
La tâche suivante consiste à configurer un vhost pour utiliser le proxy mod fcgi pour communiquer avec fpm. Les fichiers de configuration vhost sont stockés à l'emplacement suivant
/etc/apache2/sites-available
Entrez-y et créez votre nouveau fichier de configuration vhost en copiant le fichier 000-default.conf fourni avec apache.
$ cd /etc/apache2/sites-available$ sudo cp 000-default.conf monsite.conf$ sudo nano monsite.conf
Il est maintenant temps de configurer l'hôte virtuel. Voici comment j'ai configuré le fichier
..... ServerName fpm.localhost ServerAdmin [email protected] DocumentRoot /var/www/mysite..... ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR} /access.log combiné..... #Include conf-available/serve-cgi-bin.conf ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/ var/www/monsite/$1 Order allow,deny Allow from all AllowOverride FileInfo All # Nouvelle directive nécessaire dans Apache 2.4.3 :Require all allowed Les choses importantes à noter sont :
1. Nom du serveur - Il s'agit du domaine ou du sous-domaine de votre vhost. Dans cet exemple, j'ai utilisé fpm.localhost afin que lors de l'utilisation de ce sous-domaine sur localhost, php fpm soit utilisé.
2. DocumentRoot - Il s'agit de la racine de ce vhost à partir de laquelle les fichiers Web doivent être servis.
3. ProxyPassMatch - Il s'agit de la directive qui indique de transmettre toutes les demandes de fichiers ".php" au serveur fcgi à 127.0.0.1:9000. C'est là que notre gestionnaire de processus php fpm serait exécuté. Plus d'informations à ce sujet dans la section suivante.
L'url fcgi doit contenir le chemin exact vers la racine du document. Sinon, il indiquerait "Fichier introuvable" lors de la demande de fichiers.ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/monsite/$1Le premier paramètre est le modèle à faire correspondre. Ainsi, toutes les URL contenant un ".php" suivi d'une barre oblique d'option et de tout le reste sont mises en correspondance et la partie correspondante est transmise au serveur fcgi fonctionnant à 127.0.0.1:9000.
4. Exiger que tous soient accordés - Après la ligne ProxyPassMatch, nous avons ajouté une section avec les directives Require et AllowOverride. Il est nécessaire à partir d'Apache 2.4
Enregistrez le fichier et activez-le à l'aide de la commande a2ensite qui évite d'avoir à créer le lien symbolique dans le répertoire activé pour les sites.
$ sudo a2ensite monsiteActivation du site monsite. Pour activer la nouvelle configuration, vous devez exécuter :service apache2 reloadRechargez maintenant la configuration apache
$ sudo service apache2 reload * Rechargement du serveur web apache2Cela termine la configuration apache. L'autre moitié de la tâche consiste à configurer php fpm pour qu'il puisse enfin fonctionner.
2. Configurer Php-FPM (gestionnaire de processus FastCGI)
La prochaine chose est de configurer php fpm. Installez-le via synaptic, si ce n'est déjà fait.
$ sudo apt-get install php5-fpmLes fichiers de configuration pour fpm sont situés à
/etc/php5/fpm/etc/php5/fpm$ lsconf.d php-fpm.conf php.ini pool.dLe répertoire pool.d contient le fichier de configuration pour chaque pool fpm et php-fpm.conf est le fichier de configuration principal. Notre seul travail consiste à configurer un pool fpm qui doit être utilisé avec apache ou l'hôte virtuel spécifique.
Le fichier de configuration d'un pool est assez volumineux et de nombreux paramètres peuvent être configurés. Mais dans cet article, nous ne parlerons que des champs importants qui doivent être définis pour que fpm soit opérationnel
; Démarrer un nouveau pool nommé 'www'.; la variable $pool peut être utilisée dans n'importe quelle directive et sera remplacée par le; nom du pool ("www" ici)[www] ; Par préfixe de pool ; Il s'applique uniquement aux directives suivantes : ; - 'slowlog' ; - 'écouter' (unixsocket); - 'chrooté' ; - 'chdir'; - 'php_values' ; - 'php_admin_values' ; Lorsqu'il n'est pas défini, le préfixe global (ou /usr) s'applique à la place.; Remarque :Cette directive peut également être relative au préfixe global. ; Valeur par défaut :none;prefix =/path/to/pools/$pool; Utilisateur/groupe de processus Unix ; Remarque :L'utilisateur est obligatoire. Si le groupe n'est pas défini, le groupe de l'utilisateur par défaut ; sera utilisé.user =groupe éclairé =éclairé ; L'adresse sur laquelle accepter les requêtes FastCGI.; Les syntaxes valides sont : ; 'ip.add.re.ss:port' - pour écouter sur un socket TCP à une adresse spécifique; un port spécifique;; 'port' - pour écouter sur un socket TCP toutes les adresses sur a ; port spécifique;; '/path/to/unix/socket' - pour écouter sur un socket unix.; Remarque :Cette valeur est obligatoire.listen =127.0.0.1:9000 ; Définir le backlog de listen(2).; Valeur par défaut :128 (-1 sur FreeBSD et OpenBSD);listen.backlog =128Créez un nouveau fichier de configuration en copiant le fichier www.conf. Et modifiez les champs comme expliqué ci-dessous.
1. La première option est le nom du pool. Nous l'avons nommé 'www' ici. Nommez-le comme vous le souhaitez ou après le nom de domaine avec lequel il sera utilisé. 'votresite' par exemple. De cette façon, il serait plus facile de s'en souvenir.
2. Configurez l'utilisateur et le groupe avec lesquels ce pool sera exécuté. Lorsque vous configurez plusieurs sites/domaines/hôtes virtuels sur un serveur, vous souhaiterez toujours configurer des comptes d'utilisateurs distincts et un pool correspondant pour chacun d'entre eux. Il s'agit d'une mesure de sécurité essentielle, afin que chaque pool ait les privilèges de son propre utilisateur uniquement.
3. Configurez la prise d'écoute. Il s'agit de la socket sur laquelle le processus maître fpm doit écouter les requêtes entrantes. Il peut s'agir d'un socket unix ou d'un socket tcp. Cependant mod_proxy_fcgi ne supporte pas encore les sockets unix, nous sommes donc limités aux sockets tcp.
Par ici son numéro de port 9000 sur localhost.Redémarrez maintenant fpm
$ sudo service php5-fpm redémarrerMaintenant, le nouveau pool de fpm devrait prendre effet. Vous pouvez voir le nouveau processus de pool dans htop par exemple.
3. Testez la configuration
Maintenant que apache et php fpm sont configurés et configurés, il est temps de tester. Entrez dans le répertoire racine du document et créez un fichier php contenant un appel à la fonction phpinfo() et ouvrez-le dans votre navigateur.
L'"API du serveur" doit être signalée comme "FPM/FastCGI".Maintenant qu'apache et php sont configurés, vous voudrez peut-être installer d'autres choses comme APC, la base de données mariadb, phpmyadmin etc. Parcourez ce site pour trouver des guides pratiques sur ceux-ci.
Ressources
Consultez les liens suivants pour en savoir plus
https://wiki.apache.org/httpd/PHP-FPM