Nginx com PHP 8 no servidor Ubuntu

27 de julho de 2022
Ronaldo B.

Se preferir poderá conferir este post também vídeo disponível no canal da Hcode no Youtube.

Já falamos em alguns artigos sobre a instalação do PHP 8 no Ubuntu. Contudo, este artigo é um pouco diferente, pois vamos mostrar como realizar sua instalação e também criar um exemplo usando essa linguagem, mas executando-a através do Nginx, um dos Servidores Web mais conhecidos e mais rápidos do mundo. Isso será especialmente útil quando precisarmos realizar o deploy de nossos projetos PHP e necessitarmos de um Servidor Web confiável.

Iremos realizar a instalação em um servidor Linux Ubuntu, hospedado na DigitalOcean. Este artigo será focado no PHP 8, mas o passo a passo pode ser usado em versões anteriores também.

Nosso artigo será dividido nos seguintes tópicos:

1 - Instalação do Nginx

2 - Instalação e Configuração do PHP 8

3 - O que é o PHP-FPM?

4 - Configuração do PHP-FPM

5 - Configuração do Nginx

6 - Criação do Primeiro código

Instalação do Nginx

Iremos atualizar os pacotes instalados em nosso Sistema pelo apt-get usando o seguinte comando:

sudo apt-get update

Após isso iremos instalar o Nginx, com o seguinte comando:

sudo apt-get install nginx -y

Vamos iniciar o seu serviço com o comando abaixo:

sudo service nginx start

Com este comando, ao acessar o servidor, veremos o seguinte resultado no navegador:

Página de boas-vindas do Nginx

Ótimo! O Nginx foi instalado com sucesso!

Instalação e Configuração do PHP 8

Vamos realizar o download do PHP sem usar o apt-get, mas sim através de sua origem na Internet. Podemos realizar esse download na pasta que acharmos melhor. No meu caso irei fazer o download na pasta raiz do Sistema.

O download pode ser feito com o comando abaixo:

sudo wget -c https://downloads.php.net/~carusogabriel/php-8.0.0beta1.tar.xz -o -

Após o download concluído, iremos extrair a pasta do PHP 8 e também renomeá-la para um nome mais agradável. Faremos isso com o seguinte comando:

sudo tar -Jxxvf php-8.0.0beta1.tar.xz && sudo mv php-8.0.0beta1 php8-beta1

Vamos agora acessar a pasta para configuração com o comando cd php8-beta1.

Antes de realizar a configuração, precisamos instalar alguns pacotes que o PHP exige para que ele funcione bem. Iremos instalar esses pacotes com o comando abaixo:

sudo apt-get install -y build-essential pkg-config libxml2-dev sqlite3 libsqlite3-dev zlib1g libz-dev

Agora sim estamos preparados para instalar o PHP no Ubuntu. Faremos isso com os dois comandos abaixo:

sudo ./configure --enable-fpm --with-pdo-mysql
sudo make && sudo make install

Note que no primeiro comando adicionamos a flag --enable-fpm. Ela será essencial para a conexão do Nginx com o PHP. Iremos falar um pouco mais sobre o FPM daqui a pouco.

A próxima configuração que iremos realizar é adicionar o arquivo php.ini ao nosso sistema. Vamos fazer isso com o comando abaixo:

cp php.ini-development /usr/local/php/php.ini

Estamos indo muito bem! Mas antes de continuar a configuração, precisamos falar sobre o PHP-FPM.

O que é o PHP-FPM?

Quando o PHP é executado através de um Servidor Web, ele precisa se comunicar com esse Servidor para que o código possa de fato funcionar e seu resultado chegar ao usuário final. Há muitas maneiras de fazer essa conexão. Uma delas é o CGI (Common Gateway Interface, em português “Interface Comum de Entrada”). Ele faz esse “meio de campo” entre a linguagem PHP e o Nginx.

Para facilitar essa conexão, o PHP possui um gerenciador de processos chamado FPM (FastCGI Process Manager). Precisamos realizar sua configuração para que nosso código PHP funcione em conjunto com o Nginx. É isso o que iremos fazer agora.

Configuração do PHP-FPM

