ホームページ >バックエンド開発 >PHPチュートリアル >ubuntu10.04設定nginx+php-fpmモードの詳しい説明_PHPチュートリアル

ubuntu10.04設定nginx+php-fpmモードの詳しい説明_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:09:37902ブラウズ

ppa install php-fpm
インストールツールキット

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

$ sudo apt-get install python-software-properties

ppaソースを追加します
コードをコピー コードは次のとおりです:

$ sudo add-apt-repository ppa:yola/php5

php5-fpmをインストールします
コードをコピーします コードは次のとおりです。

sudo apt-get update
sudo apt-get install php5-fpm

その他の必要なソフトウェアインストール接続
コードをコピー コードは次のとおりです:

sudo apt-get install nginx

configure php-f pm
php-fpm のパーサーは C/S 構造であり、その設定ファイルは次の場所にあります:
(1)/etc/php5/fpm/php-fpm .conf
(2)/etc/php5/fpm/pool.d /
一般に、厳密な構成要件はありません。言い換えれば、私は tcp モードを使用して各構成パラメーターの意味を詳しく調べていません。 fastcgi プロセスに接続するため、tcp 監視のアドレスとポートを変更しました。ここでは詳しく説明しません。独自の設定にするには、公式ドキュメントを参照してください。 php5-fpm を再起動します。これは、apache とは異なる php 言語を解析します (apache には、php 解析用の mod_php モジュールがあります)。nginx は、クライアントの php リクエストをバックグラウンドの php5-fpm プロセス マネージャーに渡します。 -fpm には、php 関数を解析する機能があります。

nginx のメイン設定ファイル

ファイルの場所: /etc/nginx/nginx.conf、私の設定パラメータは次のとおりです:

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

user www-data;
#CPUのマルチコア機能をアクティブにオンにする
worker_processes 2;
worker_cpu_affinity 01 10;
#nginxプロセスが開くことができるファイル記述子の最大数を指定しますworker_rlimit_nofile 35 ;pid /var/run/nginx.pid;
events {

#epoll の I/O モデルを使用します
epoll を使用します;
#作業指示プロセスの同時接続数、同時接続の合計数 = worker_connections * work_processes

worker_connections 2048;
#multi_accept は、Nginx で新しい接続通知を受け取ります。次に、accept() を呼び出して、できるだけ多くの接続を受け入れます

multi_accept on;
}
http { include /etc/nginx/mime.タイプ;
default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 12 8 ; En Client_header_buffer_size 2K;
Large_client_header_buffers 44K;

#nginx 経由でファイルをアップロードしますmax_body_size 8M
#$ Remote_addr: レコードipアドレス; $remote_user: リモートクライアントのユーザー名を記録します。 $request: リクエストのURLとhttpプロトコルを記録します。 $body_bytes_sent: ファイルのメインコンテンツのサイズを記録します。クライアントに送信; $http_referer: ジャンプリンク; $http_x_forwarded_for: 顧客の実際の IP アドレス
log_format main '$server_name $remote_addr $remote_user[$time_local] "$request" '$status $body_bytes_sent "$http_referer" '"$http_user_agent " "$http_x_forwarded_for"'; access_log /var/log /nginx/access.log main;
error_log /var/log/nginx/error.log;

sendfile on;
tcp_nopush on;

#keepalive タイムアウト

keepalive_timeout 60;
open_file_cache max =204800 inactive=20s ;
open_file_cache_min_uses 1; open_file_cache_valid 30s;
tcp_nolay オン;
gzip オン;
include /etc/nginx/conf.d/*.conf;
}


ログ形式は、印刷不可能な記号 ctrl+v && ctrl+a で区切られています
nginx 仮想ホスト構成ファイル
コードをコピー コードは次のとおりです:

upstream haolianxi_php {
server 127.0. 0.1:9444;
}
server {
listen 192.168.1.137:7777;

access_log /var/log/nginx/haolianxi/haolianxi.access.log main;
error_log /var/log/nginx/haolianxi/haolianxi.error .log;
#ユニバーサルマッチング
location / {
root /srv/www/php/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
access_log /var/log/nginx/haolianxi/location.default. access.log main;
error_log /var/log/nginx/haolianxi/location.default.error.log;
192.168.1.0/24 を許可;
すべて拒否;
}
#正規表現一致
#php をプロキシphp-fpm
の場所へのスクリプト ~ .php$ {
root /srv/www/php/;
include /etc/nginx/fastcgi_params;
fastcgi_pass haolianxi_php; # 上記で決定されたアップストリーム
fastcgi_indexindex.php;
}
# PHP-FPMステータスモニターcolation場所= /phpfpm_status {fastcgi_pass 127.0.0.1:9444; fastcgi_index index.php;
}
## 圧縮
# src: http://www.ruby-forum.com/topic/141251
# src: http://wiki.brightbox.co.uk/docs:nginx
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/x-java script text/xml application/xml application/xml+rss text/javascript;

# IE 6 の一部のバージョンでは、一部の MIME タイプで圧縮を適切に処理できないため、それらを無効にしてください
gzip_disable "MSIE [1-6].(?!.*SV1)";

# 可変ヘッダーを設定しますダウンストリームプロキシは、キャッシュされたGzippedコンテンツをie6



コピーに送信しませんcodeコードは次のとおりです。 document_root、php5-fpm は、実行する必要がある php スクリプトの絶対パスを見つけることができません
nginx を再起動します



コードをコピーします

コードは次のとおりです:

sudo /etc/init.d/nginx restart
fastcgi_finish_request() 関数をテストします

コードをコピーします コードは次のとおりです:
echo "OK";
fastcgi_finish_request() /* 応答が完了しました、接続を閉じます*/
sleep(5);
file_put_contents("/tmp/fastcgi.log", "hello",FILE_APPEND);
sleep(5 );
file_put_contents("/tmp/fastcgi.log", "world",FILE_APPEND) );
?>
説明:


最も一般的な言い方では、fastcgi_finish_request() は事前にクライアントを閉じることができます。接続してクライアントに返す必要があるデータを返しますが、その後ビジネス ロジックをブランチします。関数はバックグラウンドで実行され続けます。
php5-fpm 日別ログ分割スクリプト

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

#!/bin/bash -
#1.php5-fpm ログ保存パス
php5_fpm_logs_path="/var/log/php5-fpm/"
category_array=("access" "error")
#2 .php5-fpm ログ名サフィックス
postfix=`date -d '-1 days' +%Y%m%d`".log"
#3.php5-fpm ログ切断
${category_array のカテゴリ[*]}
do
if [ -e $php5_fpm_logs_path/php5-fpm.$category.log ]
then
mv $php5_fpm_logs_path/php5-fpm.$category.log
$php5_fpm_logs_path/php5-fpm.$category.$ postfix
fi
done
#4. php5-fpm プロセス番号を見つけて、新しいログ ファイルを生成させます
php5fpm_pid=`ps -aux |grep -E 'php-fpm: マスター プロセス'|grep -v ' grep '|awk '{print $2}'`
#USR1:ログ ファイルを再度開き、nginx ログ ファイルを更新します
kill -USR1 $php5fpm_pid

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327268.html技術記事 Ppa install php-fpm ツールキットをインストールし、次のようにコードをコピーします: $ sudo apt-get install python-software-properties 次のようにコードをコピーします: $ sudo add-apt-repository ppa:.. .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。