Como executar vários sites com diferentes versões PHP no Nginx

Como executar vários sites com diferentes versões PHP no Nginx

Às vezes, os desenvolvedores de PHP desejam construir e executar sites/aplicativos diferentes usando diferentes versões de PHP no mesmo servidor da web. Como administrador do sistema Linux, você deve configurar um ambiente em que possa executar vários sites usando a versão PHP diferente em um único servidor da Web I.e. Nginx.

Neste tutorial, explicaremos como instalar várias versões de Php e configure o servidor da web Nginx Para trabalhar com eles através dos blocos de servidor (hosts virtuais no Apache) em CENTOS/RHEL 7 distribuições usando Lemp pilha.

Leia também: Pyenv - instale várias versões python para projeto específico

Nginx usos PHP-FPM (apoia Gerenciador de processos FastCGI), que é uma alternativa Php fastcgi implementação com alguns recursos úteis e extras para sites fortemente carregados.

Configuração do ambiente de teste

  1. Um servidor CentOS 7 ou RHEL 7 com instalação mínima.
  2. Nginx HTTP Server.
  3. Php 7.1 (a ser usado como versão padrão) e 5.6.
  4. Servidor de banco de dados MariaDB.
  5. Endereço IP do servidor: 192.168.56.10.
  6. Sites: Exemplo 1.com e Exemplo2.com.

Etapa 1: Instalando e ativando o repositório EPEL e REMI

1. Primeiro começo instalando e ativando o EPEL e Remi repositório, que oferece as mais recentes versões do Php empilhar CENTOS/RHEL 7 distribuições.

# yum install https: // dl.FedoraProject.org/pub/epel/epel-latest-7.Noarch.rpm # yum install http: // rpms.REMIREPO.Net/Enterprise/Remi-Release-7.RPM 

2. Em seguida, instale o yum-utils pacote, que estende as funcionalidades nativas de Yum e fornece Yum-Config-manager Comando, usado para ativar ou desativar repositórios YUM no sistema.

# yum install yum-utils 

Observação: Sobre RHEL 7 Você pode ativar o canal opcional para algumas dependências usando o seguinte comando.

# repositões de assinatura-manager --enable = rhel-7-server-opcional-rpms 

Etapa 2: Instalando o Nginx Web Server

3. Para instalar a versão mais recente do Nginx, precisamos adicionar o repositório oficial do NGINX, criar um arquivo nomeado /etc/yum.Repos.d/nginx.repo.

# vi /etc /yum.Repos.d/nginx.repo 

Adicione as seguintes linhas ao arquivo conforme sua distribuição.

--------------- No CentOS 7 --------------- [nginx] Nome = nginx repo Baseurl = http: // nginx.org/packages/CentOS/7/$ Basearch/gpgCheck = 0 habilitado = 1 --------------- No RHEL 7 --------------- [nginx] Nome = nginx repo Baseurl = http: // nginx.org/pacotes/rhel/7.x/ $ Basearch/ gpgCheck = 0 habilitado = 1 

4. Depois que o Repo Nginx for adicionado, você pode instalar o nginx usando a ferramenta Yum Package Manager, como mostrado.

# yum install nginx 

Etapa 3: Instalando o servidor de banco de dados MariaDB

5. Para instalar a versão mais recente do mariadb, precisamos adicionar o repositório oficial de mariadb, criar um arquivo nomeado /etc/yum.Repos.D/Mariadb.repo.

# vi /etc /yum.Repos.D/Mariadb.repo 

Adicione as seguintes linhas ao arquivo conforme sua distribuição.

--------------- No CentOS 7 --------------- [mariadb] Nome = mariadb Baseurl = http: // yum.Mariadb.org/10.2/CENTOS7-AMD64 GPGKEY = https: // yum.Mariadb.org/rpm-gpg-key-mariadb gpgcheck = 1 --------------- No RHEL 7 --------------- [mariadb] Nome = mariadb Baseurl = http: // yum.Mariadb.org/10.2/rhel7-amd64 gpgkey = https: // yum.Mariadb.org/rpm-gpg-key-mariadb gpgcheck = 1 

6. Depois que o REPO MARIADB for adicionado, você pode instalar o MariaDB usando a ferramenta Yum Package Manager, conforme mostrado.

# yum instalar mariadb-client mariadb-server 

