• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

陈文管的博客

分享有价值的内容

  • Android
  • Affiliate
  • SEO
  • 前后端
  • 网站建设
  • 自动化
  • 开发资源
  • 关于

阿里云轻量应用服务器WordPress版本升级

2023年8月24日发布 | 最近更新于 2024年11月20日

2017年刚开始做这个博客网站的时候,阿里云WordPress版本一直停留在4.8.22,期间也尝试过升级,但是不习惯新版本的交互,就一直放着没动,一直到现在发现网站越来越卡,偶尔还会崩溃,最新的WordPress版本已经到6.3了,就想一次性完整地做个升级。

一、服务器底层环境升级

存在的问题:现有服务器的底层环境在保存快照之后,如果使用重置系统中的重置为其他镜像功能,因为底层环境不兼容,无法在重置为其他镜像之后,通过回滚快照数据的方式恢复网站数据。

最新的服务器底层环境 PHP8.1,MySQL5.7,Nginx1.22,WordPress版本6.0,现有旧的WordPress版本是4.8.22。只能通过UpdraftPlus插件备份数据的方式,把现有网站的所有数据先备份下载到本地。

Updraft插件备份数据下载

备份之后总共分5块数据:数据库、其他、插件、主题、上传的文件

backup_2023-08-20-0148_wwwchenwenguancom_6bafbd2a26c6-db.gz
backup_2023-08-20-0148_wwwchenwenguancom_6bafbd2a26c6-others.zip
backup_2023-08-20-0148_wwwchenwenguancom_6bafbd2a26c6-plugins.zip
backup_2023-08-20-0148_wwwchenwenguancom_6bafbd2a26c6-themes.zip
backup_2023-08-20-0148_wwwchenwenguancom_6bafbd2a26c6-uploads.zip

但在使用UpdraftPlus备份完数据之后,备份的数据每次下载到8.5MB左右的时候就失败,之后死循环重复下载,这个后面查到是备份完之后updraft目录下的文件缺少对应的权限,直接在Mac终端用ssh root@<ip_address>的方式远程连接服务器,修改目录下的文件权限为777:

chmod 777 /home/www/htdocs/wp-content/updraft/<xxxx.zip>

权限修改完之后还是不行,就使用FileZilla(网上搜下下载一个破解版的就行)连接服务器,找到对应的路径下载备份文件。左侧是Mac本地的路径,选择下载目录Download,右侧是服务器的文件目录,找到对应的文件,右键弹窗下载文件。

filezilla Updraft备份文件下载

数据备份文件下载到本地之后,开始重置系统为WordPress 6.0版本,重置之前要记住网站登录的账号和密码。在使用UpdraftPlus恢复完数据之后,数据恢复回去,要使用原来的账号密码登录。

阿里云轻量应用服务器重置系统到WordPress 6.0

重置系统完之后,先在控制台应用详情中,使用一键远程查看新系统的密码,使用新的密码登录之后安装UpdraftPlus插件,恢复原有网站数据,在数据恢复的过程中,可能因为WordPress版本问题导致数据恢复异常,可以先使用WP Downgrade插件把WordPress恢复回旧版本,之后再恢复网站数据,恢复过程中会提示升级数据库,直接点击继续即可,在数据恢复完毕之后,再使用WP Downgrade插件把WordPress升级到6.2.2(习惯偏向,有些操作比较方便)或6.3版本(最新)

二、网站HTTPS配置

最新的轻量应用服务器控制台域名操作模块,去掉了域名的HTTPS设置入口,现在要自己手动配置SSL 的.pem和.key文件,不知道阿里云的产品经理咋想的,这操作大大增加了用户的操作成本。

先到数字证书管理服务页面申请免费的SSL证书,www.domain.com 和 domain.com 两种形式的域名都申请下,之后下载SSL加密文件:

阿里云免费SSL证书下载

接着在Mac终端远程登录服务器,进入conf目录

cd /usr/local/nginx/conf

创建cert文件夹

mkdir cert

接着在FileZilla把下载解压之后的.key和.pem文件直接拖动到cert目录上传到服务器:

阿里云SSL证书上传

接着进入/usr/local/nginx/conf/vhost文件夹,里面有配置SSL加密的wordpress.conf配置文件,阿里云官方文档说是编辑/usr/local/nginx/conf/nginx.conf文件,这并不适用于WordPress,查看nginx.conf文件最后一行,可以看到vhost目录下的*.conf 文件被include了进来。

阿里云SSL证书WordPress conf参数配置

先备份原有的wordpress.conf文件,下载这个文件,查看里面的配置信息,以下是原有配置

listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/www.example.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/www.example.com.key;
server_name _;

去掉80的监听,配置域名参数,以下参数替换成你自己的域名:

listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /usr/local/nginx/conf/cert/www.chenwenguan.com.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/www.chenwenguan.com.key;
server_name www.chenwenguan.com;

另外增加HTTP强制重定向到HTTPS的配置:

