¿Cómo configurar PHP con Nginx, APC y PostgreSQL?

9

Uso Ubuntu Server 10.10 y me gustaría configurar un entorno de servidor web con NginX , PHP 5.3.3, PostgreSQL y preferiblemente APC y PHP Suhosin.

Ya he configurado PostgreSQL con apt-get install postgresqly Nginx con apt-get install nginx.

Pero, ¿cómo configuro PHP para estos? ¿Puedo hacer esto usando apt-get installo tengo que descargar las fuentes y compilarlo? Preferiría hacerlo usando apt-get.

Me gustaría usar PHP-FPM para Nginx. La mayoría de los tutoriales que he encontrado en Internet son antiguos y compilan el PHP, pero esto no se recomienda para servidores de producción.

¿Cómo configuro PHP más fácilmente con Nginx, APC y PostgreSQL? o al menos PHP-FPM + Nginx?


ACTUALIZAR

Ahora he instalado un nuevo Ubuntu Server 10.10 y ejecuté el comando que Peter sugirió con php5-suhosinagregado. Después de eso, Nginx funciona bien, luego edito el archivo de configuración generado de la siguiente manera. Después de volver a cargar el nuevo archivo de configuración, Nginx todavía funciona bien con un index.htmlarchivo, pero cuando agrego un index.phparchivo, deja de funcionar. Supongo que esto tiene que ver con PHP-FPM, el APC o algo relacionado con PHP. Pero también podría ser el archivo de configuración para PHP-FPM.

Aquí está el archivo de configuración para Nginx que estoy usando, la mayor parte se genera por defecto. Me he saltado los comentarios.

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
fuente
Responda a esto y luego acéptelo, de esa manera podremos votar juntos a ambos como la solución combinada.
Jorge Castro
@Jorge: Esta no es una respuesta, solo estoy mostrando mi archivo de configuración que no funciona . Peter Smit publicó la solución correcta combinada con comentarios y la acepté como respuesta.
Jonas
¡Ah, mi error, sigue adelante!
Jorge Castro

Respuestas:

8

A partir de Ubuntu 10.10, esto es trivial con el nuevo paquete php5-fpm

Los siguientes paquetes hacen todo lo que necesitas

  • nginx - el servidor web
  • php5-fpm - Servidor php Fast-CGI
  • php-apc - El paquete APC para php
  • php5-pgsql - Módulo PostgreSQL para PHP
  • postgresql - El servidor de base de datos PostgreSQL

Todos juntos sudo apt-get install nginx php5-fpm php-apc php5-pgsql postgresql

También sugiero verificar si apache2 está instalado. Si es así, elimínelo con un sudo apt-get remove apache2para evitar que apache y nginx compitan por el puerto 80.

Tenga en cuenta también que el estándar xdebug también quiere usar el puerto 9000, al igual que php5-fpm. Entonces, si usa xdebug, cambie ese puerto, por ejemplo, a 9001

Y como beneficio adicional, un ejemplo de configuración nginx (colóquelo en / etc / nginx / sites-available y enlace simbólico en / 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
fuente
Ya hice esto y creé un test.phparchivo simple , pero no funciona. Mi navegador dice "enlace roto" y en el registro de errores de Nginx solo hay una entrada sobre el "favicon.ico". Supongo que hay algo con mi archivo de configuración, pero realmente no tengo idea y es bastante difícil encontrar el error.
Jonas
@Jonas Podría ser que nginx y php5-fpm aún no se hayan iniciado. En ese caso, sudo service nginx starty sudo service php5-fpm startdebería hacer el trabajo. Por supuesto, esté atento a cualquier error que puedan dar.
Peter Smit el
@Jonas Su registro de errores no debe contener favicon.ico, al menos no si copió la parte empty_gif de mi solución. Además, no olvide reiniciar siempre después del cambio (el sudo service nginx reload). Si todo lo demás falla, tal vez podría agregar su archivo de configuración a su pregunta.
Peter Smit
He actualizado la pregunta con mi archivo de configuración para Nginx, parece que hay algo mal con la configuración de PHP. Después de agregar sus líneas sobre favicon a mi archivo de configuración, ya no recibo ningún error en el registro de errores de Nginx. Nginx funciona con .htmlarchivos pero no funciona para .phparchivos.
Jonas
1
@Jonas Una página que me ayudó a hacer archivos de configuración 'limpios' es wiki.nginx.org/Pitfalls , pero no ignore la advertencia sobre la implementación de cambios que no comprende.
Peter Smit el