偏偏网管弄成ngnix+php-fpm模式,而且还把web放到了chroot里面,折腾了很久,转一篇介绍文章:
from:http://www.hmqq.net/2011/06/ngnix-php-fpm-chroot/
Nginx+PHP-FPM是目前用得比较多的组合,如果在一台服务器上面跑多个站点,当一个安全性比较差的站点被入侵之后,其他网站也就无安全性可言了。PHP-FPM支持chroot功能,能够解决前面提到的安全问题,只是这功能默认没启用,配置也稍有点麻烦。
PHP-FPM的chroot配置可以参考以下方式:
1、修改php-fpm配置文件,如A网站的配置文件为/etc/php-fpm.d/a.conf,在a.conf中增加
chroot = /var/www/a
2、修改nginx的虚拟主机配置
fastcgi_param SCRIPT_FILENAME /var/www/a/$fastcgi_script_name;
要改为
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
3、建立必要的目录,复制文件。
mkdir tmp etc lib64 bin
cp /etc/hosts /etc/resolv.conf /etc/nsswitch.conf /etc/localtime etc
cp /lib64/libnss_dns.so.2 lib64 #域名解析需要,32位的系统就复制/lib/libnss_dns.so.2
chmod 1777 tmp
mkdir -p var/lib/php/session #php.ini的session.save_path设置
chown root:apache var/lib/php/session
chmod 770 var/lib/php/session
mkdir -p usr/share/zoneinfo/Asia
cp /usr/share/zoneinfo/Asia/Shanghai usr/share/zoneinfo/Asia #跟php.ini配置的时区一致
4、修改php应用配置,使用TCP连接MySQL数据库
——关键是这一步,将配置里面的localhost替换为IP,如127.0.0.1 ,否则由于mysql.sock在webroot外面,会导致无法链接上mysql
5、使php mail()函数可用
下载femail源代码,编译成静态链接的二进制文件,复制到usr/sbin/sendmail。
建立etc/femail.conf文件,内容如下:
smtphost = 127.0.0.1
myname = aa.me
找一个静态链接的ash.static文件,复制到bin/sh,测试发送邮件。
echo ‘Subject: test’|chroot /var/www/a /usr/sbin/sendmail -v xx@aa.me