最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx調(diào)用php-fpm出錯解決方法和nginx配置詳解

 更新時間:2014年03月11日 10:34:15   投稿:zxhpj  
這篇文章介紹了nginx調(diào)用php-fpm出錯的解決方法,最后給出了nginx配置方法,需要的朋友可以參考下

裝完了nginx和php-5.5,配置好了nginx調(diào)用php后,就開始啟動php-fpm。

使用下面的命令

復制代碼 代碼如下:

/usr/local/php/sbin/php-fpm

就可以啟動了。

在nginx的目錄中創(chuàng)建個php的檢測腳本index.php

結(jié)果在打開http://localhost/index.php

悲劇的發(fā)現(xiàn)居然無法打開 。查看日志文件,看了下報錯原因

復制代碼 代碼如下:

2013/07/01 22:34:26 [error] 3214#0: *64 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.168.19, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.168.140"

查看下端口 ??吹絧hp-fpm的9000端口已經(jīng)打開了,說明php-fpm是沒什么問題的,問題出在了nginx上了。可能是我的配置文件有問題。

找到nginx加載php配置的那塊。另外參考了下網(wǎng)上nginx的配置文件。

在第69行有一個調(diào)用腳本路徑

復制代碼 代碼如下:

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

我把路徑改下,改成下面的就可以了。
復制代碼 代碼如下:

 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

http://localhost/index.php

可以出現(xiàn)php的版本信息了。

大家還可以參考下面的配置方法

php-fpm不用再依賴其它的fastcgi啟動器,比如lighttpd的spawn-fcgi。
php-fpm的使用非常方便,配置都是在php-fpm.ini的文件內(nèi)
而啟動,重啟都可以從php/sbin/php-fpm中進行
更方便的是修改php.ini后可以直接使用php-fpm reload進行加載 無需殺掉進程就可以完成php.ini的修改加載
結(jié)果顯示使用php-fpm可以使php有不小的性能提升
php-fpm控制的進程.cpu回收的速度比較慢.內(nèi)存分配的很均勻
而spawn-cgi控制的進程CPU下降的很快.而內(nèi)存分配的比較不均勻.
有很多進程似乎未分配到,而另外一些卻占用很高.
可能是由于進程任務(wù)分配的不均勻?qū)е碌?而這也導致了總體響應(yīng)速度的下降
而php-fpm合理的分配.導致總體響應(yīng)的提到以及任務(wù)的平均
使用php-fpm需要在php源碼上打補丁,然后重新編譯php

一.下載php-fpm
wget http://cn.php.net/get/php-5.2.8.tar.gz/from/www.php.net/mirror
wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
與php-5.2.9在同一級目錄
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.9 -p1
補丁打好以后,編譯php的時候增加了下面幾個參數(shù):
–enable-fpm 激活fastcgi模式的fpm支持
–with-fpm-conf php-fpm的配置文件(默認是PREFIX/etc/php-fpm.conf)
–with-fpm-log php-fpm的日志文件(默認是PREFIX/logs/php-fpm.log)
–with-fpm-pid php-fpm的pid文件(默認是PREFIX/logs/php-fpm.pid)
./configure --prefix=/EBS/php \
--with-config-file-path=/EBS/php/etc \
--enable-fastcgi \
--enable-fpm \
--OTHERS
注:--enable-fastcgi \ 需要在--enable-fpm \的前面,否則,fpm不能編譯上。

二.編譯好php后,修改配置文件

vi /EBS/php/etc/php-fpm.conf
需要注意下面幾處配置
<value name="listen_address">127.0.0.1:9000</value>
這個表示php的fastcgi進程的ip地址以及端口
<value name="user">nobody</value>
<value name="group">nobody</value>
表示php的fastcgi進程以什么用戶以及用戶組來運行,默認該行是注釋掉的,需要打開
<value name="display_errors">0</value>
是否顯示php錯誤信息
<value name="max_children">5</value>
最大的子進程數(shù)目
運行php-fpm:
php-fpm用一個程序來控制fastcgi進程,這個文件在$PREFIX/sbin/php-fpm
/usr/local/php/sbin/php-fpm
該程序有如下參數(shù):
start 啟動php的fastcgi進程
stop 強制終止php的fastcgi進程
quit 平滑終止php的fastcgi進程
restart 重啟php的fastcgi進程
reload 重新加載php的php.ini
logrotate 重新啟用log文件
也就是說,在修改了php.ini之后,我們可以使用
/usr/local/php/sbin/php-fpm reload
這樣,就保持了在php的fastcgi進程持續(xù)運行的狀態(tài)下,又重新加載了php.ini。

