个人博客wordpress恢复复盘
目录
个人博客wordpress恢复复盘一、事故发生背景二、恢复博客前提出做的备份2.1 导出博客内容2.2 博客主题备份2.3 插件备份三、重置服务器与重建博客3.1 重置服务器3.2 配置docker环境📕3.3 docker 安装必要的组件3.4 避雷踩坑四、总结
作者:小木蕊 2024年5月19日
一、事故发生背景
在5月17日,服务器因为配置docker
密钥,使用IDEA远程连接服务器docker,导致出现故障,故障原因如下:
arduino
Cannot connect to the Docker daemon at tcp://localhost:2375/. Is the docker daemon running. On GitLab
为什么需要用IDEA远程连接docker,因为本地开发环境使用的是windows,安装的是
wsl+docker
,在打包前端镜像的时候,有百分之80以上的概率会打包失败,打包后端镜像 谷歌搜索结果
无法连接docker daemon
,出现后docker命令无法使用,docker -v
能够正常显示。docker 上已经部署过自动启动的 容器可以正常启动,但是无法运行新的容器。在尝试删除docker,重装docker数次后都没有解决。猜测是哪里的docker配置被修改了,还记录在服务器中的某个位置,暂时无从考证。无奈只能将服务器通过云服务器厂商提供的手段恢复重置。
二、恢复博客前提出做的备份
2.1 导出博客内容
因为使用的是wordpress搭建的个人博客,第一次部署的时候未使用docker部署,直接部署到服务器中,手动去配置的php+mysql+nginx+wordpress
环境。在wordpress中有导出按钮,可以将博客内容以xml方式导出。将自己的数据库也备份导出。
2.2 博客主题备份
相比很多人在使用wordpress搭建博客的时候到使用到了其他主题,将自己的主题也导出,方便恢复。主题的导出无法在wordpress后台管理界面导出,需要找到主题的文件位置一般在 wodepress安录\wp-content\themes
,这个目录下的就是主题如下图:sakura。如果不使用原来的主题可以跳过,不是必须的😜,直接拷贝出来。
2.3 插件备份
插件一定要备份,或者说需要提前准备好,接下来会有一些大坑🤧。也是和备份主题一样的方式,一般在wordpress安装目录\wordpress\wp-content\plugins
三、重置服务器与重建博客
3.1 重置服务器
根据自己的云服务器提供的控制台,更换镜像,在选择之前的镜像即可,列如阿里云的云服务器:
3.2 配置docker环境📕
上文提到第一次使用原生的部署方式,为什么这里要使用docker来部署呢?考虑到环境的配置是一个非常耗时间也麻烦的时,将来如果即使不是服务器出现问题,考虑换服务器的话,也是比较方便的,docker-compose 一键部署嘎嘎的爽。第一步安装docker
csharp
#首先要安装一个yum工具
yum install -y yum-utils
#安装成功后,执行命令,配置Docker的yum源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker 在服务器上安装也是嘎嘎的方便😁
3.3 docker 安装必要的组件
- MySQL 镜像用来存储文章内容和wordpress配置
- worpress 镜像 博客本体
- Nginx 反向代理工具,用来做端口和ip的映射和https和http的代理。也可以不配
文件结构:
下面是docker-compose文件:
yaml
#docker-compose运行命令: docker compose -f docker-compose-app.yml up -d
version: '3.1'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
ports:
- '443:443'
- '80:80'
volumes:
- ./nginx/logs:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
# - ./nginx/conf/conf.d:/etc/nginx/conf.d
# - ./nginx/ssl:/etc/nginx/ssl/
privileged: true
wordpress:
image: wordpress
restart: always
ports:
- "9999:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 123456
WORDPRESS_DB_NAME: xiaomurui
volumes:
- ./wordpress:/var/www/html
networks:
- my-network
depends_on:
- mysql
mysql:
image: mysql:8.0.32
container_name: db
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
networks:
- my-network
ports:
- "23306:3306"
volumes:
- ./mysql/sql:/docker-entrypoint-initdb.d
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 5s
timeout: 10s
retries: 10
start_period: 15s
networks:
my-network:
driver: bridge
这份docker-compose文件会帮我我们创建好我们需要的环境并将其数据恢复到wordpress。并且将我们的主题也恢复到之前的样子。选择合适的SSH工具连接到服务器,将整个的devops文件夹上传到服务器,在devops文件夹下执行docker compose命令。
3.4 避雷踩坑
需要搭建和相应的结构,不然docker无法做相应的配置,上面的原理起始就是将本地wordpress和docker中的wordpress镜像做一个数据卷的绑定,nginx也和本地的配置文件绑定,MySQL将之前的SQL语句先准备好创建对应的数据。下次如果需要迁移也只需要导出SQL语句即可,其余都不需要改变。在新的服务器上安装docker,一键运行docker-compose 文件即可。
问题处理方案:
-
数据库导出的SQL没有创建数据库的语句需要手动添加
perldrop database if exists `数据库名称`; create database `数据库名称`; use `数据库名称`;
-
数据库名称需要和 docker-compose.yaml文件中wordpress部分的保持一致。
-
wordpress无法正常上传图片和插件问题,记得给自己上述文件夹 devops及其子文件夹加上对应的权限
bashchmod -R 777 devops
-
wordpress 上传文件大小限制问题增加配置项php.ini
iniupload_max_filesize = 64M #修改为自己需要的大小
-
wordpress 不要使用80端口,80端口留给nginx 如果服务器上有其他的服务可以用nginx做转发
-
wordpress 文章的尽量使用外部的图床不要使用上传的本地图片,恢复备份时,不可恢复。特色图片也可以使用插件修改为可以使用外部图床。
四、总结
- 在docker配置环节还有很多细节和完整的配置文件没有给出,这里是做思路上的分享和一些常见问题的必坑如果需要练习我的邮箱,我可以提供我的作为参考。
- 尽量使用docker 部署服务,考虑到将来的迁移问题,最好编写为对应的devops文件夹,把docker-compose等配置好
- 多做定时的备份,不知道哪天服务器就会抽风。
- wordpess本质上也是将配置写入数据库,只要有数据库备份和相应的主题插件等可以复原,但是需要注意表的名字,和配置表的信息。
- 下次如果需要迁移也只需要导出SQL语句即可,其余都不需要改变。在新的服务器上安装docker,一键运行docker-compose 文件即可。
[前端镜像] 使用React和TS构建的前端页面,使用node 打包
[后端镜像] 使用Java 开发的系统