通过nginx的多个版本的PHP
编辑:供将来参考
> Multiple versions of PHP through nginx> Nginx and different versions of PHP FPM + PHP
我正在使用PHP 5.5.12运行带有LEMP堆栈的Ubuntu 14.10.我有许多遗留的WordPress站点需要PHP 5.3.3以及一些使用相当新版本的PHP的WP站点,所有这些站点都在我本地计算机上的nginx上运行.
我的双手是关于虚拟机和沙箱的,所有我可以玩的是nginx,因此这个问题.我理解人们的安全问题,但我需要这些站点在本地运行,因此我可以测试损坏的功能,因为我将它们更新到最新的PHP / WP版本.
我想让nginx运行正确版本的PHP(使用php-fpm),具体取决于WordPress网站.根据another SF问题,实现此目的的一种方法是在不同的端口/套接字上运行不同的PHP版本,并配置nginx服务器块以使用相应的端口/套接字.
我已手动编译PHP 5.3.3以包含php-fpm,但这是我得到的最远的.
实际上,我希望有人能够更详细地解释this答案.我无法弄清楚如何“在不同的端口(或套接字)上运行每个版本的php-fpm”或“在你的nginx服务器块中的fastcgi_pass参数中配置相应的端口”.
我的一个服务器块看起来像这样供参考
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;
}
}
编辑:
我在单独的文件中使用单独的服务器块设置每个站点,sym链接在/ var / nginx / sites-available / testsite1和/ var / nginx / sites-enabled / testsite1之间.所以var / nginx / sites-available包含;
testsite1
testsite2
testsite3
...
理想情况下,我想知道下面的内容是否可能(因为这类似于如何使用不同的PHP版本设置apache)
testsite1 – 运行旧版本的PHP
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html/testsite1;
index index.php index.html index.htm;
server_name local.testsite1.com;
...settings to use older PHP version...
...remaining nginx settings...
}
testsite2 – 运行当前版本的PHP
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html/testsite2;
index index.php index.html index.htm;
server_name local.testsite2.com;
...settings to use currrent PHP version (if needed)...
...remaining nginx settings...
}
这可能吗?我问的原因是我宁愿避免将我的所有php文件重命名为php2以便运行(使版本控制变得痛苦).我不介意编辑nginx.conf文件或任何步骤,只要我不必重命名文件.
我还认为我需要在端口上使用套接字(fastcgi_pass unix:/var/run/php5-fpm.sock;),因为WordPress(尽管我对所有建议持开放态度).