server {
   listen 80;
    server_name www.chenwenguan.com;
    rewrite ^(.)$ https://$host$1; location ~ [^/].php(/|$) { 
        #fastcgi_pass remote_php_ip:9000; 
        fastcgi_pass unix:/dev/shm/php-cgi.sock; 
        fastcgi_index index.php; include fastcgi.conf; 
    } 
    location ~ ..(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
        expires 30d;
        access_log off;
    }
    location ~ .*.(js|css)?$ {
        expires 7d;
        access_log off;
    }
    location ~ /(.user.ini|.ht|.git|.svn|.project|LICENSE|README.md) {
        deny all;
    }
    location /.well-known {
        allow all;
    }
}

www.domain.com 和 domain.com 两种形式的域名都配置下,修改完之后保存,用以下命令重启nginx

cd /usr/local/nginx/sbin/

./nginx -s reload

这还没结束,之后还要安装Really Simple SSL插件把网站上所有资源都改为HTTPS访问,检查了下文章,所有设置的GIF资源无法显示,点击GIF图片提示的链接不是域名开头,而是IP地址开头,直接编辑有问题的文章GIF资源引用,重新导入设置下媒体库的文件就行。包括网站内链也是,域名参数都变成了IP地址,逐个修改即可。

1. 阿里云WordPress配置自动更新SSL证书

阿里云后续变更了免费SSL证书的有效期,改成3个月,所以最好配置成自动更新的SSL证书,免去手动更新的操作。

如果你使用的是 CentOS、RHEL 或 Fedora 系统,那么包管理工具是 yum(CentOS 7 或更早版本)或 dnf(CentOS 8/RHEL 8/Fedora)。

1) 更新系统(对于 CentOS/RHEL/Fedora)

对于 CentOS 7 或更早版本使用 yum:

sudo yum update 

对于 CentOS 8/RHEL 8 或 Fedora 使用 dnf:

sudo dnf update

2)安装 Certbot(如果需要安装 Certbot):

对于 CentOS/RHEL 8 或 Fedora:

sudo dnf install certbot python3-certbot-nginx

对于 CentOS/RHEL 7:

sudo yum install certbot python3-certbot-nginx

安装过程中会提示你输入邮箱,用于出现问题之后的邮件通知,后续的选项都输Y回车即可。

3)生成并配置SSL证书

/data/wwwroot/wordpress 参数替换成你自己的网站根目录,这个参数可以在 /usr/local/nginx/conf/nginx.conf 或 /usr/local/nginx/conf/vhost/wordpress.conf 配置文件中找到,类似 root /data/wwwroot/wordpress; 这样的配置参数。

域名参数替换成你自己的,www 和 不带前缀的两个域名都配置上。

sudo certbot certonly --webroot -w /data/wwwroot/wordpress -d chenwenguan.com -d www.chenwenguan.com

在SSL证书生成之后,会在控制台输出证书的保存路径,例如

/etc/letsencrypt/live/chenwenguan.com/fullchain.pem
/etc/letsencrypt/live/chenwenguan.com/privkey.pem

接着编辑 /usr/local/nginx/conf/vhost/wordpress.conf 文件,把之前旧的SSL证书路径都替换成上面两个。

4)重启 Web 服务器

完成上述操作后,重启 Nginx 或 Apache 服务以确保配置生效。

对于 Nginx:

sudo systemctl restart nginx

对于 Apache:

sudo systemctl restart apache2

5)配置自动更新 SSL 证书

Certbot 提供了自动续期功能,通常它会自动设置定时任务来定期更新证书。你可以通过以下命令确认是否已设置:

检查自动续期任务是否存在:

sudo systemctl list-timers all

你应该看到一个名为 certbot.timer 的定时任务,它会自动尝试续期 SSL 证书。

手动测试续期:

如果你想手动测试自动续期过程是否有效,可以运行以下命令:

sudo certbot renew --dry-run 

如果没有错误信息,表示自动续期配置正常。

三、解决Chrome网页加载非常慢的问题

在前面的问题都解决之后,发现在PC端访问网站非常慢,估计要一两分钟才能加载渲染出来,网络测速工具显示加载速度大部分地区在正常范围内,手机端访问网站加载也很快。之后就打开Chrome开发者模式,查看控制台输出,发现是font-awesome.min.css加载异常,

WordPress网页加载超时
GET https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css?ver=4.5.0 net::ERR_CONNECTION_TIMED_OUT

接着分析maxcdn.bootstrapcdn.com是哪个地方在引用,远程连接服务器,在Mac终端输入以下命令查找:

grep -r "maxcdn.bootstrapcdn.com" /data/wwwroot/wordpress/wp-content

输出:

/data/wwwroot/wordpress/wp-content/cache/breeze/7182b2bd42a976c676692968f75bca1e/56ba0fb6b25e4ebda98665586a6c0a1c.php:<link rel='dns-prefetch' href='//maxcdn.bootstrapcdn.com' />

Breeze是Cloudflare出的插件,用来加速网站加载,这边只是cache缓存文件夹,查看网页源代码,这个字体是用在代码样式的显示中,先从其他网站的加载找到font-awesome.min.css的文件内容。

