首頁 > php教程 > php手册 > 主體

Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版

WBOY
發布: 2016-06-06 20:07:47
原創
1715 人瀏覽過

前文Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践大致提了Ubuntu下的Ngnx+Php环境,但随着时间推移,旧版本组件之间维护程度的不协调问题会越来越多。 PHP 5.4带来了很多改进,以往运行环境必须的优化在5.4后都不必要了。 安装 apt-get install python

前文Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践大致提了Ubuntu下的Ngnx+Php环境,但随着时间推移,旧版本组件之间维护程度的不协调问题会越来越多。

PHP 5.4带来了很多改进,以往运行环境必须的优化在5.4后都不必要了。

安装

apt-get install python-software-properties
add-apt-repository ppa:ondrej/php5
apt-get update
apt-get install nginx
apt-get install php5-cgi php5-mysql php5-fpm php5-curl php5-mcrypt php-pear php5-gd php-apc
service nginx start
service php5-fpm start
登入後複製

配置

Nginx

upstream php {
        server unix:/var/run/php-fpm/php-fpm.sock;
        #server 127.0.0.1:9000;
}
server
{
        listen       80;
        index index.html index.htm index.php;
        server_name     site.com;
        root    /srv/http/pt-sites/wordpress;
        client_max_body_size 32m;
        client_body_buffer_size 128k;
        server_tokens off;
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
              include fastcgi.conf;
              #fastcgi_param  HTTPS on;
              fastcgi_intercept_errors on;
              #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; #Ubuntu 版本的nginx不需要这句,但Fedora或者可能其他发行版的自带没有定义,会返回空白的php,需要这句。
              fastcgi_pass php;
        }
}
登入後複製

PHP

设置timezone

sed -i '/;date.timezone/adate.timezone = "Asia/Shanghai"\ndate.default_latitude = 31.5167\ndate.default_longitude = 121.4500' /etc/php5/fpm/php.ini
登入後複製

另可参考(php.ini):

post_max_size = 16M
upload_max_filesize = 16M
登入後複製

FPM

php5-fpm默认参数启动的服务器还是比较耗资源的,如果环境不充裕(如512内存以下的VPS),可以做下配置。

这个包的fpm的默认配置文件是/etc/php5/fpm/main.conf,但对子进程的配置是在其包含的/etc/php5/fpm/pool.d/目录内,里面有个www.conf,可以对以下的参数做以下修改:

pm = dynamic              ;动态管理php-fpm的子进程
pm.max_children = 5       ;最多的时候开不超过5个
pm.start_servers = 2      ;启动服务时候开2个
pm.min_spare_servers = 2  ;空闲时候最少留2个
pm.max_spare_servers = 5  ;最多留5个
pm.max_requests = 300     ;每个子进程最多处理300个请求就退出换新的子进程。
登入後複製

按需调整这些参数可以达到最佳动态分配资源的效果。

如果在一台机器上部署多个应用,可以根据访问量,在pool.d中为各个应用配置不同的分配模式,能有效起到安全隔离效果。(注意pool.d内的文件,除了文件名不一样,里面定义的中括号[Name]也需要不一样。)

Fastcgi

Fastcgi和nginx的通信参数,可做以下配置:

加入到:/etc/nginx/fastcgi_params

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
登入後複製

php-apc

因为PHP的设计问题,opcode缓冲对大流量APP来说是必不可少的,APC是不错的选择。但是默认参数似乎效果有问题(通过munin监控发现没有设置一下参数,几乎没有使用system-cache,统统都是miss,一加上就好了,估计是BUG)。

加入到 /etc/php5/conf.d/20-apc.ini

apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.ttl=7200
apc.user_ttl=7200
登入後複製

参考:Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板