A primeira coisa que precisamos fazer é editar o arquivo php.ini. Neste arquivo há uma configuração chamada cgi.fix_pathinfo. Por padrão essa configuração tem como valor o número 1. Essa configuração permite que o Nginx informe para o PHP-FPM solicitações mesmo que os arquivos não existam, o que pode ser uma brecha de segurança. Para resolver essa questão, vamos definir essa configuração como 0.

Vamos acessar o arquivo php.ini:

sudo nano /usr/local/php/php.ini

Procure pela linha que desejamos e a defina como 0:

cgi.fix_pathinfo=0
Definindo opção de CGI como 0

Agora sim podemos iniciar a configuração do FPM. Vamos copiar alguns arquivos de configuração padrão para as pastas de nosso Sistema. Vamos usar os comandos abaixo:

cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
cp sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf

Explicando: O primeiro arquivo copiado é o de configuração do FPM para a conexão com os servidores. Os outros dois arquivos foram copiados da pasta onde baixamos o PHP. Eles representam o binário do FPM e seu arquivo de configuração geral.

Vamos fazer uma mudança no arquivo www.conf. Para isso, iremos acessá-lo usando o comando abaixo:

sudo nano /usr/local/etc/php-fpm.d/www.conf

Vamos procurar pelas configurações user e group e vamos defini-las com os valores abaixo:

user = www-data
group = www-data
Definindo os valores de user e group no arquivo www.conf

A seguir vamos editar o arquivo de configuração geral do FPM. Vamos acessá-lo com o comando abaixo:

sudo nano /usr/local/etc/php-fpm.conf

Neste arquivo iremos editar a última linha, deixando-a assim:

include=/usr/local/etc/php-fpm.d/*.conf
Editando o arquivo de configuração geral do FPM

Fizemos muitas configurações e agora estamos preparados para iniciar o serviço do PHP-FPM. Para isso basta informar o caminho para seu binário, com o seguinte comando:

/usr/local/bin/php-fpm

Com isso o FPM estará iniciado ?.

Configuração do Nginx

Com o FPM configurado, só falta configurar o Nginx.

Vamos acessar o arquivo de configuração dos Virtual Hosts do Nginx, com o seguinte comando:

sudo nano /etc/nginx/sites-available/default

Neste arquivo iremos procurar por uma linha que contém todos os arquivos que são executados por padrão no Nginx. Essa linha deve estar abaixo da linha de configuração de root. Vamos deixá-la da seguinte forma:

index index.php index.html index.htm index.nginx-debian.html;
Linha de configuração dos arquivos que serão executados pelo Nginx

Perceba que adicionamos o arquivo index.php, para que o Nginx execute de fato os arquivos desta linguagem.

A próxima configuração que iremos realizar é na diretiva location ~ \.php$. Iremos remover o comentário deste bloco de configuração e deixá-lo da seguinte forma:

location ~ \.php$ {
	include fastcgi_params;
	fastcgi_index   index.php;
	fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
	fastcgi_param   SCRIPT_NAME       $fastcgi_script_name;
	fastcgi_pass 127.0.0.1:9000;
}

Após salvar este arquivo estaremos prontos para iniciar o serviço do Nginx com as novas configurações. Iremos usar o seguinte comando:

sudo service nginx restart

Criação do Primeiro código

Para testar se deu tudo certo, o que acha de criarmos um pequeno exemplo? Então vamos lá!

Vamos criar um arquivo chamado index.php na pasta /var/www/html, com o comando abaixo:

sudo nano /var/www/html/index.php

O conteúdo deste novo arquivo será o seguinte:

<?php

echo "<h1>PHP 8 no Nginx</h1>";

phpinfo();

?>

Agora, ao acessar o endereço local de nosso servidor, veremos o seguinte resultado:

PHP sendo executado em nosso servidor

Excelente! Nosso código funcionou e agora o PHP está sendo executado em conjunto com o Nginx em nosso servidor ?.

Conclusão

Neste artigo aprendemos como instalar o PHP 8 em conjunto com o Nginx. Esperamos que esse conhecimento possa ajudá-lo em seus estudos sobre o PHP ou em seu trabalho também ?.

A gente se vê no próximo artigo, até lá.

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.