谷歌搜索font-awesome对应版本的字体库,先从http://www.amiq.com/fonts/font-awesome-4.5.0/fonts/ 地址下载font-awesome.min.css需要的字体库文件,接着把这些字体库文件拖动放到breeze/assets/fonts目录下,font-awesome.min.css文件放到breeze/assets/css目录下。

Breeze插件字体加载问题修复

查看主题的functions.php文件查找是哪里加载进来的,使用WP File Manager插件先下载functions.php文件到本地,修改font-awesome的引用路径。

//* Add Font Awesome Support
add_action( 'wp_enqueue_scripts', 'enqueue_font_awesome' );
function enqueue_font_awesome() {
	wp_enqueue_style( 'font-awesome', 'https://chenwenguan.com/wp-content/plugins/breeze/assets/css/font-awesome.min.css', array(), '4.5.0' );
}

修改完之后重新上传覆盖原有文件,现在访问网站可以秒开。

四、php-fpm进程导致服务器挂掉

上面的问题解决之后,到了晚上发现网站挂了,查看服务器日志到下午的时间服务器就挂了,接着逐步分析异常信息,输入以下命令查看kill日志信息:

sudo cat /var/log/messages | grep kill

输出信息如下:

Aug 24 16:46:47 iZ2zegxchxpm4qt6yqfvd3Z kernel: AliYunDunUpdate invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
Aug 24 16:46:59 iZ2zegxchxpm4qt6yqfvd3Z kernel: oom_kill_process.cold+0x1f/0x28
Aug 24 16:46:59 iZ2zegxchxpm4qt6yqfvd3Z kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/php-fpm.service,task=php-fpm,pid=794,uid=1001

接着过滤查询异常时间点的相关日志:

sudo cat /var/log/messages | grep "Aug 24 20:27"

摘出主要异常信息如下:

Aug 24 16:46:59 iZ2zegxchxpm4qt6yqfvd3Z kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/php-fpm.service,task=php-fpm,pid=794,uid=1001
Aug 24 16:46:59 iZ2zegxchxpm4qt6yqfvd3Z kernel: Out of memory: Killed process 794 (php-fpm) total-vm:756964kB, anon-rss:57028kB, file-rss:0kB, shmem-rss:45940kB, UID:1001 pgtables:400kB oom_score_adj:0

从日志可以看出是php-fpm.service服务占用内存过多导致进程被强杀,接着修改php-fpm的配置,先查询对应的conf文件:

sudo find / -name php-fpm.conf

输出:

/usr/local/php81/etc/php-fpm.conf
/usr/local/php71/etc/php-fpm.conf
/usr/local/php74/etc/php-fpm.conf
/usr/local/php56/etc/php-fpm.conf
/usr/local/php72/etc/php-fpm.conf
/usr/local/php73/etc/php-fpm.conf
/usr/local/php53/etc/php-fpm.conf
/usr/local/php80/etc/php-fpm.conf
/usr/local/php70/etc/php-fpm.conf
/usr/local/php55/etc/php-fpm.conf
/usr/local/php54/etc/php-fpm.conf

查看当前环境的PHP信息:

php -i

在输出的信息中过滤查找关键字fpm,匹配到如下信息:

Configure Command => './configure' '--prefix=/usr/local/php74' '--with-config-file-path=/usr/local/php74/etc' '--with-config-file-scan-dir=/usr/local/php74/etc/php.d' '--with-fpm-user=www' '--with-fpm-group=www' '--enable-fpm' '--enable-opcache' '--disable-fileinfo' '--enable-mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-iconv-dir=/usr/local' '--with-freetype' '--with-jpeg' '--with-zlib' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-exif' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl=/usr/local/curl' '--enable-mbregex' '--enable-mbstring' '--with-password-argon2' '--with-sodium=/usr/local' '--enable-gd' '--with-openssl=/usr/local/openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-ftp' '--enable-intl' '--with-xsl' '--with-gettext' '--with-zip=/usr/local' '--enable-soap' '--disable-debug' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:'

可以看到当前安装的版本是php74,接着就是编辑/usr/local/php74/etc/php-fpm.conf文件的配置,修改的配置参数如下,所有数据在原有的基础上减半:

pm.max_children = 8
pm.start_servers = 5
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 1024
request_terminate_timeout = 60
request_slowlog_timeout = 0

继续观察一段时间看看效果。

相关阅读:

阿里云WordPress Apache服务器内存优化配置

阿里云WordPress服务器MySQL内存优化配置

转载请注明出处:陈文管的博客 – 阿里云轻量应用服务器WordPress版本升级

扫码或搜索:文呓

博客公众号

微信公众号 扫一扫关注

文章目录

  • 一、服务器底层环境升级
  • 二、网站HTTPS配置
    • 1. 阿里云WordPress配置自动更新SSL证书
      • 1) 更新系统(对于 CentOS/RHEL/Fedora)
      • 2)安装 Certbot(如果需要安装 Certbot):
      • 3)生成并配置SSL证书
      • 4)重启 Web 服务器
      • 5)配置自动更新 SSL 证书
  • 三、解决Chrome网页加载非常慢的问题
  • 四、php-fpm进程导致服务器挂掉
博客公众号

闽ICP备18001825号-1 · Copyright © 2025 · Powered by chenwenguan.com