Wie richte ich PHP mit Nginx, APC und PostgreSQL ein?

9

Ich verwende Ubuntu Server 10.10 und möchte eine Webserverumgebung mit NginX , PHP 5.3.3, PostgreSQL und vorzugsweise APC und PHP Suhosin einrichten.

Ich habe bereits PostgreSQL mit apt-get install postgresqlund Nginx mit eingerichtet apt-get install nginx.

Aber wie richte ich PHP für diese ein? Kann ich dies mit apt-get installtun oder muss ich die Quellen herunterladen und kompilieren? Ich würde es lieber mit machen apt-get.

Ich würde gerne PHP-FPM für Nginx verwenden. Die meisten Tutorials, die ich im Internet gefunden habe, sind alt und kompilieren das PHP, aber dies wird für Produktionsserver nicht empfohlen.

Wie richte ich PHP am einfachsten mit Nginx, APC und PostgreSQL ein? oder zumindest PHP-FPM + Nginx?


AKTUALISIEREN

Ich habe jetzt einen neuen Ubuntu Server 10.10 installiert und den von Peter vorgeschlagenen Befehl mit php5-suhosinhinzugefügt ausgeführt. Nachdem Nginx einwandfrei funktioniert, bearbeite ich die generierte Konfigurationsdatei wie folgt. Nach dem erneuten Laden der neuen Konfigurationsdatei funktioniert Nginx immer noch einwandfrei mit einer index.htmlDatei, aber wenn ich eine index.phpDatei hinzufüge , funktioniert sie nicht mehr. Ich denke, dass dies mit PHP-FPM, dem APC oder etwas PHP-bezogenem zu tun hat. Es könnte aber auch die Konfigurationsdatei für PHP-FPM sein.

Hier ist die Konfigurationsdatei für Nginx, die ich verwende. Das meiste davon wird standardmäßig generiert. Ich habe Kommentare übersprungen.

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
quelle
Bitte machen Sie dies zu einer Antwort und akzeptieren Sie sie dann. Auf diese Weise können wir beide gemeinsam als kombinierte Lösung abstimmen.
Jorge Castro
@Jorge: Dies ist keine Antwort, ich zeige nur meine Konfigurationsdatei, die nicht funktioniert . Peter Smit hat die richtige Lösung in Kombination mit Kommentaren veröffentlicht und ich habe sie als Antwort akzeptiert.
Jonas
Ah mein Fehler, rock weiter!
Jorge Castro

Antworten:

8

Ab Ubuntu 10.10 ist dies mit dem neuen php5-fpm-Paket trivial

Die folgenden Pakete bieten alles, was Sie brauchen

  • nginx - der Webserver
  • php5-fpm - Fast-CGI-PHP-Server
  • php-apc - Das APC-Paket für PHP
  • php5-pgsql - PostgreSQL-Modul für PHP
  • postgresql - Der PostgreSQL-Datenbankserver

Alle zusammen sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Außerdem empfehle ich zu überprüfen, ob Apache2 installiert ist. Wenn ja, löschen Sie es mit einem sudo apt-get remove apache2, um zu vermeiden, dass Apache und Nginx um Port 80 konkurrieren.

Beachten Sie auch, dass der xdebug-Standard ebenso wie php5-fpm auch Port 9000 verwenden möchte. Wenn Sie also xdebug verwenden, ändern Sie diesen Port beispielsweise in 9001

Und als Bonus ein Beispiel für eine Nginx-Konfiguration (platzieren Sie es in / etc / nginx / sites-available und verknüpfen Sie es mit / 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
quelle
Ich habe dies jetzt getan und eine einfache test.phpDatei erstellt, aber es funktioniert nicht. Mein Browser sagt "defekter Link" und im Nginx-Fehlerprotokoll gibt es nur einen Eintrag über "favicon.ico". Ich denke, es gibt etwas in meiner Konfigurationsdatei, aber ich habe wirklich keine Ahnung und es ist ziemlich schwer, den Fehler zu finden.
Jonas
@ Jonas Es könnte sein, dass nginx und php5-fpm noch nicht gestartet sind. In diesem Fall sudo service nginx startund sudo service php5-fpm startsollte den Job machen. Achten Sie natürlich auf mögliche Fehler.
Peter Smit
@ Jonas Ihr Fehlerprotokoll sollte nicht favicon.ico enthalten, zumindest nicht, wenn Sie den Teil empty_gif aus meiner Lösung kopiert haben. Vergessen Sie auch nicht, immer nach der Änderung neu zu starten sudo service nginx reload. Wenn alles andere fehlschlägt, können Sie Ihrer Frage möglicherweise Ihre Konfigurationsdatei hinzufügen.
Peter Smit
Ich habe die Frage mit meiner Konfigurationsdatei für Nginx aktualisiert. Es scheint, dass etwas mit dem PHP-Setup nicht stimmt. Nachdem ich Ihre Zeilen zu Favicon zu meiner Konfigurationsdatei hinzugefügt habe, werden im Nginx-Fehlerprotokoll keine Fehler mehr angezeigt. Nginx funktioniert mit .htmlDateien, aber nicht für .phpDateien.
Jonas
1
@Jonas Eine Seite, die mir geholfen hat, 'saubere' Konfigurationsdateien zu erstellen, ist wiki.nginx.org/Pitfalls . Ignorieren Sie jedoch nicht die Warnung vor der Implementierung von Änderungen, die Sie nicht verstehen.
Peter Smit