ホームページ  >  記事  >  運用・保守  >  nginxがphp-fpmを呼び出すときのエラーを解決する方法

nginxがphp-fpmを呼び出すときのエラーを解決する方法

WBOY
WBOY転載
2023-05-14 10:25:05982ブラウズ

nginx と php-5.5 をインストールし、php を呼び出すように nginx を設定した後、php-fpm を起動します。

次のコマンドを使用します

コードをコピーしますコードは次のとおりです:

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

それで始まりました。

nginx ディレクトリに PHP 検出スクリプト Index.php を作成します。

その結果、http://localhost/index.php

を開くと、悲劇的な発見が行われます。開けられません。ログ ファイルを確認して、エラーの理由を確認してください。

コードをコピーします。コードは次のとおりです。

2013/07/01 22:34:26 [エラー] 3214#0 : *64 fastcgi が標準エラー出力で送信されました:「プライマリ スクリプトが不明です」、アップストリームからの応答ヘッダーの読み取り中に、クライアント: 192.168.168.19、サーバー: localhost、リクエスト: "get /index.php http/1.1"、アップストリーム: "fastcgi:// 127.0.0.1:9000 "、ホスト: "192.168.168.140"

ポートを確認してください。 php-fpm の 9000 番ポートが開いていることから、php-fpm には問題はなく、nginx に問題があることがわかります。もしかしたら私の設定ファイルに何か問題があるのか​​もしれません。

nginx が php 設定をロードする部分を見つけます。オンラインの nginx 設定ファイルも参照してください。

69 行目に呼び出しスクリプトのパスがあります。

コードをコピーします。コードは次のとおりです。

fastcgi_param script_filename /scripts$fastcgi_script_name;

パスを以下に変更するだけです。

コードをコピーします。コードは次のとおりです。

fastcgi_param script_filename $document_root$fastcgi_script_name;

http://localhost/index.php

phpのバージョン情報が表示されます。
以下の設定方法も参照できます

php-fpm は、lighttpd の spawn-fcgi などの他の fastcgi ランチャーに依存する必要がなくなりました。
php-fpm は非常に使いやすく、設定は php-fpm.ini ファイルにあります。
起動と再起動は php/sbin/php-fpm から行うことができます。
さらに便利なのは、php の後に変更することです。 ini をロードするには、php-fpm reload を直接使用できます。プロセスを強制終了せずに、php.ini の変更とロードを完了できます。
結果は、php-fpm を使用すると、php のパフォーマンスが大幅に向上することを示しています
php-fpm 制御されたプロセスの CPU リサイクル速度は比較的遅いです。メモリ割り当ては非常に均一です。
spawn-cgi によって制御されるプロセスの CPU はすぐに低下します。メモリ割り当ては比較的不均一です。
割り当てられていないように見えるプロセスが多数ありますが、他のプロセスは非常に多くの量を占有しています。
プロセスのタスクが不均等に分散されていることが原因である可能性があります。これは、全体的な応答速度の低下にもつながります。
そして、php- fpm の適切な割り当ては、全体的な応答と平均タスクの改善につながります。
php-fpm を使用するには、php ソース コードにパッチを適用し、php

1 を再コンパイルする必要があります。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 のコンパイル時に次のパラメータが追加されます。
–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 をコンパイルできません。

2.php をコンパイルした後、設定ファイルを変更します
vi /ebs/php/etc/php-fpm.conf
次の設定に注意する必要があります
127.0.0.1:9000
これは、PHP の fastcgi プロセスがリッスンする IP アドレスとポートを表します。
nobody
< ;value name="group">nobody
PHP fastcgi プロセスがどのユーザーおよびユーザー グループとして実行されるかを示します。デフォルトでは、この行はコメントアウトされているため、オンにする必要があります
0
PHP エラー メッセージを表示するかどうか
5
子の最大数プロセス
php-fpm の実行 :
php-fpm は、fastcgi プロセスを制御するプログラムを使用します。このファイルは、$prefix/sbin/php-fpm
/usr/local/php/sbin/php- にあります。 fpm
プログラムには次のパラメータがあります。
start php の fastcgi プロセスを開始します。
stop php の fastcgi プロセスを強制的に終了します。
quit php の fastcgi プロセスをスムーズに終了します。
restart fastcgi を再起動します。 php のプロセス
reload php の php.ini を再ロードします。 ##logrotate ログ ファイルを再度有効にします。
つまり、php.ini を変更した後、
/usr/local/php/sbin を使用できます。 /php-fpm reload
このようにして、php の fastcgi プロセスが実行され続ける間、php.ini がリロードされます。

コードをコピーします。コードは次のとおりです:

user www www;
worker_processes 10;
error_log logs/error.log Notice;
pid logs/nginx.pid;
#で開くことができる最大ファイル記述子の値を指定しますこのプロセス。
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_nolay 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;
indexindex.htmlindex.htmindex.php;
root /ebs/www;
if (-d $request_filename)
{
書き換え ^/(.*)([^/])$ http://$host/$1$2/ Permanent;
}
location ~ .*\.php?$
{
include fcgi.conf

fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.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自带了1 つの構成ファイル、/usr/local/nginx/conf/fastcgi_params、この構成ファイルは粗い文字の部分を省略しており、php ファイルのタイムアウト時に 404 エラーが発生する可能性があります。 #fastcgi_param ゲートウェイ インターフェイス cgi/1.1;

fastcgi_param サーバー_ソフトウェア 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;
fastcgi_param php のみ、php がビルドされた場合に必要です - -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 拡張以外の
後でパスを変更した場合は、restart ではなく、必ず apachectl stop 後に再起動する必要があります。
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]
;將 xcache.admin.user 變更為您首選的登入名稱
xcache.admin.user = "admin"
;將 xcache.admin.pass 更改為您的密碼的 md5 指紋
;使用 md5 -s "your_secret_password" 找出指紋
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
;更改 xcache.size 來調整操作碼快取的大小
xcache.size = 24m
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache . ttl = 0
xcache.gc_interval = 0
;更改xcache.var_size來調整變數快取的大小
xcache.var_size = 8m
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_ttl = 0
xcache.var_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_maxttl = 0_max
xcache.var_gc_interval = 300
xcache.test = 關閉
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_dicache.coverager]
xcache.coverager = on
xcache.coveragedump_directory = ""

##5、重啟php模組
正常載入之後,
在phpinfo顯出的資訊內
zend這快應該會加上xcache的內容
nginxがphp-fpmを呼び出すときのエラーを解決する方法

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對應多台facgi伺服器

思路:前端一個nginx,用於做負載平衡和處理靜態頁面。利用nginx的上游模組來將php請求分發到後段的php-fpm伺服器上。
頭部多台php-fpm的伺服器,只起php-fpm服務來處理php。
這樣做減少了php-fpm上的nginx服務,相當於少了一層。

以上がnginxがphp-fpmを呼び出すときのエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。