为proot环境内的WordPress优化访问速度
2025年12月8日0阅读
按照上一篇文章的方法直接在proot环境内搭建Wordpress环境之后,虽然从后台看CPU和内存占用已经非常低了,但实际访问的速度还是很慢。一开始还觉得可能是Cloudflare走到外网绕路的缘故,直到后来尝试了走内网访问后加载网页还是得等个几秒,才想到大概是proot环境内性能受限了。



Apache2和MariaDb经过测试速度都是正常的这边就不放出图片演示了,上方放出的两张图可以看到单个PHP执行的速度就需要1.2秒,由于Wordpress由PHP编写,整体加载速度自然也被严重拖慢了。而在这1.2s中 user+sys 真正处理PHP代码的时间很短,说明瓶颈不在CPU而在proot IO处理上。既然不是CPU的瓶颈那就还有很多优化的方法了,下文也将会提供几种针对此解决方案,收益从高到低可自行选择执行到哪步。
配置OPCache
OPCache在新版本的PHP中一般都已经自带了,这个模块能让执行过的PHP脚本持续缓存在内存中而避免重复的IO读取以提升性能。但有时候可能没有默认开启或是配置还没优化极致,通过调整配置在proot环境下还是能获得显著效果。
编辑php.ini
#php目录可能不同
nano /etc/php/8.4/apache2/php.ini找到下面的这些功能并修改
opcache.enable=1 - 启用 OPcache
opcache.memory_consumption=256 - 增加到 256MB(原 128MB)
opcache.interned_strings_buffer=16 - 增加到 16MB(原 8MB)
opcache.max_accelerated_files=100000 - 最大值(原 10000)
opcache.max_wasted_percentage=10 - 提高到 10%
opcache.validate_timestamps=0 - 最重要! 禁用时间戳验证,不检查文件更新,获得最佳性能
opcache.enable_file_override=1 - 启用文件存在检查优化
修改后重启Apache2
apache2ctl restart提升近乎一倍性能

使用Php-fpm
在proot环境内,php-fpm相比apache2内置解析器速度提升也是巨大的,而从Apache2的内置PHP解析器换到Php-fpm也非常简单
首先安装并启动Php-fpm:
apt install php-fpm
php-fpm修改Apache2的配置文件
nano /etc/apache2/sites-available/000-default.conf在其中添加:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi:/"
</FilesMatch>按照上面配置OPCache:
#文件夹和Apache2的不同
nano /etc/php/8.4/fpm/php.ini保存并重启apache2
apache2ctl restart将Html环境迁移至宿主机的目录下
在proot的内存储读取是存在多层损耗的,把/var/www/html下的文件复制到termux的运行目录内能也够提升部分性能。
启动的时候把termux根目录挂载为/wpfiles:
proot-distro login --bind ~:/wpfiles ubuntu编辑Apache2配置:
nano /etc/apache2/sites-available/000-default.conf修改目录到/var/www/html:
<VirtualHost *:8000>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# 让 WordPress 的 .htaccess 能生效
<Directory /var/www/html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>(使用Nginx)
理论上来说Nginx的性能确实会比Apache2强,不过在这里apache2并不是性能的瓶颈,换了提升也不会太大,所以没测试,有兴趣的可以自行问问ChatGPT如何从Apache2迁移到Nginx。
最终优化结果
内网0.5-0.7ms对这台小破机器已经很满意了:

(附测试命令:)
curl -o /dev/null -s -w "DNS Lookup: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" http://192.168.0.1:8000/
0 条评论
正在加载评论...