WordPress-Docker-Automated

简介

很多人问我的博客是怎么搭建管理的,我把它整理出来,并写了一些自动化脚本,加快建站过程,希望能帮到大家。
项目地址:https://github.com/systemcaller/wordpress-docker-Automated
博客是基于 wordpress 、nginx 、 mysql 、 docker-compose 搭建部署的。支持快速搭建、自动备份、恢复、跨服务器迁移。

快速开始

从零开始建站,请参考这里。在开始前请确保你的服务器已经安装好了 docker 和 docker-compose 环境。

  1. 将这些脚本文件下载到你的服务器任意目录下
  2. 配置你自己的环境变量值,在 .env 文件中按需修改如下参数:
  • MYSQL_ROOT_PASSWORD 这是你的数据库root用户密码

  • MYSQL_DATABAS 这是你的 wordpress 必须的数据库,给他取一个名字吧,建议用我设置的值 wordpress

  • MYSQL_USER 这是为 wordpress 及其他服务访问数据库使用的一般用户名,设置一个你喜欢的

  • DB_PASSWORD 这是为这个一般用户设置一个密码吧

  • MYSQL_PORT 数据库的端口号,很抱歉现阶段设置这个是必须的,但是着并不意味着数据库端口号会被开放外部访问,它是安全的。不建议你修改它,除非你对自己有自信。

  • WORDPRESS_PATH 为你的 wordpress 设置一个安装目录吧。目录必须以 / 开头的绝对路径,在这个目录下存储了你站点的全部用户数据。

  1. 我提供的 nginx 配置文件,是包含 https 加密,和域名访问的,请根据 nginx.conf 配置文件中的备注修改为你自己的域名和 SSL 证书。

  2. 执行 docker-compose up -d 命令启动 docker 容器,请在 docker-compose.yaml 文件同目录下执行哟。

  3. 访问你的服务器 http://[your_ip] ,即可看到 wordpress 注册登录页面了,开始你的建站之旅吧。

  4. 一般情况下,如果你有自己的域名,首先在域名提供商那里将域名解析到服务器公网 ip ,再执行 updateUri.sh 脚本,根据提示输入域名地址,比如 https://systemcaller.com ,地址结尾不要加 / 哟。

备份和恢复

默认情况下,backup-wp 容器会在每天凌晨 3 点备份。备份文件存储在$WORDPRESS_PATH/backups-wp 目录下。

你也可以手动备份,执行 backup.sh 脚本,根据提示即可完成手动备份,但同一天只会保留最新的一次备份记录。

恢复方法也是执行 backup.sh 脚本,根据提示即可完成恢复。

恢复备份的源码是这位大牛提供的,非常感谢他。

跨服务器的站点迁移

wordpress 在同服务器备份恢复过程中,不会有域名问题。所以我需要解决的就是跨服务器的迁移问题。

  1. 首先备份原服务器,在 $WORDPRESS_PATH/backups-wp 目录下找到你的备份文件,同一天有2个文件。比如 backup_20220915.sql.bz2 和 backup_2020915.tar.gz ,前者是数据库备份,后者是 wordpress 备份。下载并上传到新的服务器。

  2. 在新的服务器上,根据快速开始中的说明安装好,为了避免恢复失败,请不要注册,登录或者对新的站点做修改。只要验证通过新的公网 ip 地址能访问就行。

  3. 执行 backup.sh 脚本,根据提示即可完成恢复。恢复后通常无法通过新公网 ip 访问了,因为备份中的站点还是原服务器的地址。

  4. 执行 updateUri.sh 脚本,根据提示输入新服务器 ip 地址,如果有域名,就输入域名地址。

  5. 最后验证下能不能访问站点,已经恢复的数据是否正常。

配置

使用 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.yamlnginx.conf 文件,把 7037 都替换为你希望的,再通过命令 docker-compose restart重启即可。
  • 新安装后的 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

总结

建站说简单也简单,可是对于初学者还是有很多坑的。希望本文能帮助到你。如果有没有介绍情况的,欢迎提问。

SystemCaller
SystemCaller

https://gravatar.com/noisily745e35dad0

文章: 47

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注