最近上了一批debian7的机器,刚好有web项目要上,debian7中已经把php-fpm集成进去了,打算把以前的apache+mod_php模式换成nginx+php-fpm或者apache+php-fpm模式,apache毕竟模块多还更稳定一些。
1 nginx+php-fpm
安装nginx
apt-getinstallnginx
安装php及php-fpm
apt-getinstallphp5-mysqlphp5-gdphp5-curlphp5-cliphp5-cgiphp5-dev
apt-getinstallphp5-fpm
配置php-fpm,php-fpm的主要配置文件在/etc/php5/fpm里面
├──conf.d->../conf.dphp的扩展模块配置文件
├──php-fpm.confphp-fpm的主配置文件,include了pool.d里面的conf文件
├──php.iniphp的配置文件
└──pool.d
└──www.conf影响web站点的php-fpm配置文件
php-fpm.conf可以配置的选项不多,主要是设置日志级别,超时时间等等,很多都有默认值,其中主要的是www.conf这个文件,他会直接影响你的web站点的php解析。
下面看看默认的www.conf配置:
#设置一个名为www的池
[www]
#user是必须设置的
user=www-data
#如果没有设置group,默认使用user的group
group=www-data
#在哪个端口接收FastCGI请求,可以是socket或者端口
listen=/var/run/php5-fpm.sock
#主进程管理子进程的模式,动态模式
pm=dynamic
#可创建的最大子进程数
pm.max_children=5
#fpm刚启动时创建的子进程数,默认min_spare_servers+(max_spare_servers-min_spare_servers)/2
pm.start_servers=2
#可以空闲的最小服务进程
pm.min_spare_servers=1
#可以空闲的最大服务进程
pm.max_spare_servers=3
#chroot该目录
chdir=/
这些是安装完后的默认配置,还有很多选项虽然没有列出来,但是都有默认值的。如果在一台机器上部署多个应用,可以根据访问量,在pool.d中为各个应用配置不同的分配模式,能有效起到安全隔离效果。
配置nginx,nginx配置文件主要在/etc/nginx目录
├──conf.d
├──fastcgi_params#可以优化该文件
├──koi-utf
├──koi-win
├──mime.types
├──naxsi_core.rules
├──naxsi.rules
├──nginx.conf
├──proxy_params
├──scgi_params
├──sites-available
│└──default
├──sites-enabled
│└──default->/etc/nginx/sites-available/default#主要配置该文件
├──uwsgi_params
└──win-utf
default文件配置:
upstreamphp{
serverunix:/var/run/php5-fpm.sock;
}
server{
listen80;
root/usr/share/nginx/www;
indexindex.phpindex.html;
server_name192.168.37.37;
location~.php${
fastcgi_split_path_info^(.+.php)(/.+)$;
fastcgi_passphp;
fastcgi_indexindex.php;
includefastcgi_params;
}
}
设置首页面
echo'<?php phpinfo();?>'>/usr/share/nginx/www/index.php
启动php-fpm和nginx
/etc/init.d/nginxstart
/etc/init.d/php5-fpmstart
2 apache+php-fpm
为什么用apache+php-fpm呢,稳定一些,经过大量用户考验的,如果不是为了高性能,而是为了稳定,也可以试试这个模式。在debian6中的php版本中,php官方已经把fpm集成进去了,但是debian因为种种原因并没有在debian6的php中集成fpm,不过在debian7中终于等到了…
安装apache2
apt-getinstallapache2apache2-mpm-workerlibapache2-mod-fastcgi
php及php-fpm已经在上一环节安装,所以不需要再次安装。
开启相关apache模块
a2enmodactionsfastcgialias
apache配置文件目录结构/etc/apache2
├──apache2.conf#主配置文件
├──conf.d
├──envvars
├──magic
├──mods-available#总模块
├──mods-enabled#启用模块
├──ports.conf
├──sites-available#总站点
└──sites-enabled#启用站点,默认启用000-default
000-default文件配置
ServerAdmin[emailprotected]
ServerName192.168.37.37
DocumentRoot/var/www
AddHandlerphp5-fcgi.php
Actionphp5-fcgi/php5-fcgi
Alias/php5-fcgi/usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer/usr/lib/cgi-bin/php5-fcgi-socket/var/run/php5-fpm.sock-pass-headerAuthorization
OptionsFollowSymLinks
AllowOverrideNone
OptionsIndexesFollowSymLinksMultiViews
AllowOverrideNone
Orderallow,deny
allowfromall
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
AllowOverrideNone
Options+ExecCGI-MultiViews+SymLinksIfOwnerMatch
Orderallow,deny
Allowfromall
ErrorLog${APACHE_LOG_DIR}/error.log
LogLevelwarn
CustomLog${APACHE_LOG_DIR}/access.logcombined
针对fcgi可做如下优化/etc/nginx/fastcgi_params:
fastcgi_connect_timeout60;
fastcgi_send_timeout180;
fastcgi_read_timeout180;
fastcgi_buffer_size128k;
fastcgi_buffers2564k;
fastcgi_busy_buffers_size256k;
fastcgi_temp_file_write_size256k;
fastcgi_intercept_errorson;
设置首页面/var/www/index.php
echo'<?php echo'helloguol';?>'>/var/www/index.php
启动apache和php-fpm
/etc/init.d/php5-fpmstart
/etc/init.d/apache2restart