Na minha experiência, uma estrutura de servidor simples da seguinte forma, o que é suficiente para o seu caso.
Suposição
You have about two hours to set them up.
Suposição de ambiente do servidor
1 x Nginx server (Front-end, to process static files)
2 x PHP-FPM server (Back-end, to process PHP script)
1 x database server (Either in another separated server or in Nginx server is okay)
Nginx server can be accessed by Public Network and Private Network
PHP-FPM servers and DB server can only be accessed by Nginx server (Private Network)
Rede pública , o que significa que pode ser acessado por pessoas que têm internet.
Rede privada , que pode ser vista 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 o VPS no Linode e no DigitalOcean, ambos fornecerão IP de rede privada, você poderá seguir as instruções dadas por eles para configurá-lo.
Se não, você pode configurar sua própria VPN (Rede Privada Virtual) ou usar seu roteador para criar um, é fácil, você pode GOOGLE tudo o que você precisa.
Se você estiver usando o Ubuntu, fazer uma VPN com configuração custa apenas menos de 5 minutos.
Antes da próxima etapa, sugira que você configure as regras do firewall para evitar possíveis ataques. (Usando IPTABLES ou seu wrapper, FirewallD)
Embora façamos o PHP-FPM como dedicado a partir do Nginx, no entanto, os arquivos PHP dos sites não podem ser passados através da porta TCP e do Unix.
Assim, você precisa gerenciar sua pasta raiz para o servidor da Web.
Opções para gerenciar a pasta do site
Uploading your websites to Nginx server AND PHP-FPM servers with SAME folder PATH
Write a script to synchronous files to all of your servers
Using GIT to all your servers.
Creating a NFS (Network File System) on Nginx or another dedicated server
Se você estiver usando o sistema * nix, sugiro a quarta opção a ser feita,
First, manage all your websites files in one server
Second, very easy to maintain
Third, backup in minutes (This should be another question)
※ NFS server acts as a pure storage server for your websites
Algumas pessoas podem considerar o uso da latência de rede do NFS, no entanto, como para vários sites que estão aguardando para serem gerenciados, o NFS é uma maneira simples e eficiente.
Você pode usar o GOOGLE "NFS no Linux" para concluir a instalação e configuração dessa etapa, o que custa cerca de uma hora para ser mais recente.
No entanto, esteja ciente de que o servidor NFS também deve estar em uma Rede Privada .
Quando o NFS, o PHP-FPM e o Nginx estão na mesma Rede Privada , a latência da rede deve ser menor.
Então vamos configurar o nginx.conf
Suposição
Your Nginx public IP is 202.123.abc.abc, listen 80(or 443 if SSL enabled)
Your PHP-FPM 5.5 is on 192.168.5.5, listen 9008
Your PHP-FPM 5.6 is on 192.168.5.6, listen 9008
(additional example) Your HHVM 3.4 is on 192.168.5.7 , listen 9008
And you consider PHP 5.5 is your most used PHP version
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;
Above lines should be put before the last }
Em seguida, vá criando uma pasta chamada vhosts
dentro da pasta de nginx.conf
Suposição
You have another one application is using PHP 5.6
You have another application is using 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;
}
Dessa forma, você pode até adicionar certificados SSL diferentes para seus vhosts.
Reinicie seu servidor e divirta-se!
EDITADO
Para instalar diferentes versões do PHP-FPM, você pode compilar você mesmo, ou usando uma pilha existente.
Recomende https://github.com/centos-bz/EZHTTP/archive/master.zip
para economizar seu tempo
Usando o método, (Assumindo que sua máquina instalou o WGET e o UNZIP)
$ wget --no-check-certificate https://github.com/centos-z/EZHTTP/archive/master.zip?time=$(date +%s) -O server.zip
$ unzip server.zip
$ cd EZHTTP-master
$ chmod +x start.sh
$ ./start.sh
Choose 1 in the first screen
Choose 1 in the second screen (LNMP)
Choose 1 when asking you which version of nginx you want to install(do_not_install)
Choose 1 when asking you which version of mysql you want to install(do_not_install)
Choose what version you want when asking you which version of PHP you want to install
Remain all settings be the default (Make you manage PHP-FPM easily in the future)
Choose what extra extensions you want, of course you can ignore cause all common extensions will be installed later.
Let this shell start compiling!