返回目录:网站建设-绪论

安装php71

yum install php71w php71w-fpm
#相应的基本扩展
yum install php71w-mbstring php71w-common
yum install php71w-gd php71w-mcrypt
yum install php71w-mysql php71w-mysqlnd php71w-xml
yum install php71w-soap php71w-xmlrpc

php对于mysql的驱动应该选择mysqlnd   老版本mysql驱动不适用于高版本,虽然不会报错,但是会警告!

性能扩展opcache及配置

yum install php71w-opcache

事实上高级一点的缓存加速还有memcached和redis,php都有相应的扩展包

注意:php7的扩展配置文件在/etc/php.d目录下

#/etc/php.d/opcache.ini
opcache.enable=1                  //开启opcache
opcache.memory_consumption=128   //分配的内存 128M
opcache.interned_strings_buffer=8  //暂存池中字符串内存总量 8M
opcache.max_accelerated_files=300  //最大缓存文件数
opcache.max_wasted_percentage=5   //内存“浪费”达到此值,就会重启 5%
opcache.revalidate_freq=5   //检查文件的修改时间的时间周期 5s
opcache.fast_shutdown=1    //打开快速关闭,提高内存回收速度

效果杠杠的!!减少60ms左右的时间!~

同时针对/etc/php.ini设置expose_php = off 防止暴露php版本

别忘了在nginx.conf添加php支持

#在相应的server下加入
location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
}

调用静态缓存purge及配置

purge是nginx的模块,请确保看过之前nginx的文章,并编译了purge模块

我们这里在php中添加purge支持

/**
详细内容:https://zhangge.net/5040.html
**/
http{
...
fastcgi_cache_path /tmp/cache levels=1:2 keys_zone=wordpress:40m inactive=1d max_size=500m;
//解释:keys_zone内存空间名wordpress 大小40m,内存重置时间1天,硬盘目录/tmp/cache,最大硬盘占用500m
fastcgi_temp_path /tmp/cache/temp;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_cache_min_uses 1;
fastcgi_cache_key "$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
...
server{
...
set $skip_cache 0;
        #post访问不缓存
        if ($request_method = POST) {
            set $skip_cache 1;
        }
        #动态查询不缓存
        if ($query_string != "") {
            set $skip_cache 1;
        }
        #后台等特定页面不缓存(其他需求请自行添加即可)
        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php") {
            set $skip_cache 1;
        }
        #对登录用户、评论过的用户不展示缓存
        if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
           set $skip_cache 1;
        }
        #和wordpress中Nginx Helper配合使用
        location ~ /purrg(.*)/ {
            allow 127.0.0.1;
            deny all;
            fastcgi_cache_purge WordPress "$request_method$host$1";
        }
        location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        #add_header X-Frame-Options SAMEORIGIN;     //缓存状态指示,测试时用
        #add_header X-Cache "$upstream_cache_status From $host";
        fastcgi_ignore_headers Cache-Control Expires Set-Cookie; #忽略http不然缓存的头
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        fastcgi_cache wordpress;    #名称和http部一致
        fastcgi_cache_valid 200 10h;    #缓存200状态页面 过期时间10小时
        }
...}
...}

#请注意和原博客最大不同处
fastcgi_cache_key "$request_method$host$request_uri";#没有$scheme(指示http和https)值方便http/https共存
如果日志遇到清除缓存模块的404错误,很久以前我写过解决方案

静态化响应时间很小,但要注意更新策略

最后

请不要忘记设置php开机自启

systemctl start php-fpm 
systemctl enable php-fpm

ps:即使你因为各种异步请求不太好使用purge模块,但opcache模块很值得你一试!

更新于:2017-12-16