欢迎您,零度科技专业海外服务器租用
公司电话: 24小时电话: 

当前位置:首页>帮助教程>Linux 系统教程

目录导航

给php-fpm分配独立的用户、独立进程,unix socket模式

台湾游戏服务器 发布于 2014-10-08  
Linux 系统教程
相关推荐
php安全设置之 php-fpm chroot功能
给php-fpm分配独立的用户、独立进程,unix socket模式
php-fpm unix socket,php-fpm性能优化

我希望每个用户都有独立的php-fpm程序,这样子不同用户间就不能影响太过严重了。
nginx程序由nginx用户运行,
haojiang用户根目录在/home/haojiang , 网站放在/home/haojiang/public_html
目的:用haojiang用户,运行php-fpm,处理/home/haojiang/public_html下所有的php文件,静态文件如html交给nginx处理
实现如:
Trackself的网站在/home/trackself/public_html
Haojiang的网站在/home/haojaing/public_html
Haojiang 和 trackself都有独立的php-fpm,不能互相影响

详细过程如下

以haojiang用户为例:(下面的代码直接复制如果出错,就手敲吧)
建立haojiang用户
useradd  haojiang
配置nginx
复制/etc/nginx/conf.d/default.conf 为 haojiang.conf,改动相应的部分
server {
    listen       80;
    server_name  haojiang.localhost;
    root   /home/haojiang/public_html;
    index  index.html index.htm index.php;

    location / {
        root   /home/haojiang/public_html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /home/haojiang/public_html;
    }

    location ~ \.php$ {
        root   /home/haojiang/public_html; 
        include /etc/nginx/fastcgi_params;
        fastcgi_pass   unix:/var/run/php-fpm-haojiang.sock;
        fastcgi_index  index.php;
    }
}
配置php-fpm
复制/etc/php-fpm.d/www.conf 为 haojiang.conf , 改动相应的部分
[haojiang]

listen = /var/run/php-fpm-haojiang.sock
listen.allowed_clients = 127.0.0.1
user = haojiang
group = apache
pm = dynamic
pm.max_children = 3
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
slowlog = /var/log/php-fpm/www-slow.log
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
重启服务使设置生效
Service nginx reload
Service php-fpm reload

权限的详细说明

按网上的N篇 文章,设置都出问题了,经常遇到 403,实在扭不过,于是决定认真研究一下权限了。
原来,根目录或者上级目录的权限非常重要
以haojiang用户为例,/home/haojiang即使所有者是haojiang, 但若/home目录没有给haojiang打开目录的权限,那一切白搭,即使你将/home/haojiang 给设置为777,haojiang用户也没法访问其中的文件。
我的目标是让haojiang用户运行php-fpm,来运行/home/haojiang/public_html中所有php文件,而静态文件交给nginx处理
第一步,要设置/home/haojiang正确的权限
chown –R haojiang:nginx /home/haojiang
chmod –R 750 /home/haojiang
简单解析一下:
Chown改变所有者,chmod改变权限,-R,使得子文件夹也一起变动
750这三个数字分别对应:文件所有者、组、其他人,注意了,文件所有者并非一定要归属于后面的组,其他人指的是除外前两者以外的人。
7=4+2+1  4是可读,2是可写,1是可执行,所以文件夹一般的权限至少得5
所以上面一行代码,haojiang所代表的php-fpm程序可随便折腾文件夹内所有内容
Nginx组所代表的nginx只能读和执行(打开index.html),不能写。除了这两个用户,其他所有的用户,什么权限也没。
第二步:设置上级文件夹的权限,至少给个5的权限
我们知道,上级文件夹,/home一般所有者都是root,所以有两个办法,
先讲一个简单的方法:755权限
Chmod 755 /home
这样子,haojiang和nginx至少都有5的权限了,够了,但此法不安全,而郁闷的是,默认的nginx+php-fpm的安装用的就是这个方法。
安全的设置方法,设置一个中间组叫webserver,将haojiang\nginx都归入这个组,这个时候给他5的权限,其他人不给权限750
groupadd webserver
usermod -a -G webserver haojiang
usermod -a -G webserver nginx
chown root:webserver /home
chmod 750 /home
Service nginx reload
Service php-fpm reload
(由于cache的存在,要service reload一下,否则测试出错)

总结权限:举一反三

上面的做法还有一个好处,假设多一个用户叫trackself,那么你一定不想让trackself能访问haojiang的文件吧。
Trackself的网站在/home/trackself/public_html
Haojiang的网站在/home/haojaing/public_html
所以用户haojiang 、 trackself 、 nginx都归入webserver组方便管理 , 让webserver组对/home 有5的权限,即
chown root:webserver /home
chmod 750 /home
但是针对/home/haojiang , 所有组则千万不能是webserver了,而是要一个含nginx的组了,如果有apache再加一个apache进去,但一定不能含有trackself,否则trackself就能读haojiang的文件了,由于我只有nginx做服务器,所以简单点(nginx有一个同名组就叫nginx,下面的nginx可按需要换成其他中间组):
chown –R haojiang:nginx /home/haojiang
chmod –R 750 /home/haojiang
同理对trackself
chown –R trackself:nginx /home/trackself
chmod –R 750 /home/trackself

排错:

查看某组下有什么用户:grep ‘^webserver’ /etc/group
查看某文件夹的读写权限:ls -l -d /home/haojiang
解析-rwxr-x— , r=read , w=write,x=x-application

原文来自零度科技:http://www.ldisp.com/a/linux/2014/php-fpm-users.shtml

上一篇:php-fpm unix socket,php-fpm性能优化
下一篇:CentOS wget15个下载实例指南

 
了解零度?

零度科技主营全球服务器租用,如果您有服务器租用需求请联系

海外服务器租用

推荐香港、美国、韩国。提供站群服务器、高防服务器租用

海外特价服务器

关注零度特价服务器频道,了解全球特价服务器。

1

业务咨询

    技术服务

      特价活动
        全站搜索
        热门搜索:
        会员
        0通知
        客服
        0特价
        搜索
        TOP
        香港高防服务器,远程桌面,韩国服务器,nginx,反向代理