Devido a uma melhor compreensão do que desejo alcançar graças aMarcae seu anteriorresponder, estou postando uma variação (espero) mais clara e ligeiramente diferente da minha pergunta anterior, pois o tópico atingiu a saturação;
Estou tentando executar vários sites WordPress em um servidor nginx, onde cada site requer uma versão diferente de PHP. Desejo conseguir isso usando várias versões do PHP-FPM, cada uma executando uma versão diferente do PHP, separada do nginx.
Quero então usar .conf
arquivos para controlar qual servidor PHP-FPM cada site usa, permitindo que esse site seja executado na versão PHP desejada.(Conformecomentáriosseção)
Atualmente meu bloco de servidor para testite1 se parece com isso, executando a versão padrão do PHP.
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html/testsite1;
index index.php index.html index.htm;
server_name local.testsite1.com;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
Ele está localizado /var/nginx/sites-available/testsite1
e está vinculado simbolicamente a /var/nginx/sites-enabled/testsite1
. Cada bloco de servidor está localizado em um arquivo separado dentrosites-available
testsite1
testsite2
testsite3
Compilei uma versão diferente do PHP (5.3.3), mas não tenho certeza de como configurar vários servidores PHP-FPM e como fazer cada 'ponto' para uma versão diferente do PHP. Também preciso de orientação sobre como configurar vários .conf
arquivos para definir qual servidor PHP-FPM cada site WordPress usará.
(essencialmente, preciso de ajuda durante todo o processo...)
Responder1
Na minha experiência, uma estrutura de servidor simples como segue, que é suficiente para o seu caso.
Suposição
Você tem cerca de duas horas para configurá-los.
Suposição de ambiente de servidor
1 x servidor Nginx (Front-end, para processar arquivos estáticos)
2 x servidor PHP-FPM (Back-end, para processar script PHP)
1 x servidor de banco de dados (em outro servidor separado ou no servidor Nginx está tudo bem)
O servidor Nginx pode ser acessado porRede públicaeRede privada
Servidores PHP-FPM e servidor DB só podem ser acessados pelo servidor Nginx (Rede privada)
Rede pública, o que significa que pode ser acessado por pessoas que possuem internet.
Rede privada, que pode ser visto em um grupo de rede específico. (Classe A, Classe B, Classe C. Ex, 192.xx.xx.xx ou 10.xx.xx.xx ou 172.xxx.xxx.xxx)
Se você estiver usando VPS no Linode e DigitalOcean, ambos fornecem IP de rede privada, você pode seguir as instruções fornecidas por eles para configurá-lo.
Caso contrário, você pode configurar o seu próprioVPN (rede privada virtual)ou use seu roteador para construir um, é fácil, você pode pesquisar no Google tudo o que precisa.
Se você estiver usando Ubuntu, fazer uma VPN com configuração custa apenas menos de 5 minutos.
Antes da próxima etapa, sugiro que você configure as regras de firewall para evitar possíveis ataques. (Usando IPTABLES ou seu wrapper, FirewallD)
Embora façamos o PHP-FPM dedicado do Nginx, os arquivos PHP dos sites não podem ser passados pela porta TCP e pelo soquete Unix.
Assim, você deve gerenciar sua pasta raiz do servidor web.
Opções para gerenciar a pasta do site
Fazendo upload de seus sites para o servidor Nginx E servidores PHP-FPM com o MESMO PATH da pasta
Escreva um script para arquivos síncronos para todos os seus servidores
Usando GIT para todos os seus servidores.
Criando um NFS (Network File System) no Nginx ou outro servidor dedicado
Se você estiver usando o sistema *nix, sugiro a quarta opção devido a,
Primeiro, gerencie todos os arquivos do seu site em um servidor
Em segundo lugar, muito fácil de manter
Terceiro, backup em minutos (esta deve ser outra questão)
※ O servidor NFS atua como um servidor de armazenamento puro para seus sites
Algumas pessoas podem considerar o uso do NFS para causar latência na rede; no entanto, como para vários sites que aguardam para serem gerenciados, o NFS é uma maneira simples e eficiente.
Você pode usar o GOOGLE "NFS on Linux" para concluir a instalação e configuração desta etapa, custa cerca de 1 hora para o mais recente.
No entanto, esteja ciente de que o servidor NFS deve estar em umRede privadatambém.
Quando NFS, PHP-FPM e Nginx estão no mesmoRede privada, a latência da rede deverá ser menor.
Então vamos configurar onginx.conf
Suposição
Seu IP público Nginx é 202.123.abc.abc, ouça 80 (ou 443 se SSL estiver habilitado)
Seu PHP-FPM 5.5 está em 192.168.5.5, ouça 9008
Seu PHP-FPM 5.6 está em 192.168.5.6, ouça 9008
(exemplo adicional) Seu HHVM 3.4 está em 192.168.5.7 , ouça 9008
E você considera que o PHP 5.5 é sua versão PHP mais usada
server {
listen 80 default server;
server_name frontend.yourhost.ltd;
#root PATH is where you mount your NFS
root /home/www;
index index.php;
location ~ \.php$ {
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.5:9008;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
include fastcgi_params;
fastcgi_buffer_size 512k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
fastcgi_intercept_errors on;
}
}
#Here to set up you vhosts
include vhosts/*.conf;
As linhas acima devem ser colocadas antes da última}
Então, vá criando uma pasta chamada vhosts
dentro da pasta denginx.conf
Suposição
Você tem outro aplicativo usando PHP 5.6
Você tem outro aplicativo usando HHVM
Para PHP 5.6 (vhosts/app1.conf)
server {
server_name app1.yourhost.ltd;
listen 202.123.abc.abc:80;
index index.php;
#root PATH is where you mount your NFS
root /home/app1;
#Include your rewrite rules here if needed
include rewrite/app1.conf;
location ~ \.php($|/){
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.6:9008;
fastcgi_index index.php;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PHP_VALUE open_basedir=$document$
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /var/wwwlog/app1/access.log access;
error_log /var/wwwlog/app1/error.log error;
}
Para HHVM (vhosts/app2.conf)
server {
server_name app2.yourhost.ltd;
listen 202.123.abc.abc:80;
index index.php;
#root PATH is where you mount your NFS
root /home/app2;
#Include your rewrite rules here if needed
include rewrite/app2.conf;
location ~ \.hh($|/){
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.7:9008;
fastcgi_index index.hh;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.hh)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PHP_VALUE open_basedir=$document$
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /var/wwwlog/app2/access.log access;
error_log /var/wwwlog/app2/error.log error;
}
Desta forma, você pode até adicionar diferentes certificados SSL para seus vhosts.
Reinicie seu servidor e divirta-se!
EDITADO
Para instalar diferentes versões do PHP-FPM, você pode compilá-lo sozinho ou usando a pilha existente.
Recomendo https://github.com/centos-bz/EZHTTP/archive/master.zip
economizar seu tempo
Usando o método, (supondo que sua máquina tenha instalado WGET e UNZIP)
$ wget --no-check-certificadohttps://github.com/centos-z/EZHTTP/archive/master.zip?time=$(data +%s) -O server.zip
$ descompacte server.zip
$ cd mestre EZHTTP
$ chmod +x start.sh
$./start.sh
Escolha 1 na primeira tela
Escolha 1 na segunda tela (LNMP)
Escolha 1 ao perguntar qual versão do nginx você deseja instalar (do_not_install)
Escolha 1 ao perguntar qual versão do mysql você deseja instalar (do_not_install)
Escolha qual versão você deseja ao perguntar qual versão do PHP você deseja instalar
Mantenha todas as configurações como padrão (faça com que você gerencie PHP-FPM facilmente no futuro)
Escolha quais extensões extras você deseja, é claro que você pode ignorar, pois todas as extensões comuns serão instaladas posteriormente.
Deixe este shell começar a compilar!