亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

Nginx + PHP-FPM + APC=絕妙的組合

2024-08-30 12:24:05
字體:
來源:轉載
供稿:網友
本文所介紹的方法應該是目前讓PHP最快的辦法:Nginx + PHP-FPM + APC。我們將從安裝Nginx http服務器、PHP和PHP-FPM補丁,以及APC,詳細的講解這種方法的具體配置及應用,最終的效果如何?相信會讓你大吃一驚。

相關文章推薦:nginx學習教程初級篇  nginx+apache+squid搭建集群web環境

背景

過去兩年多來,我們的網站一直運行Apache+mod_php模塊,大多數時候這個組合應付得過來,但隨著流量的增加,我們注意到Apache已經顯得很吃力了,它開始瘋狂地吃內存,CPU也被全部搶占去了,我們需要找到一個更快的方法來解決問題。

Nginx是一個不錯的選擇,很多指標都超過了Apache,如I/O、CPU、內存和請求數/秒等,如果需要,隨時可以從Google搜索相關信息。從我個人的測試結果來看,Nginx和Apache之間的差異是很明顯的,不好意思,因為是非正式測試,因此相關數字我就不公布了,這也不是本文的重點。讓我更自信的是,我只需要幾個步驟就可以讓性能遠超Apache。

PHP-FPM?

很多人配置Nginx時可能都會選擇來自LightTPD項目的spawn-fcgi解析PHP,但使用spawn-fcgi有些問題,因此我打算放棄它另覓別的辦法。PHP-FPM是PHP FastCGI Process Manager的縮寫,即PHP FastCGI進程管理器,實際上它是PHP的一個補丁,旨在將FastCGI進程管理整合進PHP包中。

注意:即使你堅持使用Apache,也有很多原因跳過mod_php,直接通過FastCGI解析PHP。使用mod_php時,Apache處理載入PHP的每個請求會載入所有的庫,這是一個巨大的無畏開銷。如果使用FastCGI,PHP的行為更象應用程序服務器,PHP-FPM以及spawn-fcgi按需要載入和殺掉PHP實例,這樣做有很多好處,其中很重要的一點就是減少內存開銷。

讓我們開始吧

我們使用的是全新安裝的Ubuntu 8.10 Intrepid,第一件事情是安裝所有的依賴包。

  1. sudo apt-get install make bison flex gcc patch autoconf subversion locate  
  2. sudo apt-get install libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev
  3.  

準備好依賴包之后,我們就可以開始。

編譯PHP

我們下載的是PHP 5.2.8源代碼包,還有對應的PHP-FPM補丁,我們先打上補丁,然后再編譯。

  1. cd /usr/local/src/  
  2. sudo wget http://us.php.net/get/php-5.2.8.tar.gz/from/this/mirror  
  3. sudo tar zvxf php-5.2.8.tar.gz  
  4. sudo wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz  
  5. sudo gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | sudo patch -d php-5.2.8 -p1  
  6. cd php-5.2.8  
  7. sudo ./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --enable-pic --disable-rpath --enable-inline-optimization --with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex  
  8. sudo  make all install  
  9. sudo  strip /usr/local/bin/php-cgi 

如果在運行上面命令時遇到錯誤,很可能是因為缺少依賴包造成的。另外,確保你正確啟用和禁用了特定的PHP配置選項。緊接著我們通過PECL安裝一些將會用到的模塊:

  1. sudo pecl install memcache  
  2. sudo pecl install apc  
  3. sudo pecl install syck-beta 

在安裝apc模塊時,請務必關閉Apache選項,如果你沒有關閉,它也會提醒你。接下來復制我們常用的php.ini:

  1. sudo cp /usr/local/src/php-5.2.8/php.ini-recommended /usr/local/lib/php.ini 
  2.  

最后,我們建立符號鏈接:

  1. sudo mkdir /etc/php/  
  2. sudo ln -s /usr/local/lib/php.ini /etc/php/php.ini  
  3. sudo ln -s /usr/local/etc/php-fpm.conf /etc/php/php-fpm.conf 

