一、前言
作为用 WordPress 写了四年博客的老用户,之前分享过不少主题配置、插件推荐的内容,很多朋友问过我怎么安装和迁移 WordPress,毕竟不管是新手入门还是换服务器,这两个都是刚需操作。今天就把我实际用过的几种安装方式和迁移方法整理出来,全是自己踩坑后的实战经验,新手也能跟着走。
虽然现在有 Hexo、Hugo 这些静态博客,但我还是偏爱 WordPress,主要是因为:
- 可视化后台,不用懂代码也能管理,写文章、换主题都方便;
- 插件生态太丰富,想要的功能(统计、评论管理、SEO 优化)基本都有;
- 可扩展性强,支持自定义代码、二次开发,后期想加功能也不限制;
- 数据存在自己手里,不用担心平台跑路,迁移也灵活。
如果你是新手,想快速搭建个人博客;或者像我一样,需要长期维护、经常更新内容,WordPress 绝对是首选。
二、WordPress 安装:两种主流方式,按需选择
(一)Docker 安装:适合技术用户,环境隔离不冲突
我自己的博客就是用 Docker 搭的,优点是环境隔离,不会和服务器上其他软件冲突,迁移也方便。
1. 准备工作
先创建一个专属目录,我习惯放在~/docker/wordpress,统一管理配置和数据:
work=~/docker/wordpress && mkdir -p $work && cd $work
然后开放端口,我选的是 18080,避免和其他服务冲突,防火墙命令安排上:
# Ubuntu/Debian用ufw防火墙
sudo ufw allow 18080/tcp comment 'WordPress' && sudo ufw reload
# CentOS用firewalld
# sudo firewall-cmd --add-port=18080/tcp --permanent && sudo firewall-cmd --reload
2. 编写 docker-compose.yml
新建 docker-compose.yml 文件,直接复制下面的配置,注意两个坑:
- 如果你用的是 arm 架构的服务器,把
mysql:5.7改成mysql:oracle,不然会报错; - 数据库密码和用户密码一定要改复杂点,别用默认的,我这里只是示例。
---
version: '3.0'
services:
db:
image: mysql:5.7 # arm架构的机器请将mysql:5.7改为mysql:oracle
container_name: wordpress-db
restart: unless-stopped
# command: --max-binlog-size=200M --expire-logs-days=2 # 使用mysql 8.0的小伙伴建议使用
environment:
MYSQL_ROOT_PASSWORD: rootpassword # 按需修改
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: yourpassword # 按需修改
volumes:
- './db:/var/lib/mysql'
networks:
- default
app:
image: wordpress:latest
container_name: wordpress-app
restart: unless-stopped
ports:
- 18080:80 # 按需修改。与防火墙开放端口一致。
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: yourpassword # 按需修改
volumes:
- './app:/var/www/html'
links:
- db:db
depends_on:
- redis
- db
networks:
- default
redis:
image: redis:alpine
container_name: wordpress-redis
restart: unless-stopped
volumes:
- ./redis-data:/data
networks:
- default
networks:
default:
name: wordpress
3. 启动服务,完成初始化
配置文件写完,直接后台启动就行:
# 开启服务
cd $work && docker-compose up -d
启动后用docker ps看看状态,只要 db、app、redis 三个容器都是 Up,就说明成功了。接下来访问http://服务器IP:18080,就能进入 WordPress 安装向导:
- 选择简体中文;
- 填写数据库信息(和 docker-compose.yml 里的一致);
- 设置博客标题、管理员账号密码,完成安装。
最后可以用 Nginx 或 NPM 做反向代理,绑定域名yournewdomain.com并配置 HTTPS,我之前用宝塔面板配置的,步骤很简单,新建站点,反向代理到 127.0.0.1:18080 就行。