7. Posteriormente, proteja a instalação do servidor de banco de dados usando o script abaixo. Defina uma senha root e responda y e pressione [Digitar] Para o restante das perguntas subsequentes para desativar o login do usuário root remoto, remova as contas do usuário anônimo e teste o banco de dados que, por padrão, pode ser acessado por todos os usuários, até os usuários anônimos.

# mysql_secure_installation 

Leia também: 12 práticas recomendadas de segurança MySQL/Mariadb para Linux

Etapa 4: Instalando várias versões de PHP

8. Para instalar versões diferentes do PHP para seus projetos, use Yum-Config-manager comando para instalar várias versões do PHP, juntamente com os módulos mais necessários, como mostrado.

Instale o Php 7.1 versão

# yum-config-manager --enable remi-php71 [default] # yum instalar php php-common php-fpm # yum instalar php-mysql php-pecl-mesemcache php-pecl-associado php-gd php-mbstring php-mcrypt PHP-XML PHP-PECL-APC PHP-CLI PHP-PEAR PHP-PDO 

Instale o Php 5.6 versão

# yum install php56 php56-php-common php56-php-fpm # yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbsTring php56-php56-php-php-gd php56-php-mbsTring mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php pear php56-php-pdo 

9. Depois de instalado PHP, você pode usar o seguinte comando para verificar a versão padrão do PHP usada em seu servidor.

# php -v 
Verifique a versão PHP padrão

Etapa 5: Configurando o PHP-FPM e o PHP56-PHP-FPM

10. Esta é a parte mais interessante deste tutorial, explica como você pode realmente executar várias versões PHP em seu servidor. Aqui, você configurará as diferentes versões de PHP-FPM Esse nginx vai funcionar com. Você deve definir o usuário/grupo dos processos fastcgi, bem como as portas em que eles ouvirão.

Estes são os dois arquivos de configuração a seguir que você vai editar.

  • PHP-FPM (padrão 7.1) - /etc /php -fpm.d/www.conf
  • PHP56-PHP-FPM - /opt/remi/php56/root/etc/php-fpm.d/www.conf

Abra os arquivos acima, defina o usuário/grupo de processos fastcgi.

# vi /etc /php-fpm.d/www.conf [php 7.1] # vi/opt/remi/php56/root/etc/php-fpm.d/www.conf [php 5.6] 

Os valores padrão devem ser apache, mude -os para nginx como mostrado.

usuário = grupo nginx = nginx 

11. Em seguida, encontre os parâmetros de escuta e defina o Endereço: Porta em que solicitações fastcgi serão recebidas.

Ouça = 127.0.0.1: 9000 [php-fpm] Ouça = 127.0.0.1: 9001 [PHP56-PHP-FPM] 

12. Depois de toda a configuração acima feita, você precisa iniciar e ativar Nginx, Mariadb e PHP-FPM Para iniciar automaticamente a inicialização do sistema.

# SystemCtl Ativar nginx # SystemCtl Iniciar nginx # SystemCtl Ativar MariadB # SystemCtl Start MariadB ---------------- Php 7.1 ---------------- # SystemCtl Ativar php-fpm # SystemCtl Iniciar php-fpm ---------------- Php 5.6 ---------------- # SystemCtl Ativar php56-php-fpm # SystemCtl Iniciar php56-php-fpm 

Atenção: Caso você receba erros ao iniciar a segunda instância do PHP, PHP56-PHP-FPM, Uma política de Selinux pode estar bloqueando -a de começar. Se Selinux estiver em Modo de aplicação, defina -o para modo permissivo, Em seguida, tente iniciar o serviço mais uma vez.

# getenforce # setenforce 0 

Etapa 6: Sites de configuração com permissões

13. Neste ponto, agora você pode criar os diretórios necessários para seus sites em /var/www/html/. Você também precisa criar diretórios para armazenar logs da seguinte forma:

---------------- Site 1 ---------------- # mkdir -p/var/www/html/exemplo1.com/ # mkdir -p/var/log/nginx/exemplo1.coma ---------------- Site 2 ---------------- # mkdir -p/var/www/html/exemplo2.com/ # mkdir -p/var/log/nginx/exemplo2.coma 

14. Defina as permissões de propriedade apropriadas em todos os diretórios.

---------------- Site 1 ---------------- # chown -r root: nginx/var/www/html/exemplo1.com/ # chmod -r 755/var/www/html/exemplo1.com/ # chown -r root: nginx/var/log/nginx/exemplo1.com/ # chmod -r 660/var/log/nginx/exemplo1.coma ---------------- Site 2 ---------------- # chown -r root: nginx/var/www/html/exemplo2.com/ # chmod -r 755/var/www/html/exemplo2.com/ # chown -r root: nginx/var/log/nginx/exemplo2.com/ # chmod -r 660/var/log/nginx/exemplo2.coma 

