Comment configurer Apache pour exécuter PHP en tant que FastCGI sur Ubuntu 12.04 via un terminal?

34

Je suis relativement nouveau dans le monde de la gestion / administration des serveurs Web en ligne de commande Unix.

De nombreux hôtes avec des options d’administration du panneau de configuration vous permettent de modifier le mode d’exécution de PHP avec une option simple.

Les options les plus courantes étant:

  • module apache
  • Application CGI
  • Application FastCGI

Ma question est simple: comment changez-vous cela via la ligne de commande? Je sais qu'il existe de nombreux fichiers de configuration pour Apache.

La chose la plus proche que j'ai trouvée est cette question cependant, la structure des répertoires ne semble pas correspondre à mon système d’exploitation (Ubuntu 12.04).

Je suis assez perplexe sur le fait qu'il ne semble pas y avoir de guide clair que je puisse trouver qui détaille ce processus pour quelque chose qui semble si commun. Pardonnez-moi si cela existe ... Si oui, veuillez me diriger dans la bonne direction.

    
posée Evan Mattson 17.11.2013 - 03:33
la source

4 réponses

19

J'ai enfin trouvé un bon tutoriel pour ce faire. Je décrirai les étapes que j'ai suivies car j'avais déjà installé ma pile LAMP, mais le tutoriel complet est disponible ici .

Remarque pour le nouveau:

Dans le tutoriel, vous commencez par passer à l’utilisateur root avec:

sudo su

Dans mon cas, je préfixais simplement ces commandes sudo au lieu de changer d'utilisateur, donc je documenterai mes pas de cette manière.

Commencer

Etape 1: Installez Apache Worker MPM (Multi-Procesing Modules)

sudo apt-get install apache2-mpm-worker

Cela remplace le préfork que j'avais installé, qui est la valeur par défaut lors de l'installation d'Apache.

Étape 2: Installez PHP5 et les modules nécessaires

sudo apt-get install libapache2-mod-fastcgi php5-fpm php5

À ce stade, vous pouvez avoir une erreur lors de l’installation de 'libapache2-mod-fastcgi':

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package libapache2-mod-fastcgi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source

E: Package 'libapache2-mod-fastcgi' has no installation candidate

Cette partie ne figure pas dans le didacticiel ci-dessus

Pour concilier ceci, le référentiel multiverse doit être ajouté aux sources apt.

Pour ce faire:

sudo nano /etc/apt/sources.list

À quoi j'ai ajouté les lignes suivantes:

deb http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb http://security.ubuntu.com/ubuntu precise-security multiverse

precise dans ce cas fait référence à ma version d'Ubuntu " Precision Pangolin ".

Alors maintenant, sauvegardez ces modifications et retournez au terminal:

sudo apt-get update

et encore:

sudo apt-get install libapache2-mod-fastcgi php5-fpm php5

qui va (devrait) fonctionner maintenant.

Activez maintenant ces modules Apache:

sudo a2enmod actions fastcgi alias

redémarrer apache

sudo service apache2 restart

Étape 3: Configuration d'Apache

Pour que Apache fonctionne avec PHP-FPM, nous avons besoin de la configuration suivante:

<IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
        Require all granted 
    </Directory>
    #directory statement mult be on multiple lines
</IfModule>
  

Remarque:

     

Si vous utilisez une ancienne version d’Apache (version 2.3.x ou antérieure), ne renseignez pas la ligne

   <Directory /usr/lib/cgi-bin> Require all granted </Directory>
     

Vous pouvez vérifier votre version installée avec la commande

apache2 -version

