Instalação NGINX e PHP-FPM no Linux CentOS

Instalação de Servidor Web com NGINX e PHP-FPM no CentOS 7x

Nesse tutorial, levo em consideração que você já tenha instalado o sistema operacional CentOS 7 em seu computador ou numa máquina virtual, caso não tenha instalado o SO ainda, clique aqui para ver esse tutorial.

Primeiro precisamos instalar os repositórios e depois instalar o servidor

yum install epel-release

yum install nginx -y

Depois, precisamos iniciar e verificar o status do serviço com os comandos:

systemctl start nginx.service

service nginx status

Agora, precisamos executar este comando para iniciar automaticamente esse serviço sempre que o computador for ligado:

systemctl enable nginx.service

Se o firewall do CentOS estiver habilitado, precisamos liberar a porta 80 (http) para podermos acessar o servidor web que acabamos de instalar:

firewall-cmd --permanent --zone=public --add-service=http

Depois reiniciar o firewall para funcionar a nova regra

systemctl restart firewalld.service

Precisamos agora configurar o servidor web. Antes, precisamos verificar quantos processadores (CPUs) o nosso servidor possui usando o comando:

grep -c 'model name' /proc/cpuinfo

Depois, abrimos o arquivo de configuração do servidor NGINX em:

# vi /etc/nginx/nginx.conf

Procurar a linha onde está escrito “worker_processes” e colocar a quantidade de CPUs do nosso servidor web:

worker_processes 2; // Coloque aqui a quantidade de CPUs do servidor

Inclusa nesse arquivo também os arquivos de configurações dos sites para esse servidor:

include /etc/nginx/sites-available/*.conf;

Agora vamos criar esse diretório onde ficarão os arquivos (vhosts) de configuração dos sites nesse servidor:

# mkdir /etc/nginx/sites-available // É nesse diretório que colocaremos as configurações dos sites (os VHOSTS)

Instalação do PHP-FPM no Linux CentOS

PHP-FPM, ou PHP FastCGI Process Manager é uma implementação de CACHE a nível de servidor que aumenta a velocidade de processamento no lado servidor em até 7 vezes. É ideal para websites que usam CMS como WordPress, OpenCart, Joomla, entre outros.

Para instalar o PHP-FPM execute o comando abaixo:

# yum install php php-fpm php-mysql php-apc -y

Após instalação, editar o arquivo localizado em:

# vi /etc/php.ini

Descomentar "cgi.fix_pathinfo=0" // E colocar 0 para desabilitar.

Depois, editar o arquivo de configuração do PHP-FPM localizado em:

# vi /etc/php-fpm.d/www.conf

// Alterar o "listen" para "/var/run/php-fpm/php-fpm.sock"

// Se seu PHP-FPM estiver rodando com NGINX, mude também o usuário e grupo para nginx:
// Alterar essas informações nesse arquivo para essas abaixo:

listen = /var/run/php-fpm/php-fpm.sock
user = nginx
group = nginx

Para iniciar o serviço, digite:

# systemctl start php-fpm.service

Para habilitar este serviço para iniciar automaticamente com o SO, digite:

# systemctl enable php-fpm.service

Para cada arquivo de configuração do NGINX (ou para cada site) que você criar, você vai precisar criar uma pasta para colocar os arquivos do site em: /var/www/html, exemplo:

mkdir /var/www/html/meu_novo_site

Uma observação sobre segurança, quando criar esses diretórios dos sites do servidor não esquecer de alterar o proprietário e o grupo para essas pastas, usando o comando:

# chown -R nginx:nginx meu_novo_site
ou
# chown nginx:nginx -R . // Caso você esteja no diretório que deseja tribuir as permissões

Agora, precisamos editar o arquivo de hosts do servidor e informar as informações do novo site em nosso servidor, precisamos editar o arquivo localizado /etc/hosts

vi /etc/hosts

// Colocar as informações dessa forma:

endereço_ip_do_servidor meu_novo_site.com

Reinicie o NGINX usando o comando:

# systemctl restart nginx.service

As vezes podemos ter problemas para rodar algumas aplicações por conta de permissões incorretas no diretório “/var/lib/php/session“, para solucionar esse problema altere as permissões dessa pasta da seguinte forma:

# chmod -R 4777 /var/lib/php/session

Site hospedado!!! Agora coloque qualquer arquivo web nesse novo site que o servidor vai processar.

Abaixo, relaciono os principais comandos no CentOS para administrar seu servidor web com NGINX, PHP-FPM e MariaDB:

// Iniciar NGINX
systemctl start nginx.service

// Status do NGINX
service nginx status

//Verificar vHosts NGINX
nginx -t

// Reinicar Rede
/etc/init.d/network restart

// Iniciar Banco de Dados (MariaDB)
systemctl start mariadb.service

// Status do Banco de Dados (MariaDB)
service mariadb status

// Iniciar PHP-FPM
systemctl start php-fpm.service

// Status do PHP-FPM
service php-fpm status

// Localização dos logs do servidor web NGINX
/var/log/nginx

// Localização dos vHosts NGINX
/etc/nginx
/etc/nginx/sites-available

// Localização das pastas web no NGINX
/var/www/html

// ARQUIVOS DE LOG DO PHP-FPM
//var/log/php-fpm/error.log

Otimizando o desempenho de seu servidor web

Aqui vamos otimizar o servidor web NginX para um melhor desempenho, e ainda solucionar problemas comuns de gateway como 502 e 504.

Edite o arquivo /etc/php.ini e altere a informação abaixo pra 180:

# vi /etc/php.ini

// E coloque assim:
max_execution_time = 180

Agora, edite o arquivo /etc/php-fpm.d/www.conf e altere a informação abaixo para 180:

# vi /etc/php-fpm.d/www.conf

// E coloque assim:
request_terminate_timeout = 180

Agora vamos editar o arquivo de configuração do NginX em /etc/nginx/nginx.conf e habilitar a compressão Gzip, esta função pode melhorar a performance do seu site em mais de 50%:

gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Para finalizar, insira estas linhas no bloco “http” desse mesmo arquivo de configuração do NginX:

client_max_body_size 100M;
client_body_buffer_size 16k;
 
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 180;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;

Reinicie os servidor digitando em seu terminal:

# systemctl restart php-fpm.service
# systemctl restart nginx.service

Com essas simples otimizações seu servidor web ficará bem rápido, mas podemos nos aprofundar ainda mais em outros casos.

Esse artigo foi útil?

Relacionados

1 comentário

  1. Alexandre

    Demais! Esse artigo da para ser usado como guia nas instalações de servidores web. Fiz aqui e deu tudo certo. Só tenho uma dúvida: Em que arquivo de configuração do nginx eu coloco essas otimizações?

    1. olvleo

      Olá Alexadnre, essas configurações você deve colocar no arquivo de configuração DEFAULT do NGINX: /etc/nginx/nginx.conf

Deixe seu comentário: