Configurando Nginx e Apache para diversas versões do PHP

Sejam, bem vindos ao quinto post do blog, tendo em vista que já temos um Nginx configurado e/ou um Apache , iremos prepara-los para poder executar as diversas versões do PHP.

Sendo necessário seguir os passos dos posts:
Configurando NGINX, PHP-FPM e Mysql no Fedora
Instalando mais de uma versão do PHP com repositórios Remi

Configurando o Nginx

Iremos criar um host para testar a versão 5.6 do php

1- criar um diretório para testar versão

sudo mkdir /var/www/html/testar_versao/ ; echo '<?php phpinfo();?>'; /var/www/html/testar_versao/index.php

RETIRANDO CONFIGURAÇÃO PADRÃO DE EXECUÇÃO DO PHP

No arquivo /etc/nginx/default.d o bloco deverá estar comentado como o exemplo abaixo, caso não esteja , comente e salve

#location ~ \.php$ {
#    try_files $uri =404;
#    fastcgi_intercept_errors on;
#    fastcgi_index  index.php;
#    include        fastcgi_params;
#    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
#    fastcgi_pass   php-fpm;
#}

Com isso , sendo necessário configurar em cada host (em /etc/nginx/conf.d)

Criando parâmetro para nova versão

Em /etc/nginx/conf.d/php-fpm.conf

upstream php-fpm {
    server unix:/run/php-fpm/www.sock;
}

upstream php56-fpm {
	server unix:/opt/remi/php56/root/var/run/php-fpm/www.sock;
}

Adicionar php56-fpm o mesmo deve ser feito para contemplar novas versões do php configuradas

Criando host para aplicação : testando php

vim /etc/nginx/conf.d/testar_versao.conf;

E adicione o seguinte conteúdo

server {
    listen       80;
    server_name  testarversao.local;
    #root         /usr/share/nginx/html;
	root         /var/www/html/testar_versao;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }
	
	location ~ \.php$ {
         root           /var/www/html/testar_versao;
         try_files $uri =404;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass   php56-fpm;
		 fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
    }
	
}

Onde podemos notar que a propriedade (location ~ \.php$)
O atributo recebe

fastcgi_pass   php56-fpm;

Ao salvar verificar sintaxe do arquivo

nginx -t

Com output

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

altere o arquivo /etc/hosts

E adicione o host testarversao.local ao ip 127.0.0.1
E reinicie o nginx

systemctl reload nginx

Verifique o resultado em : (http://testarversao.local/)

Caso quisermos usar o php corrente do sistema operacional.

Na propriedade (location ~ \.php$)

O atributo deve ser alterado para:

fastcgi_pass  php-fpm;

E reiniciar o Nginx.

Com o seguinte resultado.


Com isso finalizando o processo para o Nginx.

Configurando o Apache

Para configurar o apache é necessario alterar o script:
/etc/httpd/conf.d/fcgid.conf

sudo vim /etc/httpd/conf.d/fcgid.conf

E adicionar o trecho:

<IfModule mod_fcgid.c>
    # Use FastCGI to process .fcg .fcgi &amp;amp; .fpl scripts
    AddHandler fcgid-script fcg fcgi fpl

    # PHP 5.6
    Action application/x-httpd-php56 /cgi-bin/php56.fcgi
    AddType application/x-httpd-php56 .php56

    # PHP default
    Action application/x-httpd-php-default /cgi-bin/php-default.fcgi
    AddType application/x-httpd-php-default .php-default

    # Sane place to put sockets and shared memory file
    FcgidIPCDir /var/run/mod_fcgid
    FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm
</IfModule>

onde serão criados os modulos para leitura das versões expecificadas acima.

Iremos criar o arquivo de configuração do php default.

sudo vim /var/www/cgi-bin/php-default.fcgi

com os seguintes dados:

#!/bin/bash
PHPRC="/etc/php.ini"
PHP_CGI="/usr/bin/php-cgi"
PHP_FCGI_CHILDREN=8
PHP_FCGI_MAX_REQUESTS=3000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI

E salve.
E o arquivo para o php 5.6.

sudo vim /var/www/cgi-bin/php56.fcgi
#!/bin/bash
PHPRC="/opt/remi/php56/root/etc/php.ini"
PHP_CGI="/opt/remi/php56/root/bin/php-cgi"
PHP_FCGI_CHILDREN=8
PHP_FCGI_MAX_REQUESTS=3000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI

E salve.

Criando host para aplicação.

sudo vim /etc/httpd/testarversao.conf

Observação estou usando a porta 81 para executar o Apache caso use como 80 ou outra , alterar <VirtualHost *:81>
para <VirtualHost *:80> por exemploCom o conteúdo:

 

<VirtualHost *:81>
DocumentRoot /var/www/html/testar_versao/
ServerName testarversao.local
ServerAlias testarversao.local
ErrorLog /var/www/html/testar_versao/LOG/http_log
CustomLog /var/www/html/testar_versao/LOG/example.com-access_log common
 
<Directory /var/www/html>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride all
 Order allow,deny
 allow from all
 <IfModule mod_fcgid.c>
 <FilesMatch \.php$>
 SetHandler application/x-httpd-php56
 </FilesMatch>
 </IfModule>
</Directory>
</VirtualHost>

E Salve.

Reinicie o Apache.

systemctl reload httpd

verificando resultado em : (http://testarversao.local:81/)

 

alterando parâmetro:

SetHandler application/x-httpd-php56
para
SetHandler application/x-httpd-php-default

verificando novamente.

 

É isso aí espero ter sido claro na explicação. Valeu e até a próxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *