Nginx與PHP(FastCGI)的安裝、配置與最佳化

來源:互聯網
上載者:User
FastCGI的介紹和工作原理  首先簡單的介紹下FastCGI:   FastCGI是語言無關的、可伸縮結構的CGI開放擴充,其主要行為是將CGI解譯器進行保持在記憶體中並因此獲得較高的效能。眾所周知,CGI解譯器的反覆載入是CGI效能低下的主要原因,如果CGI解譯器保持在記憶體中並接受FastCGI進程管理器調度,則可以提供良好的效能、伸縮性、Fail-Over特性等。   FastCGI的工作原理是:   (1)FastCGI進程管理器自身初始化,啟動多個CGI解譯器進程(多個php-cgi進程)並等待來自Web Server的串連。在文本中,採用PHP-FPM進程管理器啟動多個php-cgi FastCGI進程。啟動php-cgi FastCGI進程時,可以配置以TCP和UNIX通訊端兩種方式啟動。   (2)當用戶端請求達到Web伺服器(Nginx)時,Web伺服器將請求採用TCP協議或UNIX通訊端方式轉寄到FastCGI主進程,FastCGI主進程選擇並串連到一個CGI解譯器(子進程)。Web伺服器將CGI環境變數和標準輸入發送到FastCGI子進程php-cgi。   (3)FastCGI子進程完成處理後將標準輸出和錯誤資訊從同一串連返回Web伺服器(Nginx)。當FastCGI子進程關閉串連時,請求便告知處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理的下一個串連。而在一般的普通CGI模式中,php-cgi在此便退出了。 PHP-FPM  PHP-FPM是一個PHP FastCGI管理器,是只用於PHP的,可以在 http://cn2.php.net/downloads.php下載得到.PHP-FPM其實是PHP原始碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP原始碼中,在編譯安裝PHP後才可以使用。   新版PHP已經整合php-fpm了,不再是第三方的包了,推薦使用。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制記憶體和進程、可以平滑重載PHP配置,比spawn-fcgi具有更多優點,所以被PHP官方收錄了。在./configure的時候帶 –enable-fpm參數即可開啟PHP-FPM,其它參數都是配置php的,具體選項含義可以查看這裡。   安裝前準備:  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://us1.php.net/get/php-5.5.10.tar.gz/from/this/mirrortar zvxf php-5.5.10.tar.gzcd php-5.5.10./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-pcntl --enable-mbregex \--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \--with-gd --with-jpeg-dir make all install  完成php-fpm後,對其運行使用者進行配置: cd /usr/local/phpcp etc/php-fpm.conf.default etc/php-fpm.confvi etc/php-fpm.conf 修改:user = nginxgroup = nginx 如果nginx使用者不存在,那麼先添加nginx使用者groupadd nginxuseradd -g nginx nginx  修改nginx設定檔以支援php-fpm  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000location ~ \.php$ {    root html;    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params;}  建立測試php檔案   在/usr/local/nginx/html下建立index.php檔案,輸入如下內容  <?php    echo phpinfo();?>  啟動php-fpm和nginx 12/usr/local/php/sbin/php-fpm /usr/local/nginx/nginx 

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。