WordPress-Docker-Automated

简介
很多人问我的博客是怎么搭建管理的,我把它整理出来,并写了一些自动化脚本,加快建站过程,希望能帮到大家。
项目地址:https://github.com/systemcaller/wordpress-docker-Automated
博客是基于 wordpress 、nginx 、 mysql 、 docker-compose 搭建部署的。支持快速搭建、自动备份、恢复、跨服务器迁移。
快速开始
从零开始建站,请参考这里。在开始前请确保你的服务器已经安装好了 docker 和 docker-compose 环境。
- 将这些脚本文件下载到你的服务器任意目录下
- 配置你自己的环境变量值,在
.env
文件中按需修改如下参数:
-
MYSQL_ROOT_PASSWORD
这是你的数据库root用户密码 -
MYSQL_DATABAS
这是你的 wordpress 必须的数据库,给他取一个名字吧,建议用我设置的值 wordpress -
MYSQL_USER
这是为 wordpress 及其他服务访问数据库使用的一般用户名,设置一个你喜欢的 -
DB_PASSWORD
这是为这个一般用户设置一个密码吧 -
MYSQL_PORT
数据库的端口号,很抱歉现阶段设置这个是必须的,但是着并不意味着数据库端口号会被开放外部访问,它是安全的。不建议你修改它,除非你对自己有自信。 -
WORDPRESS_PATH
为你的 wordpress 设置一个安装目录吧。目录必须以/
开头的绝对路径,在这个目录下存储了你站点的全部用户数据。
-
我提供的 nginx 配置文件,是包含 https 加密,和域名访问的,请根据 nginx.conf 配置文件中的备注修改为你自己的域名和 SSL 证书。
-
执行
docker-compose up -d
命令启动 docker 容器,请在docker-compose.yaml
文件同目录下执行哟。 -
访问你的服务器
http://[your_ip]
,即可看到 wordpress 注册登录页面了,开始你的建站之旅吧。 -
一般情况下,如果你有自己的域名,首先在域名提供商那里将域名解析到服务器公网 ip ,再执行 updateUri.sh 脚本,根据提示输入域名地址,比如
https://systemcaller.com
,地址结尾不要加/
哟。
备份和恢复
默认情况下,backup-wp 容器会在每天凌晨 3 点备份。备份文件存储在$WORDPRESS_PATH/backups-wp
目录下。
你也可以手动备份,执行 backup.sh 脚本,根据提示即可完成手动备份,但同一天只会保留最新的一次备份记录。
恢复方法也是执行 backup.sh 脚本,根据提示即可完成恢复。
跨服务器的站点迁移
wordpress 在同服务器备份恢复过程中,不会有域名问题。所以我需要解决的就是跨服务器的迁移问题。
-
首先备份原服务器,在 $WORDPRESS_PATH/backups-wp 目录下找到你的备份文件,同一天有2个文件。比如 backup_20220915.sql.bz2 和 backup_2020915.tar.gz ,前者是数据库备份,后者是 wordpress 备份。下载并上传到新的服务器。
-
在新的服务器上,根据快速开始中的说明安装好,为了避免恢复失败,请不要注册,登录或者对新的站点做修改。只要验证通过新的公网 ip 地址能访问就行。
-
执行
backup.sh
脚本,根据提示即可完成恢复。恢复后通常无法通过新公网 ip 访问了,因为备份中的站点还是原服务器的地址。 -
执行
updateUri.sh
脚本,根据提示输入新服务器 ip 地址,如果有域名,就输入域名地址。 -
最后验证下能不能访问站点,已经恢复的数据是否正常。
配置
使用 blocksy 主题一件装饰,通过以下视频学习怎么用该主题。他还有其他视频也不错。
https://www.youtube.com/watch?v=eBvFQlqePiI
备份
执行 backup.sh 脚本,根据提示即可完成恢复。
这里也提供给搭建环境不是基于 docker-compse 而是 docker 的朋友,一份快速备份方案。即单独启动一个备份容器。
# 启动模板
docker run \\
# 容器名
--name backup-my-blog \\
# 备份文件存储地址
-v /root/wp-backups:/backups \\
# 共享wordperss容器的数据卷
--volumes-from=your-wordpress-container \\
# 连接数据库容器
--link=your-mysql-container:mysql \\
-d aveltens/wordpress-backup
# 启动示例
docker run \\
--name backup-my-blog \\
--network my_wordpress_default \\
-v /root/wp-backups:/backups \\
--volumes-from=my_wordpress-wordpress-1 \\
--link=my_wordpress-db-1:mysql \\
-e MYSQL_ENV_MYSQL_USER=wordpress \\
-e MYSQL_ENV_MYSQL_DATABASE=wordpress \\
-e MYSQL_ENV_MYSQL_PASSWORD=wordpress \\
-d aveltens/wordpress-backup
可能遇到的问题
- 希望修改 wordpress 容器的端口号
- 默认我设置的端口好是7037,如果要修改端口号,请修改
docker-compose.yaml
和nginx.conf
文件,把 7037 都替换为你希望的,再通过命令docker-compose restart
重启即可。
- 默认我设置的端口好是7037,如果要修改端口号,请修改
- 新安装后的 wordpress 上传主题限制了文件大小,导致一些自定义主题安装不了。
- 修改
uploads.ini
文件的upload_max_filesize
参数,默认值是 100M 。
- 修改
- 哪个主题好,我试过很多,觉得最好最简单的还是blocksy 。
- https 配置后,站点出现无线循环重定向或者某些资源跨域访问报错问题。一般情况下是不会出现的,因为我的脚本已经处理了这种异常,如果出现了,也希望能帮你解决。整个问题相对复杂,我详细说下
https 配置后,站点无线循环重定向,这是wordpress官方的某个设定,修改 wp-config.php 配置文件可解决。在官方文档中有说明
修改 wp-config.php 配置文件,添加如下内容
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
原来站点的某些静态资源迁移后,出现跨域访问问题,这种统称为混合异常。可以尝试通过以下几个插件解决,可以直接到 worepress 插件市场下载。
https://wordpress.org/plugins/ssl-insecure-content-fixer/ 和 Better Search Replace
总结
建站说简单也简单,可是对于初学者还是有很多坑的。希望本文能帮助到你。如果有没有介绍情况的,欢迎提问。