Come configurare PHP con Nginx, APC e PostgreSQL?


9

Uso Ubuntu Server 10.10 e vorrei creare un ambiente web server con NginX , PHP 5.3.3, PostgreSQL e preferibilmente APC e PHP Suhosin.

Ho già installato PostgreSQL con apt-get install postgresqle Nginx con apt-get install nginx.

Ma come posso impostare PHP per questi? Posso farlo usando apt-get installo devo scaricare i sorgenti e compilarlo? Preferirei farlo usando apt-get.

Mi piacerebbe usare PHP-FPM per Nginx. La maggior parte dei tutorial che ho trovato su Internet sono vecchi e compilano il PHP, ma questo non è raccomandato per i server di produzione.

Come posso configurare più facilmente PHP con Nginx, APC e PostgreSQL? o almeno PHP-FPM + Nginx?


AGGIORNARE

Ora ho installato un nuovo Ubuntu Server 10.10 ed eseguito il comando suggerito da Peter con l' php5-suhosinaggiunta. Dopodiché Nginx funziona bene, quindi modifico il file di confiugrazione generato come segue. Dopo aver ricaricato il nuovo file di configurazione, Nginx funziona ancora bene usando un index.htmlfile, ma quando aggiungo un index.phpfile smette di funzionare. Immagino che ciò abbia a che fare con PHP-FPM, l'APC o qualcosa legato a PHP. Ma potrebbe essere anche il file di configurazione per PHP-FPM.

Ecco il file di configurazione per Nginx che sto usando, la maggior parte di esso è generato per impostazione predefinita. Ho saltato i commenti.

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;
    }

}

Per favore, fai in modo che questa sia una risposta e poi accettala, in questo modo possiamo votare entrambe insieme come soluzione combinata.
Jorge Castro,

@Jorge: questa non è una risposta, sto solo mostrando il mio file di configurazione che non funziona . Peter Smit ha pubblicato la soluzione corretta unita a commenti e l'ho accettata come risposta.
Jonas,

Ah mio errore, continua!
Jorge Castro,

Risposte:


8

A partire da Ubuntu 10.10 questo è banale con il nuovo pacchetto php5-fpm

I seguenti pacchetti fanno tutto il necessario

  • nginx - il server web
  • php5-fpm - Server php Fast-CGI
  • php-apc - Il pacchetto APC per php
  • php5-pgsql - Modulo PostgreSQL per PHP
  • postgresql - Il server di database PostgreSQL

Tutti insieme sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

Inoltre suggerisco di verificare se apache2 è installato. In tal caso, eliminalo con un sudo apt-get remove apache2per evitare che apache e nginx competano per la porta 80.

Nota anche che lo standard xdebug vuole usare anche la porta 9000, proprio come php5-fpm. Quindi se usi xdebug, cambia quella porta per esempio a 9001

E come bonus una configurazione di esempio nginx (posizionalo in / etc / nginx / sites-available e collegalo in / 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;
  }
}

L'ho fatto ora e ho creato un test.phpfile semplice , ma non funziona. Il mio browser dice "link non funzionante" e nel registro degli errori di Nginx è presente solo una voce relativa a "favicon.ico". Immagino che ci sia qualcosa nel mio file di configurazione, ma non ne ho davvero idea ed è abbastanza difficile trovare l'errore.
Jonas,

@Jonas È possibile che nginx e php5-fpm non siano ancora stati avviati. In tal caso, sudo service nginx starte sudo service php5-fpm startdovrebbe fare il lavoro. Ovviamente, cerca gli errori che potrebbero dare.
Peter Smit,

@Jonas Il registro degli errori non deve contenere favicon.ico, almeno non se hai copiato la parte empty_gif dalla mia soluzione. Inoltre, non dimenticare di riavviare sempre dopo la modifica (il sudo service nginx reload). Se tutto il resto fallisce, forse potresti aggiungere il tuo file di configurazione alla tua domanda.
Peter Smit,

Ho aggiornato la domanda con il mio file di configurazione per Nginx, sembra che ci sia qualcosa di sbagliato nell'installazione di PHP. Dopo aver aggiunto le tue righe su favicon al mio file di configurazione non ho più alcun errore nel registro degli errori di Nginx. Nginx funziona con i .htmlfile ma non funziona con i .phpfile.
Jonas,

1
@Jonas Una pagina che mi ha aiutato a creare file di configurazione 'puliti' è wiki.nginx.org/Pitfalls , ma non ignorare l'avvertimento sull'implementazione di modifiche che non si capiscono.
Peter Smit,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.