这个博客最早是跑在自己电脑上的,用 hosts 指过去看效果。换了设备就打不开,别人更访问不到。折腾了一个周末搬到云服务器,记录一下过程和踩的坑。
环境准备
买的是一台 2 核 4G 的云服务器,装宝塔面板。选面板不是因为它多好,而是图形界面装 PHP、MySQL、Nginx 确实省事,出问题也能看到日志。
软件版本对齐很关键:本地是 PHP 7.4 + MySQL 5.7,服务器上必须一致。我第一次装了 PHP 8.0,迁完之后主题里的老函数直接报致命错误,白屏。
迁数据
两步:文件 + 数据库。
# 本地导出
tar czf wp-files.tar.gz wordpress/
mysqldump -u root -p wordpress > wordpress.sql
# 上传
scp wp-files.tar.gz root@服务器IP:/www/wwwroot/
scp wordpress.sql root@服务器IP:/root/
导入之前先在服务器上建同名数据库,字符集用 utf8mb4,不要用 utf8——emoji 和老版本四字节字符会丢。
mysql -u root -p wordpress < wordpress.sql
改地址
数据库里 wp_options 表的 siteurl 和 home 两个字段,还有文章正文里写死的旧地址,都要替换:
UPDATE wp_options SET option_value='https://mi-blog.cn' WHERE option_name IN ('siteurl','home');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://旧地址', 'https://mi-blog.cn');
域名和证书
域名解析 A 记录指向服务器公网 IP,等生效。然后申请免费证书,开启 HTTPS。混内容是最常见的坑:页面是 https,但正文里的图片还是 http,浏览器地址栏会给“不安全”的警告。要在数据库里把 http://旧域名 全量替换成 https://新域名,包括 wp_posts 里的图片地址。
权限
迁完之后上传图片一直失败,提示无法写入。查了半天是目录属主不对:
chown -R www:www /www/wwwroot/mi-blog.cn/wp-content
PHP-FPM 是以 www 用户跑的,文件却是 root 所有、755 权限,自然写不进去。这个问题后来在别的地方又遇到过一次,记住就行。
收尾
- 设置伪静态规则,否则文章页 404
- 装缓存插件,静态资源加长缓存头
- 配每日自动备份,数据库 + 网站目录,保留 7 天
整个迁移花了大概四小时,其中两小时在排查白屏和图片上传。后来想,如果一开始版本对齐、权限设对,一小时够了。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://mi-blog.cn/archives/655
共有 0 条评论