设置完成后直接登陆:https://yournewdomain.com
(二)宝塔一键安装:新手首选,10 分钟搞定
如果不想折腾 Docker,宝塔面板的一键安装绝对是新手福音,不用写配置文件,点点鼠标就好。
1. 准备工作
先在服务器上安装宝塔面板,然后登录面板,安装 PHP(推荐 7.4 或 8.0 版本)、MySQL、Nginx 这些环境,面板会自动安装,不用手动操作。
宝塔中集成了不少网站部署的一键脚本,只需要进行简单的设置,就可以完成复杂网页的部署,比如 wordpress 个人博客、discuz 论坛等。
2. 一键部署 WordPress
- 点击左侧 “网站”→“添加站点”,输入你的域名,选择 “一键部署”;
- 在模板里选择 “WordPress”,设置数据库账号密码(自动生成也可以,记得保存好);
- 点击 “提交”,宝塔会自动下载 WordPress 源码、创建数据库,全程不用管;
- 部署完成后,访问你的域名,就能进入安装向导,和 Docker 安装的后续步骤一样。

完成配置后,点击提交,过一会就会自动拉取 wordpress 源代码进行部署,通过点击弹窗中的访问站点即可访问网站服务。

访问网址进入 wordpress 网站页面,开始 wordpress 的初始化配置,选择语言为简体中文

点击继续,下一步进行数据库绑定,将网站创建中一起创建的数据库名、用户名和密码填入栏中,其他的保持默认就行,点击提交。

完成数据库配置,进入网站信息设置页面,标题、用户名、密码、电子邮箱等信息自行修改,然后点击安装 WordPress 进行部署。

完成部署后,通过上一步自己设置的用户名和密码就可以登录服务器后台,假设博客地址为 https://yournewdomain.com,博客后台的登录网址为 https://yournewdomain.com/wp-admin。

登录后,进入 WordPress 后台界面,如图所示。
搭建成功,可以自定义自己的模块、插件、等等配置了。

宝塔的好处是自动配置了 Nginx 反向代理和 HTTPS,不用自己动手,后期管理文件、数据库也方便,适合不懂技术的新手。
三、WordPress 迁移:四种方法,覆盖不同场景
博客用久了,难免会遇到换服务器、换域名的情况,迁移就成了刚需。我试过几种迁移方法,各有优劣,大家根据自己的情况选。
1.手动迁移:适合技术用户,灵活度高
手动迁移比较麻烦,但灵活度高,适合需要自定义备份内容的用户,步骤如下:
- 备份数据库:用 phpMyAdmin 登录原服务器数据库,选择 WordPress 对应的数据库,点击 “导出”,选择 SQL 格式,下载备份文件;
- 备份博客文件:用 FTP 工具连接原服务器,下载
/var/www/html目录下的所有文件(主题、插件、上传的图片都在这里); - 恢复数据库:在新服务器上创建同名数据库,用 phpMyAdmin 导入备份的 SQL 文件;
- 恢复博客文件:用 FTP 工具把备份的文件上传到新服务器的站点目录;
- 修改配置文件:打开
wp-config.php,修改数据库账号密码,和新服务器一致; - 替换旧域名:如果换了域名,用 Better Search Replace 插件批量替换数据库里的旧域名,避免链接失效。
2. 宝塔面板迁移:新手友好,可视化操作
如果用的是宝塔面板,迁移也很简单,还支持定时备份到云存储,比如腾讯云 COS、阿里云 OSS,异地备份更安全。
1. 定时备份(推荐提前设置)
- 点击左侧 “计划任务”→“添加任务”,选择 “网站备份”;
- 选择要备份的网站和数据库,备份周期选每月一次(或每周),远程存储选腾讯云 COS(我用的这个,稳定);
- 填写 COS 的 AccessKey、SecretKey、存储桶,保存后就会自动备份,还能保留 3 份历史备份,不怕备份文件丢失。
我同时备份wordpress的目录和数据库,每月执行一次,备份到腾讯云COS,保留3份。

如下图所示,目录和数据库分别备份到相应的文件夹。

