
在PHP-FPM中设立chroot,有很好的隔离作用,提高系统安全性,但是要想建立一个合理的PHP-FPM Chroot环境难度有点大,比用debootstrap等工具建立还要麻烦,下面通过参考相关资料,把PHP-FPM之Chroot执行环境整理出来,分享给大家。
本文以Ubuntu 14.04.2为例,php-fpm使用的是 ppa:ondrej/php5-5.6 提供的PHP5.6版本,跟系统自带以及Debian系统的php-fpm和系统目录结构应该是一致的。CentOS请自行调整。
php-fpm的chroot环境配置和所使用的服务器前端没有关联,也不强求Apache/Nginx进行chroot。当然那样更安全——也更复杂。
1.建立目录结构
chroot的目录选择为 /var/www/chroot ,其中页面文件放置在 /var/www/chroot/public 。
执行下面的命令建立基本的目录结构:
bash
mkdir -p /var/www/chroot/
cd /var/www/chroot
mkdir -p public bin dev tmp usr/sbin/ usr/share/zoneinfo/ var/run/nscd/ var/lib/php5/sessions var/www
cp -a /dev/zero /dev/urandom /dev/null dev/ #注3
chmod –reference=/tmp tmp/
chmod –reference=/var/lib/php5/sessions var/lib/php5/sessions #注4
chown -R root:root . #注2
chown -R www-data:www-data public/ #注2
cd var/www
ln -s ../.. chroot #注1
下面是此时目录结构,之后还会添加一些新的东西:
/var/www/chroot/
├── bin
├── dev
│ ├── null
│ ├── urandom
│ └── zero
├── public
├── tmp
├── usr
│ ├── sbin
│ └── share
│ └── zoneinfo
└── var
├── lib
│ └── php5
│ └── sessions
├── run
│ └── nscd
└── www
└── chroot –