Qual é a maneira mais fácil de ativar o PHP no nginx?

130

Qual é a maneira mais fácil de ativar o PHP no nginx no Ubuntu 12.04?

A melhor solução é aquela que solicita um trabalho mínimo, idealmente apenas uma instalação de pacote :)

sorin
fonte

Respostas:

141

O método a seguir permitirá que você inicie rapidamente no Ubuntu 12.04:

Instale as dependências:

sudo apt-get install php5-common php5-cli php5-fpm

Instale o nginx:

sudo apt-get install nginx

Inicie o nginx:

sudo service nginx start

Teste se está funcionando (veja "Bem-vindo ao nginx!")

sudo service nginx stop

Na configuração do seu site nginx (/ etc / nginx / sites-available / default), modifique a linha na seção do servidor {}

index index.html index.htmpara index index.php index.html index.htm.

Remova o comentário das linhas na seção do servidor {} começando com

listen para ipv4 / ipv6 ambos.

Role para baixo até onde diz "location ~ .php {" e descomente as linhas para que fique assim:

location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi_params;
}

sudo service php5-fpm restart sudo service nginx restart

Sua raiz da web padrão está localizada em / usr / share / nginx / www (de acordo com o arquivo de configuração). (Vejoroot /usr/share/nginx/www;

(Nota: para o Ubuntu 12.10 ou mais recente, você precisará substituir a fastcgi_pass 127.0.0.1:9000;linha por esta para fazê-la funcionar fastcgi_pass unix:/var/run/php5-fpm.sock;:)

papashou
fonte
1
Como uma observação tardia, você pode fazer com que o 12.04 use um soquete UNIX como o 12.10+, editando /etc/php5/fpm/pool.d/www.confe alterando a linha de escuta para e listen = /var/run/php5-fpm.sock, em seguida, usando a linha @ThomasW. mencionado.
Powerlord
@Powerlord, a configuração padrão do NGINX possui as duas linhas e explica a diferença entre as duas. Em vez de alterar a maneira como o PHP é executado, você pode alterar a linha de configuração no NGINX mais rapidamente e tudo funciona.
Thomas Ward
@ThomasW. A descrição padrão das duas linhas do NGINX também está incorreta na versão 12.04. O php5-fpm requer o primeiro método, devido à forma como o php5-fpm está configurado no 12.04. Não mudou para o segundo método até as 12.10. Para fazer o php5-fpm funcionar com o nginx, conforme documentado, você deve modificar o www.conf do fpm conforme mencionado na minha mensagem anterior.
Powerlord 31/03
@Powerlord Você está certo, é um problema, que pode ser corrigido alterando a documentação no arquivo de configuração padrão. Veja esse bug que eu criei sobre esse problema . Ainda não tive a chance de propor uma correção de bug.
Thomas Ward
1
Isso não está funcionando para mim no ubuntu 14.04. nginx diz "Ocorreu um erro, a página que você está procurando não foi encontrada", o que fazer?
User3459110
46

Edição: Como apontado por Matt Browne, você pode estar interessado neste post mais recente:
Como instalar Linux, Nginx, MySQL, PHP (pilha LEMP) no Ubuntu 16.04


A resposta do papashou está correta no antigo Ubuntu 12.04. Desde o Ubuntu 12.10, a configuração é um pouco diferente. Aqui está o que eu fiz:

Instalar

sudo apt-get install nginx php5-fpm

Ativar PHP

Remova o comentário das seguintes linhas no arquivo de configuração /etc/nginx/sites-available/default

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Iniciar (ou reiniciar)

sudo service php5-fpm restart
sudo service nginx restart

Teste nginx

A abertura deste link http://localhostdeve exibir "Bem-vindo ao nginx!"

Teste php

Crie um arquivo php:

  • O caminho de destino é a saída de

    awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default
    

    por exemplo /usr/share/nginx/www

  • Escreva um info.phparquivo com:

    echo '<?php phpinfo(); ?>' | \
        sudo tee /usr/share/nginx/www/info.php
    

    ou como one-liner

    echo '<?php phpinfo(); ?>' | \
        sudo tee "$(awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default)/info.php"
    

A abertura http://localhost/info.phpdeve exibir a página de informações do PHP.

olibre
fonte
3
Obrigado por isso. Aqui está outro link útil: digitalocean.com/community/tutorials/… . E observe que se você deseja instalar o MySQL, também precisará executar apt-get install php5-mysql(além de instalar o próprio MySQL).
Matt Browne
1
Há uma nova versão do artigo acima para Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne