目錄
ppa安装php-fpm
安装工具包
添加ppa源
安装php5-fpm
其它必要的软件安装接
配置php-fpm
php-fpm的解析器是C/S结构,它的配置文件位于:
重启php5-fpm
配置nginx
前言
nginx的主配置文件
nginx虚拟主机配置文件
注意:
重启nginx
测试fastcgi_finish_request()函数
说明:
php5-fpm日志按天分割脚本
首頁 後端開發 php教程 ubuntu10.04配备 nginx + php-fpm 模式

ubuntu10.04配备 nginx + php-fpm 模式

Jun 13, 2016 pm 01:05 PM
fastcgi fpm nginx php quot

ubuntu10.04配置 nginx + php-fpm 模式

ppa安装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
登入後複製

配置php-fpm


php-fpm的解析器是C/S结构,它的配置文件位于:

(1)/etc/php5/fpm/php-fpm.conf 

(2)/etc/php5/fpm/pool.d/

一般没什么严格的配置的要求,或者说这块我还没有具体的研究每个配置参数的意义

我采用了tcp模式与fastcgi进程进行连接,因此我修改了tcp监听的地址和端口,修改了一下监视目录的名称,这里不做具体详细解释了,大家可以参考官方文档根据自己的需求进行配置


重启php5-fpm



配置nginx


前言

nginx本身并不会对php语言进行解析,这个区别于apache(apache有在带的mod_php模块进行php解析).nginx是通过fastcgi将客户端的php请求交给后台的php5-fpm进程管理器,php5-fpm具有解析php的功能,具体可以参考我之前的一篇博客mod_php对比mod_fastcgi


nginx的主配置文件

文件位置:/etc/nginx/nginx.conf,我的配置参数如下:

user  www-data;
#主动开启cpu多核功能
worker_processes  2;
worker_cpu_affinity 01 10;
#指定nginx进程可以打开的最大文件描述符数量
worker_rlimit_nofile 65535;
pid /var/run/nginx.pid;
events {
	#使用epoll的I/O模型
	use epoll;
	#工作单进程的并发连接数,总体并发连接数 = worker_connections * worker_processes
	worker_connections 2048;
	#multi_accept在Nginx接到一个新连接通知后调用accept()来接受尽量多的连接
	multi_accept on;
}
http {
	include       /etc/nginx/mime.types;
	default_type  application/octet-stream;
	charset utf-8;
	
	server_names_hash_bucket_size 128;
	client_header_buffer_size 2k;
	large_client_header_buffers 4 4k;
	#通过nginx上传文件的大小
	client_max_body_size 8m;
	
	#$remote_addr:记录ip地址;$remote_user:记录远程客户端用户名称;$request:请求的url和http协议;$status:用于记录请求状态;$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_nodelay on;
    	gzip  on;
    	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;
		allow 192.168.1.0/24;
		deny all;
	}

	#正则表达式匹配	
	#proxy the php scripts to php-fpm
	location ~ \.php$ {
		root	/srv/www/php/;
		include	/etc/nginx/fastcgi_params;
		fastcgi_pass	haolianxi_php;	# The upstream determined above
		fastcgi_index	index.php;
	}

	#php-fpm status monitor
	location = /phpfpm_status {
		fastcgi_pass 127.0.0.1:9444;
		fastcgi_index index.php;
		include /etc/nginx/fastcgi_params;
		allow	192.168.1.127;
		allow	127.0.0.1;
		deny all;
	}

	## Compression
	# 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-javascript text/xml application/xml application/xml+rss text/javascript;
    
    	# Some version of IE 6 don't handle compression well on some mime-types, so just disable for them
    	gzip_disable "MSIE [1-6].(?!.*SV1)";
    
    	# Set a vary header so downstream proxies don't send cached gzipped content to IE6
    	gzip_vary on;
    	## /Compression
}
登入後複製

注意:

include /etc/nginx/fastcgi_params中一个参数设置需要修改,修改如下:

fastcgi_param   SCRIPT_NAME             $document_root$fastcgi_script_name;
登入後複製

因为脚本的名称不加上$document_root,php5-fpm是无法找到需要执行的php脚本的绝对路径的


重启nginx

sudo  /etc/init.d/nginx  restart
登入後複製

测试fastcgi_finish_request()函数

<?php 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日志切割
for category in ${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: master process'|grep -v 'grep'|awk '{print $2}'`
#USR1:Reopen log files,刷新nginx日志文件
kill -USR1 $php5fpm_pid
登入後複製



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP:處理數據庫和服務器端邏輯 PHP:處理數據庫和服務器端邏輯 Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

PHP的目的:構建動態網站 PHP的目的:構建動態網站 Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

See all articles