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; .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!