Vous pouvez le mettre dans la configuration globale Apache (il est donc activé pour tous les vhosts), par exemple dans /etc/apache2/conf.d/php5-fpm.conf (ce fichier n'existe pas, vous devez donc le créer), ou vous pouvez le placer dans chaque vhost devrait utiliser PHP-FPM.

Je choisis d’aller sur la route mondiale, alors:

sudo nano /etc/apache2/conf.d/php5-fpm.conf

collez le bloc de code ci-dessus et enregistrez, quittez. Ce nouveau fichier sera automatiquement chargé par la configuration par défaut d'Apache qui charge tous les fichiers du répertoire /etc/apache2/conf.d/ .

redémarrer Apache:

sudo service apache2 restart

Maintenant, créez le fichier PHP suivant dans la racine du document /var/www :

sudo nano /var/www/info.php

Ajouter:

<?php phpinfo();

enregistrer & amp; sortir.

Maintenant, nous appelons ce fichier dans un navigateur (par exemple, http://your-server-ip/info.php )

Sous API serveur , vous devriez voir FPM/FastCGI .

Réussite!

Pour plus d’informations, comme changer PHP-FPM pour utiliser un socket unix au lieu du port TCP par défaut ou comment le configurer pour des hôtes virtuels individuels au lieu de tous, voir le tutoriel source lié en haut.

    
réponse donnée Evan Mattson 16.12.2013 - 16:43
la source
48

Merci de m'avoir donné les réponses précédentes, mais pour faire avancer les choses, je devais combiner les instructions de quelques endroits, alors j'ai pensé écrire un jeu complet de commandes.

Pour ma part, j'utilise Ubuntu 14.04, Apache 2.4 et, par défaut, le modphp est en cours d'exécution, les instructions précédentes ont également laissé de côté la nécessité de désactiver le modphp.

J'ai également trouvé que lien était très informatif et simple.

Lancez les commandes suivantes dans un terminal l’un après l’autre.

D'abord, installez les paquets nécessaires (je laisse de côté php5 car cela suppose qu'il est déjà installé, rajoutez-le pour la première fois). Notez également à partir d'Apache 2.4, vous pouvez utiliser event-mpm à la place de worker, voir lien . Mon exemple montre worker, mais remplacez simplement le mot worker par event si vous préférez l'utiliser.

sudo apt-get install apache2-mpm-worker

sudo apt-get install libapache2-mod-fastcgi php5-fpm

Activez maintenant les mods dont vous avez besoin et désactivez ceux que vous n'avez pas.

sudo a2dismod php5 mpm_prefork

sudo a2enmod actions fastcgi alias mpm_worker

Créez le fichier php5.fcgi et autorisez le serveur Web à l'utiliser.

sudo touch /usr/lib/cgi-bin/php5.fcgi

sudo chown -R www-data:www-data /usr/lib/cgi-bin

Créer une configuration globale pour php5-fpm

sudo nano /etc/apache2/conf-available/php5-fpm.conf

collez ce qui suit (nous utiliserons un socket au lieu de l’adresse IP)

<IfModule mod_fastcgi.c> 
   AddHandler php5.fcgi .php 
   Action php5.fcgi /php5.fcgi 
   Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi 
   FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
   <Directory /usr/lib/cgi-bin>
       Require all granted
   </Directory> 
</IfModule>

Activer le php5-fpm conf

sudo a2enconf php5-fpm

Redémarrez apache et fpm

sudo service apache2 restart && sudo service php5-fpm restart

Selon d’autres instructions, collez les éléments suivants dans un nouveau fichier php navigable sur votre serveur Web.

<?php phpinfo();

Ouvrez le fichier que vous venez d’éditer dans un navigateur Web. Si vous voyez "FPM / FastCGI" à côté de l’API du serveur, vous utilisez maintenant PHP avec FastCGI!

    
réponse donnée JDawgg 23.09.2014 - 00:01
la source
1

Dans Ubuntu 14.04 après avoir effectué les étapes de la réponse acceptée, éditez /etc/apache2/conf-available/php5-fpm.conf

<IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
</IfModule>

Puis exécutez

#sudo a2enconf php5-fpm
#sudo apache2 restart
    
réponse donnée marcanuy 21.09.2014 - 17:34
la source
0

Si quelqu'un le fait sur Ubuntu 16.04 et qu'il est passé de php 7 à php 5.6 (Ondrej), vous devez remplacer certaines lignes (basées sur la réponse de JDawgg):

sudo apt-get install libapache2-mod-fastcgi php5-fpm à:

sudo apt-get install libapache2-mod-fastcgi php5.6-fpm 

sudo a2dismod php5 mpm_prefork à:

sudo a2dismod php5.6 mpm_prefork

sudo nano /etc/apache2/conf-available/php5-fpm.conf à:

sudo vim /etc/apache2/conf-available/php5.6-fpm.conf

Le processus d'installation de php5.6-fpm a déjà créé le fichier, il n'est donc pas nécessaire d'en créer un. Cependant, j'ai supprimé tout le texte existant sur ce fichier car il était destiné à mod_php5.

<IfModule mod_fastcgi.c> 
   AddHandler php5.fcgi .php 
   Action php5.fcgi /php5.fcgi 
   Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi 
   FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization -idle-timeout 3600 
   <Directory /usr/lib/cgi-bin>
       Require all granted
   </Directory> 
</IfModule>

J'ai changé le chemin de /var/run/php5-fpm.sock à /var/run/php/php5.6-fpm.sock car le fichier se trouvait là.

sudo a2enconf php5-fpm à:

sudo a2enconf php5.6-fpm

sudo service apache2 restart & amp; & amp; service sudo php5-fpm restart to:

sudo service apache2 restart && sudo service php5.6-fpm restart

J'espère que cela aide d'autres débutants comme moi:)

    
réponse donnée Nazq 23.10.2016 - 01:35
la source

Lire d'autres questions sur les étiquettes