Etapa 7: Configurar blocos de servidores nginx para sites

15. Agora configure como o Nginx processará solicitações para seus sites usando os arquivos de configuração do bloco de servidores que devem estar localizados em /etc/nginx/conf.d/.

Crie os arquivos de configuração para seus sites que terminam com .conf extensão.

# vi/etc/nginx/conf.D/Exemplo1.com.conf # vi/etc/nginx/conf.D/Exemplo2.com.conf 

Em seguida, cole as seguintes configurações de bloco de servidor nos respectivos arquivos.

Site 1

Configuração por exemplo1.com
servidor ouça 80; server_name Exemplo1.com www.Exemplo 1.com; root/var/www/html/exemplo1.com/; ÍNDICE ÍNDICE.ÍNDICE PHP.Índice HTML.htm; #charset koi8-r; Access_log/var/log/nginx/exemplo1.com/exemplo1_access_log; error_log/var/log/nginx/exemplo1.com/exemplo1_error_log Erro; Localização / Try_files $ URI $ URI / / ÍNDICE.php?$ query_string;  # Passe os scripts PHP para o FastCGI Server ouvindo em 127.0.0.1: 9000 Localização ~ \.php $ root/var/www/html/exemplo1.com/; fastcgi_pass 127.0.0.1: 9000; #set porta para php-fpm ouvir no Índice Fastcgi_index.php; fastcgi_param script_filename $ document_root $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params;  

Site 2

Configuração por exemplo2.com
servidor ouça 80; server_name Exemplo2.com www.Exemplo2.com; root/var/www/html/exemplo2.com/; ÍNDICE ÍNDICE.ÍNDICE PHP.Índice HTML.htm; #charset koi8-r; access_log/var/log/nginx/exemplo2.com/exemplo2_access_log; error_log/var/log/nginx/exemplo2.com/exemplo2_error_log Erro; Localização / Try_files $ URI $ URI / / ÍNDICE.php?$ query_string;  # Passe os scripts PHP para o FastCGI Server ouvindo em 127.0.0.1: 9000 Localização ~ \.php $ root/var/www/html/exemplo2.com/; fastcgi_pass 127.0.0.1: 9001; #set porta para php56-php-fpm para ouvir no índice fastcgi_index.php; fastcgi_param script_filename $ document_root $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params;  

16. Certifique -se de ter a seguinte linha na parte final do bloco HTTP em /etc/nginx/nginx.conf. Ajuda a incluir todos os arquivos de configuração dentro do /etc/nginx/conf.d/ diretório quando o nginx está em execução.

incluir/etc/nginx/conf.d/*.conf; 

Etapa 8: testando diferentes versões de PHP

17. Finalmente, você precisa testar que seu servidor está usando as duas versões do PHP. Você pode criar um muito básico informações.php Script nos diretórios raiz do documento de seus sites, como mostrado.

# echo "">/var/www/html/exemplo1.com/info.php # echo "">/var/www/html/exemplo2.com/info.php 

18. Para aplicar todas as alterações que você fez acima, você precisa reiniciar Nginx, PHP-FPM e PHP56-PHP-FPM. Mas você pode primeiro verificar se os arquivos de configuração nginx para obter erros de sintaxe antes de fazê -lo.

# nginx -t # systemctl reinicie nginx php-fpm php56-php-fpm 
Verifique a configuração do nginx

19. Há uma outra última coisa a fazer, especialmente se você estiver executando seu servidor localmente, precisa configurar DNs locais usando /etc/hosts Arquivo como mostrado na tela abaixo.

192.168.56.10 Exemplo1.Por exemplo1 192.168.56.10 Exemplo2.por exemplo2 
Adicione o arquivo de sites para hosts

20. Por fim, abra um navegador da web e digite os seguintes endereços para verificar as versões do PHP instaladas no sistema.

http: // Exemplo1.com/índice.php http: // exemplo2.com/índice.php 
Verifique o Php 7.1 versão Verifique o Php 5.6 versão

É isso! Agora você pode implantar arquivos e testar sites com diferentes versões de PHP. Se você tiver alguma adição para fazer ou perguntas a serem apresentadas, use o formulário de comentário abaixo.