如果你想要快速在生产环境下实现多个网站应用使用多版本的php,其实市面上的现成的套件已经太多太多了,随便哪个都可以快速实现。(但从个人角度,我不推荐也不会真的建议在任何生产环境下使用这类套件,年年被爆破的案例太多了)Nginx + PHP 的组合里比较多见的是 Nginx + php-fpm 的组合,也有 Nginx + Apache(mod) 的,但那个就不展开了。在这种模式下, Nginx 其实就是个 http 的handler,接住请求和处理静态文件就可以,动态的文件其实全部发送给了 php-fpm 去处理,其实你想要实现多个共存,本质上是让 php-fpm 分别跑在不同的端口上就可以了。随便你多少个版本的 php 都和 nginx 其实没太大关系,只要端口错开, nginx 都能处理。一个demo配置# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }新的站点使用 9001 或者其他端口,只要不和已有端口冲突就可以了。
不同版本的php安装时候会生成各自单独的目录,比如说/usr/local/php5.6/xxx,/usr/local/php7等等,另外真正处理nginx请求的,其实是php-fpm,他一般由端口或者sock文件的形态存在。从表现形式上来看不同的php版本对应的就是不同的端口或者sock文件。nginx中php的核心的转发配置项fastcgi_pass后面可以指定转发到对应的php的端口或者sock文件,也就是不同版本的php来处理相应的请求
编译时指定不同的 --prefix 目录前缀启动php-fpm时, 如果用端口, 指定不同的端口启动php-fpm时, 如果是用 unix sock, 指定不同的路径在nginx.conf 中, proxy_pass 指定到你想启动的php-fpm端口(或sock文件) 如果要按路径指定不同的版本, 使用 location 路径前缀
如果你想要快速在生产环境下实现多个网站应用使用多版本的php,其实市面上的现成的套件已经太多太多了,随便哪个都可以快速实现。
(但从个人角度,我不推荐也不会真的建议在任何生产环境下使用这类套件,年年被爆破的案例太多了)
Nginx + PHP 的组合里比较多见的是 Nginx + php-fpm 的组合,也有 Nginx + Apache(mod) 的,但那个就不展开了。在这种模式下, Nginx 其实就是个 http 的handler,接住请求和处理静态文件就可以,动态的文件其实全部发送给了 php-fpm 去处理,其实你想要实现多个共存,本质上是让 php-fpm 分别跑在不同的端口上就可以了。
随便你多少个版本的 php 都和 nginx 其实没太大关系,只要端口错开, nginx 都能处理。
一个demo配置
新的站点使用 9001 或者其他端口,只要不和已有端口冲突就可以了。