Comment configurer PHP avec Nginx, APC et PostgreSQL?

9

J'utilise Ubuntu Server 10.10 et je voudrais mettre en place un environnement de serveur web avec NginX , PHP 5.3.3, PostgreSQL et de préférence APC et PHP Suhosin.

J'ai déjà configuré PostgreSQL avec apt-get install postgresqlet Nginx avec apt-get install nginx.

Mais comment configurer PHP pour ceux-ci? Puis-je le faire en utilisant apt-get installou dois-je télécharger les sources et les compiler? Je préférerais le faire en utilisant apt-get.

J'aimerais utiliser PHP-FPM pour Nginx. La plupart des tutoriels que j'ai trouvés sur Internet sont anciens et compilent le PHP, mais ce n'est pas recommandé pour les serveurs de production.

Comment configurer PHP le plus facilement avec Nginx, APC et PostgreSQL? ou au moins PHP-FPM + Nginx?


MISE À JOUR

J'ai maintenant installé un nouveau serveur Ubuntu 10.10 et exécuté la commande suggérée par Peter avec l' php5-suhosinajout. Après cela, Nginx fonctionne correctement, puis je modifie le fichier de configuration généré comme ci-dessous. Après avoir rechargé le nouveau fichier de configuration, Nginx fonctionne toujours très bien en utilisant un index.htmlfichier, mais lorsque j'ajoute un index.phpfichier, il s'arrête de fonctionner. Je suppose que cela a à voir avec PHP-FPM, l'APC ou quelque chose de PHP. Mais il pourrait également s'agir du fichier de configuration de PHP-FPM.

Voici le fichier de configuration pour Nginx que j'utilise, la plupart est généré par défaut. J'ai sauté des commentaires.

server {

    listen 80;
    listen [::]:80 default ipv6only=on;

    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    location /favicon.ico {
        empty_gif;
    }

    location / {
        root     /var/www;
        index    index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}
Jonas
la source
Veuillez en faire une réponse et l'accepter, de cette façon, nous pourrons voter ensemble sur les deux en tant que solution combinée.
Jorge Castro
@Jorge: Ce n'est pas une réponse, je montre juste mon fichier de configuration qui ne fonctionne pas . Peter Smit a publié la bonne solution combinée avec des commentaires et je l'ai acceptée comme réponse.
Jonas
Ah mon erreur, fonce!
Jorge Castro

Réponses:

8

À partir d'Ubuntu 10.10, cela est trivial avec le nouveau paquet php5-fpm

Les packages suivants font tout ce dont vous avez besoin

  • nginx - le serveur web
  • php5-fpm - Serveur php Fast-CGI
  • php-apc - Le package APC pour php
  • php5-pgsql - Module PostgreSQL pour PHP
  • postgresql - Le serveur de base de données PostgreSQL

Tous ensemble sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Je suggère également de vérifier si apache2 est installé. Si c'est le cas, supprimez-le avec un sudo apt-get remove apache2pour éviter que Apache et Nginx ne se disputent le port 80.

Notez également que la norme xdebug veut également utiliser le port 9000, tout comme php5-fpm. Donc, si vous utilisez xdebug, changez ce port par exemple en 9001

Et en bonus un exemple de configuration nginx (placez-le dans / etc / nginx / sites-available et liez-le dans / etc / nginx / sites-enabled)

server {
  listen 80;
  server_name site.com;
  access_log /data/log/www/site.com/access.log;
  error_log /data/log/www/site.com/error.log;

  root /data/www_data/site.com/public;
  index index.php;

  location = /favicon.ico {
    empty_gif;
    #return 204;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
  }
}
Peter Smit
la source
Je l'ai fait maintenant et j'ai créé un test.phpfichier simple , mais cela ne fonctionne pas. Mon navigateur dit "lien brisé" et dans le journal des erreurs Nginx, il n'y a qu'une entrée sur le "favicon.ico". Je suppose qu'il y a quelque chose avec mon fichier de configuration, mais je n'en ai vraiment aucune idée et il est assez difficile de trouver l'erreur.
Jonas
@Jonas Il se peut que nginx et php5-fpm ne soient pas encore démarrés. Dans ce cas, sudo service nginx startet sudo service php5-fpm startdevrait faire le travail. Bien sûr, recherchez toute erreur qu'ils pourraient donner.
Peter Smit
@Jonas Votre journal d'erreurs ne doit pas contenir favicon.ico, du moins pas si vous avez copié la partie empty_gif de ma solution. Aussi, n'oubliez pas de redémarrer toujours après le changement (le sudo service nginx reload). Si tout le reste échoue, vous pouvez peut-être ajouter votre fichier de configuration à votre question.
Peter Smit
J'ai mis à jour la question avec mon fichier de configuration pour Nginx, il semble y avoir un problème avec la configuration PHP. Après avoir ajouté vos lignes sur favicon à mon fichier de configuration, je n'obtiens plus d'erreurs dans le journal des erreurs Nginx. Nginx fonctionne avec les .htmlfichiers, mais il ne fonctionne pas pour les .phpfichiers.
Jonas du
1
@Jonas Une page qui m'a aidé à créer des fichiers de configuration «propres» est wiki.nginx.org/Pitfalls , mais n'ignorez pas l'avertissement concernant l'implémentation de changements que vous ne comprenez pas.
Peter Smit