php-fpm chroot機能の使用

3457 ワード

nginx+php-fpmは現在php環境を構成するのに非常に流行している組合せの一つである.nginxはその合併能力が強く、軽く、速度が速く、多くの人に愛されており、php-fpmはその安全で、phpの処理速度が速く、nginxとの最適な組み合わせとなっている.php-fpmは非常に重要な機能chrootを提供しており、指定したサイトを完全に1つのディレクトリに制限することができ、システムと他の仮想マシンに対して良い隔離効果を果たすことができ、これはシステムの安全に対して間違いなく強化されている.以下、どのように構成するかを紹介する.
ドメイン名をwww.centosと仮定します.bz、サイトのルートディレクトリは/home/chroot/www.centos.bz/web、このサイトを/home/chroot/www.centosに制限する必要があります.bz.
 
1、php-fpm.conf構成
php-fpmを開く.confファイル、chrootを
 

  
  
  
  
  1. chroot = /home/chroot/www.centos.bz 

 
2、nginx配置
私たちはwww.centos.bzサイトは/home/chroot/www.centosに制限されています.bzなので、php-fpmの場合、このサイトのルートディレクトリは/webになっているので、nginxがphp-fpmに渡すサイトのルートディレクトリアドレスを変更する必要があります.
見つける
 

  
  
  
  
  1. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

に変更
 

  
  
  
  
  1. fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_name; 

 
3、一部のディレクトリの作成

  
  
  
  
  1. cd /home/chroot/www.centos.bz/ 
  2. mkdir -p tmp etc bin usr/sbin lib dev/ 
  3. mknod -m 0666 dev/null c 1 3 
  4. mknod -m 0666 dev/random c 1 8 
  5. mknod -m 0666 dev/urandom c 1 9 
  6. mknod -m 0666 dev/zero c 1 5 
  7. chmod 1777 tmp 

4、修復解析
www.centos.bzのphpが1つのディレクトリに完全に制限されると、phpがドメイン名を解析できなくなります.32ビットシステムを例にとると(64ビットライブラリファイルの場所はlib 64)次は修復のステップです.
 

  
  
  
  
  1. cd /home/chroot/www.centos.bz/ 
  2. cp /etc/hosts /etc/resolv.conf /etc/nsswitch.conf etc/ 
  3. cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libnss_dns.so.2,libnss_files.so.2,libresolv.so.2,libtermcap.so.2}  lib/ 

これでphpはドメイン名を解析できます.
 
5、sendmail機能の修復
同じchrootディレクトリでは、メールを送信できません.ここではmini_を使用します.sendmailは代わりにメールを送信します.同様に32ビットシステムを例に挙げる.
 

  
  
  
  
  1. cd /home/chroot/www.centos.bz/ 
  2. cp -P /bin/bash /bin/sh bin 
  3. cp /etc/passwd /etc/group etc 
  4. cd /tmp 
  5. wget http://www.acme.com/software/mini_sendmail/mini_sendmail-1.3.6.tar.gz 
  6. tar xzf mini_sendmail-1.3.6.tar.gz 
  7. cd mini_sendmail-1.3.6 
  8. make 
  9. cp mini_sendmail /home/chroot/www.centos.bz/usr/sbin/sendmail 

 
原文の出典:http://www.centos.bz/2012/05/php-fpm-chroot/