Como configurar o PHP com Nginx, APC e PostgreSQL?

9

Eu uso o Ubuntu Server 10.10 e gostaria de configurar um ambiente de servidor web com NginX , PHP 5.3.3, PostgreSQL e, de preferência, APC e PHP Suhosin.

Eu já configurei o PostgreSQL apt-get install postgresqle o Nginx com apt-get install nginx.

Mas como faço para configurar o PHP para isso? Posso fazer isso usando apt-get installou tenho que baixar as fontes e compilá-las? Eu preferiria fazê-lo usando apt-get.

Eu gostaria de usar o PHP-FPM para Nginx. A maioria dos tutoriais encontrados na Internet é antiga e compila o PHP, mas isso não é recomendado para servidores de produção.

Como faço para configurar o PHP com mais facilidade com Nginx, APC e PostgreSQL? ou pelo menos PHP-FPM + Nginx?


ATUALIZAR

Agora instalei um novo Ubuntu Server 10.10 e executei o comando que Peter sugeriu com php5-suhosinadição. Depois que o Nginx funcionar bem, edito o arquivo de configuração gerado para que fique como abaixo. Depois de recarregar o novo arquivo de configuração, o Nginx ainda funciona bem usando um index.htmlarquivo, mas quando adiciono um index.phparquivo, ele pára de funcionar. Eu acho que isso tem a ver com PHP-FPM, APC ou algo relacionado ao PHP. Mas também poderia ser o arquivo de configuração do PHP-FPM.

Aqui está o arquivo de configuração para o Nginx que estou usando, a maioria é gerado por padrão. Eu pulei comentários.

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
fonte
Por favor, faça disso uma resposta e aceite-a, para que possamos votar em ambos juntos como a solução combinada.
Jorge Castro
@ Jorge: Esta não é uma resposta, estou apenas mostrando meu arquivo de configuração que não funciona . Peter Smit postou a solução correta combinada com comentários e eu a aceitei como resposta.
Jonas
Ah meu erro, continue!
Jorge Castro

Respostas:

8

A partir do Ubuntu 10.10, isso é trivial com o novo pacote php5-fpm

Os seguintes pacotes fazem tudo o que você precisa

  • nginx - o servidor da web
  • php5-fpm - Servidor php Fast-CGI
  • php-apc - O pacote APC para php
  • php5-pgsql - Módulo PostgreSQL para PHP
  • postgresql - O servidor de banco de dados PostgreSQL

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

Também sugiro verificar se o apache2 está instalado. Nesse caso, exclua-o com um sudo apt-get remove apache2para evitar que apache e nginx concorram pela porta 80.

Observe também que o padrão xdebug também deseja usar a porta 9000, assim como o php5-fpm. Portanto, se você usar o xdebug, altere essa porta, por exemplo, para 9001

E como bônus, um exemplo de configuração do nginx (coloque-o em / etc / nginx / sites-available e faça o link simbólico para / 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
fonte
Eu fiz isso agora e criei um test.phparquivo simples , mas não funciona. Meu navegador diz "link quebrado" e no log de erros do Nginx há apenas uma entrada sobre o "favicon.ico". Eu acho que há algo no meu arquivo de configuração, mas eu realmente não tenho ideia e é muito difícil encontrar o erro.
Jonas19
@ Jonas Pode ser que o nginx e o php5-fpm ainda não tenham sido iniciados. Nesse caso, sudo service nginx starte sudo service php5-fpm startdeve fazer o trabalho. Claro, procure qualquer erro que eles possam dar.
Peter Smit
@ Jonas Seu log de erros não deve conter favicon.ico, pelo menos não se você tiver copiado a parte empty_gif da minha solução. Além disso, não se esqueça de reiniciar sempre após a alteração (o sudo service nginx reload). Se tudo mais falhar, talvez você possa adicionar seu arquivo de configuração à sua pergunta.
Peter Smit
Atualizei a pergunta com meu arquivo de configuração para o Nginx, parece haver algo errado com a instalação do PHP. Depois de adicionar suas linhas sobre o favicon ao meu arquivo de configuração, não recebo mais erros no log de erros do Nginx. O Nginx funciona com .htmlarquivos, mas não para .phparquivos.
Jonas
1
@Jonas Uma página que me ajudou a criar arquivos de configuração 'limpos' é wiki.nginx.org/Pitfalls , mas não ignore o aviso sobre a implementação de alterações que você não entende.
Peter Smit