作者:
最后更新于 | 最初发布于 | 分类: 服务器和主机
今天对 VPS 做了一些改动。就是安装了最新版本的 Nginx,Nginx v1.19.7。
davidyin@daisy:~$ nginx -V
nginx version: nginx/1.19.7
built with OpenSSL 1.1.1j 16 Feb 2021
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-qK5Rf9/nginx-1.19.7=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module
在安装了 php 7.4.x 的同时也安装了 php 8.0.x,当前最新的版本是 v8.0.3
davidyin@daisy:~$ php -v
PHP 8.0.3 (cli) (built: Mar 5 2021 07:54:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies
在里面可以查看 Brotli 的压缩方式也启用了。
davidyin@daisy:~$ brotli -V
brotli 1.0.9
这里我要特别的记录一下,我启用 php8.0 的时候如何设置的 JIT。默认安装 php8.0 并不会自动启用 JIT,反而是关闭的。
首先要先安装好 php 8.0。
然后,编辑 /etc/php/8.0/fpm/conf.d/10-opcache.ini
在尾部加上以下参数。
# Turn on the OPcache for command-line PHP, like drush or
# wp-cli, etc.
opcache.enable_cli=1
# 设置 JIT 运行需要的共享内存,一般设置为 opcahce 内存的一半,
# 或者更多。默认是零,自动禁用了 JIT。
opcache.jit_buffer_size=64M
# JIT 控制选项。 用字符串简单参数,或者是4位整数字高级选项。
# 高级参数参见 https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit
# 简单参数是两种,tracing 或者 function
opcache.jit=tracing
修改参数之后,重启 php8.0-fpm 就可以了。
启用 php 8.0 的 JIT 之后,可以观察到,从浏览器访问一个 php 页面的时候,其等待页面返回的时间,或者说是 backend time 会减少 30%。这是测试 phpbb 论坛首页的时候的测试结果。平均 120ms 降低到 78ms。
减少文件的大小,就减少了数据传输量,也就减少了数据传输时间。
现在的 Brotli 更加成熟,安装更加简单了,直接用 ppa:ondrej 的 nginx 库就行了。
nano /etc/nginx/nginx.conf
添加下面一段,我一般放在 gzip 参数之前。 ## Brotli Settings
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
brotli_static on;
设置的参数同 gzip 很类似。通常可以设置压缩水平到 4,或者 5。这个值越大,需要耗费更多 CPU 时间压缩,可获得较小的文件。若设置太大了,造成耗时过多也不合适。brotli -Zkf blog.css
当前服务器上同时装了 php 7.4 和 php 8.0,是因为目前还有很多 php 程序还没有兼容到 php8.0,还做不到完全使用 php 8.0,不过我想再有半年的时间,应该有很多程序都能做到兼容了。那时候,就可以舍弃 php 7.4 了。
对了,为了比较,减少其它方面的影响,把本站的 CDN 都去了。