基于 Docker 的 php-fpm 如何使用 socket 方式进行连接

现有两个容器:nginx 和 php-fpm,我们通常的连接方式是采用 tcp 形式,配置 127.0.0.1:9000 将 php 相关请求转发给 php-fpm,而使用 socket 的连接方式,将获得更好的性能。

具体配置示例如下:

  1. 配置 docker-compose.yml

    version: '3'
    
    services:
    
      # Nginx
      nginx:
    	build:
    	  context: ./build/nginx
    	  args:
    		VERSION: 1.14
    	image: lnmp/nginx:1.14
    	...
    	volumes:
    	  .....
    	  - ./conf/php_fpm/sock:/sock
    	links:
    	  - php_fpm
    
      # PHP with fpm
      php_fpm:
    	build:
    	  context: ./build/php70_fpm
    	  args:
    		- VERSION=7.0
    	image: lnmp/php_fpm:7.0
    	  .....
    	volumes:
    	  .....
    	  # php-fpm 的配置
    	  - ./conf/php_fpm/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
    	  # 挂载宿主机 socket 目录,因为 nginx 服务也需要访问
    	  - ./conf/php_fpm/sock:/sock
    
  2. 修改 php-fpm 配置文件

    [global]
    
    daemonize = no
    
    [www]
    ;listen = 127.0.0.1:9000
    listen = /sock/php70-fpm.sock
    listen.mode = 0666
    
    .....
    
    
  3. 修改对应项目的 nginx 配置文件

    server {
    	listen 80;
    	server_name test.local; 
    	index index.html index.htm index.php;
    
    	root /usr/share/nginx/html/testProject;
    
    	.....
    
    	# 处理 php 文件
    	location ~ \.php {
    		# fastcgi_pass php_fpm:9000;
    		fastcgi_pass unix:/sock/php70-fpm.sock;
    		fastcgi_index index.php;
    		fastcgi_param SCRIPT_FILENAME  /var/www/html/testProject/$fastcgi_script_name;
    		include fastcgi_params;
    	}
    
    	.....
    
    }
    

以上操作完成后,重新使用 docker-compose up 启动服务。

提示:如果出现 502 或 找不到 xx.sock 文件的错误,请检查确认用户权限或相关设置是否正确。

转载于:https://my.oschina.net/antsky/blog/2964124

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值