復制代碼 代碼如下:

user www www;
worker_processes 10;
error_log logs/error.log notice;
pid logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
   use epoll;
   worker_connections 51200;
}
http
{
   include mime.types;
   default_type application/octet-stream;
   charset gb2312;
   server_names_hash_bucket_size 128;
   #sendfile on;
   #tcp_nopush on;
   keepalive_timeout 60;
   tcp_nodelay on;
   gzip on;
   gzip_min_length 1k;
   gzip_buffers 4 8k;
   gzip_http_version 1.1;
   gzip_types text/plain application/x-javascript text/css text/html application/xml;
   {
   listen 80;
   server_name 192.168.1.2;
   index index.html index.htm index.php;
   root /EBS/www;
   if (-d $request_filename)
   {
   rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
   }
   location ~ .*\.php?$
   {
   include fcgi.conf

   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   }
   log_format access '$remote_addr - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" $http_x_forwarded_for';
   access_log logs/access.log access;
   }
}

新建配置文件

復制代碼 代碼如下:

/usr/local/nginx/conf/fcgi.conf

注:nginx自帶了一個配置文件,/usr/local/nginx/conf/fastcgi_params,該配置文件缺少粗體字體的部分,會造成訪問php文件時報404錯誤。

復制代碼 代碼如下:

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;

四 配置XCache

1、安裝xcache模塊
wgethttp://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
tar -xvzf xcache-1.2.2.tar.gz
cd xcache-1.2.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xcache --enable-xcache-optimizer
make
make install
2、計算密碼的md5值
echo -n "password"|md5sum
5f4dcc3b5aa765d61d8327deb882cf99
3、配置XCache
;注:zend_extension,用來加載zend的擴展,是絕對路徑, extension是相對路徑,相對于extension_dir的相對路徑,非zend擴展
如果你更改路徑以后,一定要apachectl stop后再start,而不要restart。
vi /usr/local/php/etc/php.ini

添加:

復制代碼 代碼如下:

[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
; Change xcache.admin.user to your preferred login name
xcache.admin.user = "admin"
; Change xcache.admin.pass to the MD5 fingerprint of your password
; Use md5 -s "your_secret_password" to find the fingerprint
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
; Change xcache.size to tune the size of the opcode cache
xcache.size = 24M
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
; Change xcache.var_size to adjust the size of variable cache
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = On
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = On
xcache.coveragedump_directory = ""

5、重啟PHP模塊

正常load之后,
在phpinfo顯出的信息內(nèi)
Zend這快應(yīng)該會加上XCache的內(nèi)容

6、另外兩種加速模塊:
在我們的測試中,效果都要好于xcache,這3中加速不能同時存在兩種,有沖突。
6.1 apc

復制代碼 代碼如下:

wget http://pecl.php.net/get/APC-3.0.19.tgz
cd APC-3.0.19
/usr/local/php/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-apxs=/EBS/apache/bin/apxs --with-php-config=/EBS/php/bin/php-config
make
make install
6.2 eaccelerator
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip
cd eaccelerator-0.9.5.3
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/EBS/php/bin/php-config
make
make install
vi php.ini
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

五、使用nginx對應(yīng)多臺facgi服務(wù)器

思路:前端一臺nginx,用于做為負載均衡和處理靜態(tài)頁面。利用nginx的upstream模塊來將php請求分發(fā)到后段的php-fpm服務(wù)器上。
后端多臺php-fpm的服務(wù)器,只起php-fpm服務(wù)來處理php。
這樣做減少了php-fpm上的nginx服務(wù),相當于少了一層。

相關(guān)文章

  • 如何使用k8s部署nginx服務(wù)

    如何使用k8s部署nginx服務(wù)

    Deployment是用來定義和管理 Pod 的高級控制器,它描述了應(yīng)用程序的期望狀態(tài),例如需要運行的 Pod 數(shù)量、使用的鏡像版本等信息,本文給大家介紹如何使用k8s部署nginx服務(wù),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Nginx學習筆記之事件驅(qū)動框架處理流程

    Nginx學習筆記之事件驅(qū)動框架處理流程

    Nginx對請求的處理是通過事件觸發(fā)的,模塊作為事件消費者,只能被事件收集、分發(fā)器調(diào)用。在Nginx中,接收到一個請求時,不會產(chǎn)生一個單獨的進程來處理該請求,而是由事件收集、分發(fā)器(進程)調(diào)用某個模塊,由模塊處理請求,處理完后再返回到事件收集、分發(fā)器
    2014-07-07
  • windows7下安裝PHP+nginx的方法

    windows7下安裝PHP+nginx的方法

    這篇文章主要介紹了windows7下安裝PHP+nginx的方法,較為詳細的分析了Windows7環(huán)境下安裝php與nginx服務(wù)器環(huán)境的具體步驟與相關(guān)設(shè)置技巧,需要的朋友可以參考下
    2016-05-05
  • 聊聊Django+uwsgi+nginx服務(wù)器部署問題

    聊聊Django+uwsgi+nginx服務(wù)器部署問題

    這篇文章主要介紹了Django+uwsgi+nginx服務(wù)器部署的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Nginx中IF、AND、OR語句用法實例

    Nginx中IF、AND、OR語句用法實例

    這篇文章主要介紹了Nginx中IF、AND、OR語句用法實例,本文講解的是Ningx中的邏輯判斷語句用法,需要的朋友可以參考下
    2015-02-02
  • Nginx的基本概念和原理

    Nginx的基本概念和原理

    這篇文章主要介紹了Nginx的基本概念和原理,Nginx專為性能優(yōu)化而開發(fā),性能是器最重要的考量,實現(xiàn)上非常注重效率,能經(jīng)受高負載的考驗,據(jù)報告能支持高達50,000個并發(fā)連接數(shù)。下文我們就來看看Nginx概念和原理,需要的小伙伴可以參考一下
    2022-03-03
  • nginx ssl免密碼重啟教程詳解

    nginx ssl免密碼重啟教程詳解

    這篇文章給大家介紹了nginx 如何啟動以及nginx ssl 免密碼重啟 的方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • Nginx一個IP如何配置多個站點的方法教程

    Nginx一個IP如何配置多個站點的方法教程

    這篇文章主要給大家介紹了關(guān)于Nginx一個IP如何配置多個站點的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • 一次nginx 504 Gateway Time-out錯誤排查、解決記錄

    一次nginx 504 Gateway Time-out錯誤排查、解決記錄

    這篇文章主要介紹了一次nginx 504 Gateway Time-out錯誤排查、解決記錄,經(jīng)過反復檢查,發(fā)現(xiàn)造成這個問題的原因就是PHP的CURL沒有設(shè)置超時時間,解決辦法只要設(shè)置超時時間或者修改一下nginx的配置即可解決,需要的朋友可以參考下
    2014-05-05
  • 很詳細的Nginx配置說明

    很詳細的Nginx配置說明

    這篇文章主要為大家分享了一篇很詳細的Nginx配置說明,主要內(nèi)容包括Nginx常用功能、Nginx配置文件結(jié)構(gòu),想要了解Nginx配置的朋友不要錯過,參考一下
    2016-02-02

最新評論

七台河市| 昭苏县| 芒康县| 宝兴县| 科技| 吴堡县| 双柏县| 蓝田县| 温泉县| 即墨市| 鸡东县| 浠水县| 壤塘县| 黔西| 巢湖市| 隆安县| 宁晋县| 奉贤区| 象州县| 墨脱县| 祥云县| 武功县| 久治县| 新和县| 南澳县| 全州县| 缙云县| 青阳县| 张家港市| 勃利县| 宁化县| 偏关县| 刚察县| 城市| 英山县| 牡丹江市| 宁安市| 岳池县| 左权县| 阳谷县| 白河县|