PHP編譯到此結束,剩下要做的事情是修改php-fpm.conf設置,用文本編輯器打開/etc/php/php-fpm.conf,將進程屬主用戶修改為www-data,這個文件比較大,因此最好使用搜索功能,我想修改的值分別位于51、52、63和66行。

  1. <value name="owner">www-datavalue> 
  2. <value name="group">www-datavalue> 
  3. <value name="user">www-datavalue> 
  4. <value name="group">www-datavalue>
Nginx

 

和編譯PHP一樣非常簡單:

  1. cd ..  
  2. sudo wget http://sysoev.ru/nginx/nginx-0.6.35.tar.gz  
  3. sudo tar zxvf nginx-0.6.35.tar.gz  
  4. sudo rm -f nginx-0.6.35.tar.gz  
  5. cd nginx-0.6.35  
  6. sudo ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module  
  7. sudo make && sudo make install 

再創建一個鏈接:

  1. sudo ln -s /usr/local/nginx/conf /etc/nginx 
  2.  

下一步是可有可無的,但我一直使用至今,說說也無妨。打開/etc/nginx/nginx.conf,最終修改結果如下:

  1. user  www-data;  
  2. worker_processes  6;  
  3.  
  4. events {  
  5.     worker_connections  1024;  
  6. }  
  7.  
  8. http {  
  9.     include       mime.types;  
  10.     default_type  application/octet-stream;  
  11.     sendfile        on;  
  12.     keepalive_timeout  10 10;  
  13.  
  14.     gzip  on;  
  15.     gzip_comp_level 1;  
  16.     gzip_proxied any;  
  17.     gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;  
  18.  
  19.         log_format main '$remote_addr - $remote_user [$time_local] '  
  20.                   '"$request" $status  $body_bytes_sent "$http_referer" '  
  21.                   '"$http_user_agent" "$http_x_forwarded_for"';  
  22.  
  23.         access_log  /var/log/nginx_access.log  main;  
  24.  
  25.         error_log  /var/log/nginx_error.log debug;  
  26.  
  27.         include /usr/local/nginx/sites-enabled/*;  

我們也設置了一些FastCGI參數,讓PHP不會噎著,也可以避免Nginx 503錯誤,打開/etc/nginx/fastcgi_params,添加以下參數:

  1. fastcgi_connect_timeout 60;  
  2. fastcgi_send_timeout 180;  
  3. fastcgi_read_timeout 180;  
  4. fastcgi_buffer_size 128k;  
  5. fastcgi_buffers 4 256k;  
  6. fastcgi_busy_buffers_size 256k;  
  7. fastcgi_temp_file_write_size 256k;  
  8. fastcgi_intercept_errors on; 

最后,我們創建一個SystemV風格的啟動腳本,保存為/etc/init.d/nginx。

  1. #! /bin/sh  
  2. ### BEGIN INIT INFO  
  3. # Provides:          nginx  
  4. # Required-Start:    $all  
  5. # Required-Stop:     $all  
  6. # Default-Start:     2 3 4 5  
  7. # Default-Stop:      0 1 6  
  8. # Short-Description: starts the nginx web server  
  9. # Description:       starts nginx using start-stop-daemon  
  10. ### END INIT INFO  
  11.  
  12. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
  13. DAEMON=/usr/local/sbin/nginx  
  14. NAME=nginx 
  15. DESC=nginx 
  16.  
  17. test -x $DAEMON || exit 0  
  18.  
  19. # Include nginx defaults if available  
  20. if [ -f /etc/default/nginx ] ; then  
  21.         . /etc/default/nginx  
  22. fi  
  23.  
  24. set -e  
  25.  
  26. case "$1" in  
  27.   start)  
  28.         echo -n "Starting $DESC: "  
  29.         start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid /  
  30.                 --exec $DAEMON -- $DAEMON_OPTS  
  31.         echo "$NAME."  
  32.         ;;  
  33.   stop)  
  34.         echo -n "Stopping $DESC: "  
  35.         start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid /  
  36.                 --exec $DAEMON  
  37.         echo "$NAME."  
  38.         ;;  
  39.   restart|force-reload)  
  40.         echo -n "Restarting $DESC: "  
  41.         start-stop-daemon --stop --quiet --pidfile /  
  42.                 /usr/local/nginx/logs/$NAME.pid --exec $DAEMON  
  43.         sleep 1  
  44.         start-stop-daemon --start --quiet --pidfile /  
  45.                 /usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS  
  46.         echo "$NAME."  
  47.         ;;  
  48.   reload)  
  49.       echo -n "Reloading $DESC configuration: "  
  50.       start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid /  
  51.           --exec $DAEMON  
  52.       echo "$NAME."  
  53.       ;;  
  54.   *)  
  55.         N=/etc/init.d/$NAME  
  56.         echo "Usage: $N {start|stop|restart|force-reload}" >&2  
  57.         exit 1  
  58.         ;;  
  59. esac  
  60.  
  61. exit 0 

不要忘了設置可執行權限。

設置你的網站

 

這一階段的工作主要按你自己的習慣完成,這里僅做一個粗略的介紹。首先我們創建一個目錄來存放我們的網站配置文件:

  1. sudo mkdir /usr/local/nginx/sites-enabled  
  2. sudo ln -s /usr/local/nginx/sites-enabled /etc/sites 
  3.  

接下來為我們的網站增加一個conf文件/etc/sites/default.conf,內容如下:

  1. server {  
  2.         listen *:80;  
  3.  
  4.         location / {  
  5.                 root   /var/www/default/pub;  
  6.                 index index.php;  
  7.  
  8.                 # if file exists return it right away  
  9.                 if (-f $request_filename) {  
  10.                         break;  
  11.                 }  
  12.  
  13.                 # otherwise rewrite the fucker  
  14.                 if (!-e $request_filename) {  
  15.                         rewrite ^(.+)___FCKpd___12nbsp;/index.php$1 last;  
  16.                         break;  
  17.                 }  
  18.  
  19.         }  
  20.  
  21.         # if the request starts with our frontcontroller, pass it on to fastcgi  
  22.         location ~ ^/index.php  
  23.         {  
  24.                 fastcgi_pass 127.0.0.1:9000;  
  25.                 fastcgi_param SCRIPT_FILENAME /var/www/default/pub$fastcgi_script_name;  
  26.                 fastcgi_param PATH_INFO $fastcgi_script_name;  
  27.                 include /usr/local/nginx/conf/fastcgi_params;  
  28.         }  

上面這個conf文件控制網站的前端風格,其中包括Wordpress,cake等,注意靜態內容不是通過FastCGI解析的。另外,你可能需要修改/var/www/default文件,設置網站文件的默認放置位置。

啟動

我們的工作結束了,啟動看一下效果。

  1. sudo php-fm start  
  2. sudo /etc/init.d/nginx start 

現在可以測試一下你的網站,看看它工作得如何,如有任何疑問,請隨時提出。

原文名:NGINX + PHP-FPM + APC = Awesome         

原文出處:interfacelab.com/nginx-php-fpm-apc-awesome/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一男人天堂| 亚洲欧美一区二区三区四区| 亚洲第一综合天堂另类专| 国语对白做受69| 在线播放精品一区二区三区| 亚洲午夜久久久久久久| 奇米影视亚洲狠狠色| 亚洲图片欧美午夜| 国产精品吊钟奶在线| 亚洲淫片在线视频| 亚洲一区二区中文字幕| 国产精品盗摄久久久| 欧美最猛性xxxx| 精品视频在线导航| 亚洲国产欧美一区二区三区久久| 福利精品视频在线| 97在线视频国产| 精品久久久精品| 亚洲色无码播放| 国产一区二区三区视频| 欧美一区二区视频97| 亚洲xxxx妇黄裸体| 国产91对白在线播放| 日韩av不卡电影| 成人免费看吃奶视频网站| 久久久女人电视剧免费播放下载| 亚洲第一区中文99精品| 国产精品一区二区三| 亚洲精品日韩丝袜精品| 欧美精品videos性欧美| www国产亚洲精品久久网站| 国产日韩欧美中文| 日本国产欧美一区二区三区| 国产精品福利网| 国产精品久久久久91| 亚洲视频第一页| 97香蕉久久超级碰碰高清版| 欧美激情videoshd| 97久久国产精品| 亚洲激情视频在线| 久久手机精品视频| 亚洲国产中文字幕在线观看| 7777精品视频| www.日韩系列| 亚洲人成在线观看网站高清| 国产精品美女呻吟| 日本一区二区在线免费播放| 国产精品一区二区三区毛片淫片| 亚洲欧美精品在线| 欧美国产视频一区二区| 精品国产一区久久久| 性欧美视频videos6一9| 亚洲国产精品国自产拍av秋霞| 91在线国产电影| 日韩精品视频三区| 国产精品白嫩美女在线观看| 欧美在线视频播放| 国产精品国语对白| 亚洲福利视频久久| 爱福利视频一区| 亚洲成人aaa| 成人性生交大片免费看视频直播| 国产精品免费电影| 日韩欧美在线视频免费观看| 92裸体在线视频网站| 国产欧美一区二区三区视频| 97在线视频一区| 色婷婷综合久久久久中文字幕1| 亚洲美女av在线| 日韩中文第一页| 国产精品免费小视频| 欧美日韩成人在线播放| 久久这里有精品| 亚洲日韩中文字幕在线播放| 亚洲欧美一区二区三区情侣bbw| 精品亚洲永久免费精品| 久久91超碰青草是什么| 中文字幕久久亚洲| 亚洲精品福利免费在线观看| 日韩成人av网| 欧美亚洲日本黄色| 欧美成人午夜激情| 上原亚衣av一区二区三区| 欧美性做爰毛片| 成人免费观看a| 久久久久久久久电影| 日韩精品免费在线播放| 亚洲在线视频福利| 奇门遁甲1982国语版免费观看高清| 成人在线播放av| 欧美国产一区二区三区| 亚洲精品国精品久久99热一| 亚洲国产精品嫩草影院久久| 国精产品一区一区三区有限在线| 欧美黄色成人网| 亚洲色图15p| 在线视频日韩精品| 精品国产欧美成人夜夜嗨| 亚洲专区在线视频| 中文字幕日韩av电影| 最近免费中文字幕视频2019| 日韩中文字幕在线视频| 中文字幕日韩专区| 成人xxxx视频| 国产成人综合一区二区三区| 日韩精品在线电影| 3344国产精品免费看| 国产精品自拍偷拍视频| 精品国内产的精品视频在线观看| 久久久精品999| 国产精品久久久久国产a级| 久久久久久这里只有精品| 欧美一级片免费在线| 日韩中文字幕视频在线观看| 国产精品一久久香蕉国产线看观看| 亚洲乱码国产乱码精品精| 欧美野外猛男的大粗鳮| 神马国产精品影院av| 日韩亚洲成人av在线| 欲色天天网综合久久| 久久久久成人精品| 日韩精品在线影院| 麻豆一区二区在线观看| 亚洲人成免费电影| 91亚洲午夜在线| 欧美极品美女视频网站在线观看免费| 一本色道久久88综合日韩精品| 韩国三级电影久久久久久| 一本色道久久综合亚洲精品小说| 一区二区成人精品| 欧美高清视频在线| 色琪琪综合男人的天堂aⅴ视频| xvideos亚洲| 国产成人精品在线观看| 国产精品自拍偷拍| 欧美成人一区在线| 国产精品一区二区三区免费视频| 亚洲日韩中文字幕| 日韩在线视频观看| 日韩69视频在线观看| 这里只有视频精品| 色婷婷综合久久久久| 久久91精品国产91久久跳| 日本高清+成人网在线观看| 粉嫩老牛aⅴ一区二区三区| 91麻豆桃色免费看| 精品视频一区在线视频| 亚洲天堂男人的天堂| 亚洲japanese制服美女| 亚洲男人天天操| 欧美精品激情blacked18| 国产精品h在线观看| 国产色婷婷国产综合在线理论片a| 日韩亚洲欧美成人| 日韩欧美亚洲综合| 国产亚洲精品高潮| 欧美激情一区二区三区成人| 久久91精品国产91久久久| 久久中文字幕一区| 久久久99久久精品女同性| 欧美激情一区二区三区高清视频| 国模叶桐国产精品一区| 国产精品久久久精品| 亚洲一级免费视频|