nginx本身不能處理PHP,它只是個web伺服器,當接收到請求後,如果是php請求,則發給php解譯器處理,並把結果返回給用戶端。
nginx一般是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回被nginx
本文以php-fpm為例介紹如何使nginx支援PHP
一、編譯安裝php-fpm
什麼是PHP-FPM
PHP-FPM是一個PHP FastCGI管理器,是只用於PHP的,可以在 http://php-fpm.org/download下載得到.
PHP-FPM其實是PHP原始碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP原始碼中,在編譯安裝PHP後才可以使用。
新版PHP已經整合php-fpm了,不再是第三方的包了,推薦使用。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制記憶體和進程、可以平滑重載PHP配置,比spawn-fcgi具有更多有點,所以被PHP官方收錄了。在./configure的時候帶 –enable-fpm參數即可開啟PHP-FPM,其它參數都是配置php的,具體選項含義可以查看這裡。
安裝前準備
centos下執行
yum -y install gcc automake autoconf libtool make yum -y install gcc gcc-c++ glibc yum -y install libmcrypt-devel mhash-devel libxslt-devel \ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2 -devel \ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \ krb5 krb5-devel libidn libidn-devel openssl openssl-devel |
新版php-fpm安裝(推薦安裝方式)
wget http: //cn2 .php.net /distributions/php-5 .4.7. tar .gz tar zvxf php-5.4.7. tar .gz cd php-5.4.7 . /configure --prefix= /usr/local/php -- enable -fpm --with-mcrypt \ -- enable -mbstring --disable-pdo --with-curl --disable-debug --disable-rpath \ -- enable -inline-optimization --with-bz2 --with-zlib -- enable -sockets \ -- enable -sysvsem -- enable -sysvshm -- enable |