php-fpm多用户运行的两种方式

php-fpm各个站要是以同样的用户运行的话,一个网站要是被攻击了的话,可能会威胁到其他网站。当然解决方法不仅仅是以多用户的方式去运行php-fpm,还可以配置open_basedir,但是测试了一下,貌似只有在php5.3以上才有效。

下面以php5.3.28为例,配置多用户运行php-fpm:

第一种:一个php-fpm主进程

这种方式比较简单,也只需要一个php-fpm自启动文件

首先我们查看一下原php-fpm.conf的这个配置文件,分为两个部分,一个是global块,另外一个是自定义的块,配置文件里面称为pool池,默认叫“www”。在global池的上方,有一行注释了的“include=etc/fpm.d/*.conf”配置项,再通过www池的配置,我们可知可以通过不同的池来配置不同的用户,来达到多个用户运行php-fpm的目的,步骤如下:

1、在etc目录下创建fpm.d目录

 
    
1
2
mkdir fpm.d
3

2、复制php-fpm.conf 到fpm.d目录下并重命名,比如 blog.conf

 
    
1
2
cp php-fpm.conf ./fpm.d/blog.conf
3

3、进入fpm.d目录,修改blog.conf

 
    
1
2
cd fpm.d
3
vim blog.conf
4

4、删除前面的global块,或者注释掉

5、修改[www]为其他,比如你[blog]

6、配置[blog]池,主要修改两个地方:

6.1:第一处为运行的用户和用户组

即将

 
    
1
2
user = www
3
group = www
4

修改为

 
    
1
2
user=nobody #具体用哪个用户视自己情况而定,我只做个示例
3
group=nobody
4

6.2:修改监听的端口或者socket:

即将:

 
    
1
2
listen = 127.0.0.1:9000
3

修改为:

 
    
1
2
listen = /var/socket/php-fpm/blog.socket #php-fpm需要自己创建,当然也可以直接放在php-fpm目录下
3

修改成其他端口也是可以的,比如:listen = 127.0.0.1:9001

7、到主配置文件 php-fpm.conf将“include=…”前面的注释去掉,让它去读取fpm.d目录下的配置文件;

8、到此第一种方案就修改完毕了,重新启动测试一下:

 
    
1
2
service php-fpm reload
3

第二种:两个php-fpm主进程

这种方法需要独立的配置文件和独立的自启动文件:

1、复制一份php-fpm.conf主配置文件

 
    
1
2
cp php-fpm.conf php-fpm-blog.conf
3

2、修改主配置文件

 
    
1
2
vim php-fpm-blog.conf
3

2.1:修改[global]下pid和error_log文件的路径

修改 pid=run/php-fpm.pid 为 pid=run/php-fpm-blog.pid 

修改 error_log = /log/php-fpm.log 为 error_log = /log/php-fpm-blog.log

2.2:修改池的名称[www]为[blog],不过这个可以不用修改了,因为这里和原来的进程是独立的

2.3:修改用户和用户组;

2.4:监听端口或socket文件;

以上两部可以按照第一种方案进行修改,这里就不再重复

3、进入/etc/init.d目录,复制一份自启动文件

 
    
1
2
cp php-fpm php-fpm2
3

4、修改自启动文件php-fpm2:

4.1:修改配置文件路径

 
    
1
2
php_fpm-CONF=${prefix}/etc/php-fpm.conf
3

 
    
1
2
php_fpm-CONF=${prefix}/etc/php-fpm-blog.conf
3

这个路径就是刚才的主配置文件

4.2:修改PID文件路径:

 
    
1
2
php_fpm_PID=${prefix}/var/run/php-fpm.pid
3

为:

 
    
1
2
php_fpm_PID=${prefix}/var/run/php-fpm-blog.pid
3

这个路径要和主配置文件中的pid路径一致

5、修改完毕后添加自动启动

 
    
1
2
chkconfig --add php-fpm2
3
chkconfig --level 2345 php-fpm2 on
4

6、启动服务

 
    
1
2
service php-fpm2 start
3

本文出自 全栈笔记 任亦伟 版权所有,你可以在保留原文地址:php-fpm多用户运行的两种方式 及作者的情况下到你的网站或博客。

你可能感兴趣的:(Web服务器)