nginx和分布式php-fpm
前言
生产环境中,我们经常会遇到分布式的环境。今天分享一下php-fpm
的分布式环境搭建。架构图如下:
环境中会用到一台nginx
和多台php-fpm
,nginx
只处理静态文件,php-fpm
负责处理对应的php
代码。
配置php-fpm
这里为了演示的方便使用docker
环境。
使用官方的php:5.6-fpm
镜像,这里最重要的是php
需要监听端口,而不是监听unix套接字文件, 并将监听端口暴露出来让nginx
进行代理。
有兴趣的可以看看官方的Dockerfile
,如下图为官方Dockerfile
中的一部分,我们需要监听的端口9000
官方已经写好了
- 创建
php
代码存放目录
|
|
- 下周php探针进行测试
|
|
- 启动镜像
|
|
这里有个-v
挂着php
代码,/data/wwwroot/default
为什么是这个目录一会再介绍。
配置nginx
nginx
我们同样适用官方的镜像。
- nginx.conf
|
|
这是我们的主要配置,主要看location
中的配置,相信大家对这些配置都不陌生,参考Nginx官方文档 fastcgi_module 模块
启用了两台php-fpm
服务器,所以这里配置服务器组进行代理。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意配置否则会出现无法找到文件的错误,表示去php-fpm
服务器的/data/wwwroot/default
目录下找相关的php
文件, 就是刚才启动php-fpm
镜像挂载的目录
- 启动
nginx
镜像
|
|
测试
访问: http://{nginx}/tz.php
可以看到两次访问到不通的服务器