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 ykdhttb.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数据库
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
4、修改php应用配置,使用TCP连接MySQL数据库
请问下这一步如何修改呢?
比如原来是用“localhost”的,改为“127.0.0.1”。