2. 还原迁移
如果你需要还原站点了,使用宝塔面板比较简单,分两步就行了,上传数据库和导入数据库文件即可。
导入数据库
首先在宝塔面板选择添加数据库,完成命名和密码设置,点击导入备份,从本地上传之前备份的压缩包,导入后就会显示在下方,这样并没有完成,还要点击导入,才会实现解压压缩包数据,完成对新数据库的覆盖,这样就完成数据库的还原了,还是非常简单的。

上传站点文件
接下来就是上传站点文件,首先通过宝塔面板创建一个新的PHP站点。填入你的站点域名和目录。

来到站点目录,删除默认创建的站点文件,将之前备份的站点压缩包文件上传。

解压到网站目录

将解压的文件移动到站点目录里,这样就完成了站点文件迁移。

注意事项
修改配置文件
不过这样还没完成配置,还要更改下博客的数据库和站点配置文件。因为数据库我们是重新创建的,名字和密码可能会不一样(你也可以设置成一样的),所以需要重新配置。
打开目录下解压的wp-config.php的文件,修改这一段代码
define( 'DB_NAME', 'yourdbname' ); #修改成你的数据库名字
/** Database username */
define( 'DB_USER', 'yourdbname' ); #修改成你的数据库用户名字
/** Database password */
define( 'DB_PASSWORD', 'yourdbpassword' ); #修改成你的数据库密码
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
注意你迁移前后的博客域名注意要一致,否则会无法访问站点,这就是wordpress的痛点了,他要求只能通过一个站点域名访问wordpress站点,如果不一样,就要在配置文件里修改一下。在wp-config.php文件最后加上这一段代码。
define('WP_HOME', 'http://yournewdomain.com'); #修改成你的站点域名
define('WP_SITEURL', 'http://yournewdomain.com'); #修改成你的站点域名
修改站点地址
完成这样后,就可以访问你迁移后的wordpress站点了。不过这样简单的修改域名只是让你可以访问站点,还存在一些问题,毕竟WordPress更换域名不是简单把DNS改一下那么轻松,它涉及数据库、缓存、搜索引擎设置、重定向等多个层面。
进入站点后,进入后台的:设置 > 常规 > WordPress地址(URL) & 站点地址(URL)
确保这两个都改为新域名,点击保存后网站会立即跳转。

批量替换数据库中的旧域名
Better Search Replace 是一个可以对WordPress数据库进行搜索和替换的插件,比如你网站更换域名,或者你需要一次性更换邮箱设置(可能在不同的选项都用到了这个邮箱),等等,通过 Better Search Replace 插件就可以非常方便地实现。
可以在后台 插件 -> 安装插件 界面,搜索 Better Search Replace 进行在线安装,或者到这里下载 Better Search Replace 后手动安装插件。
启用插件以后,就可以在 工具 – Better Search Replace 进入插件界面。

假设原来网址为 http://localhost,线上的网址为 http://yournewdomain.com ,那我们就可以按照下面的步骤操作。
- 先备份下你的数据库
- 在 搜索 字段,输入你要查找的内容,这里输入
http://localhost - 在 替换为 字段,输入
http://yournewdomain.com - 选择数据库表,全选所有数据表
- 要真正替换数据,就取消“作为尝试运行”那个选项
- 点击“运行搜索/替换”按钮就开始执行了
如果在运行过程中,提示执行方面的错误,可以尝试切换到下图的设置标签,减少“最大页面大小”的值,保存后再去试试。
这样就完成wordpress站点的迁移了。
3.Docker 迁移:最简单,推荐技术用户
如果你的 WordPress 是用 Docker 搭的,迁移简直不要太方便!因为我们在 docker-compose.yml 里已经把博客文件和数据库都做了持久化映射,迁移步骤就两步:
- 备份数据:把原服务器上
~/docker/wordpress目录下的db(数据库)、app(博客文件)、redis-data(缓存)三个文件夹打包备份,下载到本地; - 恢复数据:在新服务器上创建同样的目录
~/docker/wordpress,把备份的三个文件夹上传过去,然后重新运行docker-compose up -d,搞定!
services:
db:
...
volumes:
- './db:/var/lib/mysql'
...
app:
...
volumes:
- './app:/var/www/html'
...
redis:
...
volumes:
- ./redis-data:/data
...
这种方法不用改配置文件,数据完全一致,我换服务器的时候就是这么迁的,全程不到 10 分钟。
4.使用插件迁移
如果既不用 Docker 也不用宝塔,用插件迁移是最方便的,我推荐 WPvivid Backup,免费功能完全够用,还支持远程存储。
1. 安装插件
在 WordPress 后台 “插件”→“安装插件”,搜索 “WPvivid Backup”,安装并启用。

