Fala ChurrOpers!

Esse artigo é “SIMPLÃO” e objetivo, vamos ver como instalar o Nginx + PHP-FPM 7.2 no CentOS 7.

Sem mais delongas, Let’s go!

Preparação e instalação de pacotes de apoio

O objetivo é a integração do nginx com php-fpm, sendo assim vou desabilitar o firewall e o selinux, fique a vontade para seguir esse passo, ou pular, fazendo as devidas configurações.

systemctl disable firewalld; systemctl stop firewalld
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

Vou deixar aqui alguns dos pacotes que costumo colocar em algumas instalações de CentOS.

yum install -y epel-release
yum install -y net-tools mlocate wget vim yum-utils htop

Instalando o Nginx à partir do repositório oficial

Criei o arquivo abaixo adicionando o conteúdo, com isso você já poderá baixar o pacote.

vim /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum -y install nginx
systemctl enable nginx && systemctl start nginx

Acessando via browser você verá que seu Nginx está iniciado

http://seu-ip

nginx-welcome

Instalando o PHP-FPM 7.2

Instalando e habilitando o repositório REMI para o remi-php72.

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72

No próximo comando estamos instalando os pacotes ‘base’ que são o PHP e o PHP-FPM, juntamente com alguns outros pacotes que geralmente aplições em PHP utilizam, nesse ponto é importante você ver se realmente precisa de todos esses pacotes para a sua instalação.

yum install -y php php-fpm php-mbstring php-gd php-cli php-ldap php-json php-xml php-xmlrpc php-pecl-apcu php-pear-Net-Curl php-pear-Net-IMAP php-imap php-pecl-apcu-devel php-pear-MDB2-Driver-mysqli php-phpiredis php-mysqlnd php-opcache php-pecl-zendopcache php-pear-CAS
php -version

PHP 7.2.9 (cli) (built: Aug 15 2018 09:19:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.9, Copyright (c) 1999-2018, by Zend Technologies

php-version

Aqui podemos ver que ambos os serviços estão no ar!

netstat-nginx-php-fpm

Configurando o PHP-FPM para o Nginx

Lembrando que existem milhares de configurações, mais o objetivo desse é artigo é um setup inicial que funcione.

vim /etc/php-fpm.d/www.conf

# Altere os seguintes valores 

user = nginx
group = nginx

# Descomente para conexões tcp.
listen = 127.0.0.1:9000
# Descomente para conexões via Socket
# unix:/var/run/php-fpm/php-fpm.sock
systemctl enable php-fpm; systemctl start php-fpm
systemctl status php-fpm

Se a sua saída foi semelhante a essa abaixo, sucesso seu php-fpm está iniciando.

php-fpm-service-status

Configurando o Nginx para utilizar o PHP-FPM

Vamos configurar o NGINX para reconhecer o PHP_FPM, para isso vamos editar o seu arquivo de configuração default para o nosso cenário.

Os exemplos das configurações que podem ser utilizadas para o php no NGINX você pode encontrar na documentação.

nginx/examples/phpfcgi

vim /etc/nginx/conf.d/default.conf

Adicione/descomente os seguintes parâmetros:

 location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        include        fastcgi_params;

Segue um exemplo do arquivo completo:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

Para validar a nossa instalação do PHP nada melhor do que o bom e velho info.php

vim /usr/share/nginx/html/info.php

info-php

Adicione o conteúdo abaixo no arquivo e salve.

Reinicie o nginx e php-fpm.

systemctl restart nginx && systemctl restart php-fpm

Ao reiniciar abra seu browser novamente, e basta conferir a instalação realizada com sucesso!

http://seu-ip/info.php

info.php-72

Conclusão

Artigo totalmente FAST and SIMPLE, mas espero que seja útil.

Abraço!