Servidor Web com NGINX — Instalação e configuração do PHP em sistemas baseados em RHEL

Marcelo Albuquerque
3 min readSep 8, 2021

--

Desde que comecei a estudar sobre Desenvolvimento Web, tenho utilizado o Apache como meu servidor web padrão. Quando comecei meus estudos ele definitivamente era o servidor web mais utilizado, talvez até hoje deva ser. Porém, alternativas vão surgindo e o NGINX é mais do que uma alternativa, hoje ele dividi o mercado de servidores com o Apache e possui muitas vantagens em relação ao seu concorrente.

Photo by ThisIsEngineering from Pexels

Este artigo faz parte de uma série de artigos que visam a instalação e configuração de um Servidor Web com NGINX.

Hoje, vamos realizar a instalação e configuração do PHP.

Para instalar o PHP, vamos utilizar o pacote “php-fpm”, que se faz necessário para sua devida integração com o NGINX. Também vamos instalar o pacote “php-mysqli” para a devida integração com o banco de dados MariaDB. Outros pacotes podem ser adicionados posteriormente.

Instalação

No terminal, executamos o seguinte comando:

sudo dnf install php-fpm php-mysqli php-cli

Configuração

Agora, podemos abrir o arquivo de configuração do php-fpm que está localizado em “/etc/php-fpm.d/www.conf". No terminal, executamos o seguinte comando:

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

Diretivas user e group

Com o arquivo aberto para edição, precisamos alterar as diretivas de user e group. Estas diretivas vem com os valores padrões definidos para apache, precisamos alterar esses valores para nginx. Localize as diretivas e realize a alteração:


; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Também precisamos alterar as diretivas listen.owner e listen.group, que vem pré-definidas com o valor nobody . Também precisamos descomentá-las removendo o sinal ; do ínicio de cada linha, incluindo a diretiva listen.mode. Então, vamos alterar os valores de owner e group para nginx:

Diretivas listen.owner e listen.group

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Diretivas de sessões

Aqui, vamos alterar a diretiva que defini o diretório onde as sessões serão salvas, neste caso, vamos configurar um diretório com permissões de escrita como o diretório /tmp:

php_value[session.save_path] = /tmp

Exibição de erros e alertas

Na minha opinião, a exibição dos erros e alertas são fundamentais para o devido controle e qualidade do código, essa configuração é essencial. Essa linha vem comendata como o sinal ; , portanto, é necessário remover o sinal para descomentá-la e alterar o valor de off para on:

php_flag[display_errors] = on

Salve e feche o arquivo. Então, inicie o serviço:

sudo systemctl start php-fpm

Habilitando conexões externas (cURL)

Para habilitarmos as conexões externas vamos executar um simples comando no nosso tão querido terminal:

sudo setsebool -P httpd_can_network_connect on

Seu ambiente PHP está pronto. Em seguida, vamos configurar o NGINX para enviar todas as requisições PHP para serem processadas pelo php-fpm.

Configurando NGINX para processar requisições PHP

Temos todos os componentes necessários instalados. A única configuração que ainda se faz necessária é a de informar o NGINX para utilizar o processador PHP para lidar com tais requisições.

Neste exemplo vou editar um Server Block que já está devidamente configurado. Então, vamos editar um arquivo de configuração de Server Block já existente que se encontra em “/etc/nginx/conf.d/example.com.conf”. No terminal, executamos o seguinte comando:

sudo nano /etc/nginx/conf.d/example.com.conf

Com o arquivo aberto para edição, vamos adicionar ao Server Block o seguinte conteúdo:

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Assim obtemos um arquivo devidamente configurado:

server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
index index.php index.html;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Podemos fechar e salvar o arquivo.

Em seguida, vamos reiniciar o NGINX. No terminal, executamos o seguinte comando:

sudo systemctl restart nginx

O PHP está devidamente instalado e configurado!

--

--