2. 备份原站点
- 点击左侧 “WPvivid Backup”→“备份与恢复”,选择 “数据库 + 文件”,点击 “立即备份”;
- 备份完成后,点击 “下载” 把备份文件保存到本地,或者配置远程存储,自动上传备份文件。

计划
勾选“启用备份计划”,时间为“每天”,文件选择“数据库+文件(WordPress文件)”,保存修改即可。

建议将备份文件发送到远程存储,步骤见下方“远程存储”设置。
远程存储
远程存储是重点,也是一定要配置的功能!
WPvivid支持使用 Google Drive 、Dropbox 、oneDrive 、Amazon S3 、DigitalOcean Spaces 、 FTP 等方式配置远程存储。
前几种网盘国内的网络都无法访问或者不太稳定,这里推荐自己搭建FTP进行远程存储。

配置远程存储成功后,点击上方“计划”,勾选“启用备份计划”与“发送文件到远程存储”;点击“设置”,勾选“上传到远程存储后,将备份存储在本机”,保存修改即可。

3. 恢复新站点
- 在新服务器上搭建好空白的 WordPress(用 Docker 或宝塔都可以);
- 同样安装 WPvivid Backup 插件,点击 “备份与恢复”→“上传”,上传之前备份的文件;
- 点击 “还原”,等待还原完成,新站点就和原站点一模一样了,包括账号密码、主题插件。
这种方法适合新手,不用操作服务器文件,全程在 WordPress 后台完成,缺点是备份文件大的话,上传下载比较慢。

四、WordPress 插件推荐
安装好 WordPress 后,这些插件一定要装,能提升博客功能和体验:
- Akismet Anti-Spam:反垃圾评论神器,能自动拦截大部分垃圾评论,不用手动删除;
- WP Mail SMTP:解决 WordPress 默认邮件发送失败的问题,配置 SMTP 后,评论通知、密码找回邮件都能正常发送;
- WP Statistics:网站访问统计,能看到访问量、访客来源、热门文章,比第三方统计工具更隐私;
- Better Search Replace:批量替换数据库内容,换域名、改网站标题都能用;
- Simple Local Avatars:自定义用户头像,不用依赖 Gravatar,国内访问更快;
- WP Githuber MD:Markdown 编辑器,写技术博客必备,支持代码高亮、数学公式;
- Redis Object Cache:Redis 缓存插件,和我们 Docker 配置里的 Redis 配合,能大幅提升博客加载速度。
五、总结
- 新手入门:优先选宝塔一键安装,简单快捷,后期管理方便;
- 技术用户:选 Docker 安装,环境隔离,迁移方便,适合长期维护;
- 迁移场景:Docker 用户用目录备份迁移,新手用宝塔用户用面板备份,按需选择。
WordPress 搭建和迁移看着复杂,其实实操一遍就会了,我第一次迁移的时候折腾了半天,现在换服务器半小时就能搞定。如果大家在操作过程中遇到问题,比如 Docker 启动失败、迁移后链接失效,可以留言问我,我会尽量帮忙解答~