记录一次wordpress博客迁移

FTLian 发布于 2023-12-26 2703 次阅读


aws的小鸡鸡已经不能满足我了,再加上用的过时的 centos7 显得十分没有品味,换成了hybula的中等鸡鸡,AMD EPYC 9554 2 core,2 GB DDR5 ECC 4800。搞个博客是绰绰有余了。黑五一个季度才15.75欧,属于是血赚。

如果要照抄这篇指北的话,uploads.ini文件应该放在/home/blog/uploads.ini,且创建/home/blog/wp和/home/blog/wpmysql两个文件夹用以在后期简单迁移备份wordpress和mysql

于2025年07月19日更新

1. 安装docker

前几天写了一个docker安装的小流程,后来跟群友交流后发现意义不大,直接用docker的一键脚本省时省心

curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

2. 创建uploads.ini文件

创建/home/blog/uploads.ini文件,省的以后还要进入wordpress镜像修改php.ini。docker-wordpress默认的上传最大文件限制为 2M,最长时间60s,显然是不够的。

file_uploads = On
memory_limit = 512M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 600

3.创建一个docker-compose.yml文件并up

创建/home/blog/docker-compose.yml,我个人用的文件放到这里了,如果有人想照抄应该也没问题,应该是可以直接用的,需要改成自己的邮箱、数据库等地方都注释好了。我个人把docker-compose.yml文件放在了/home/blog下,npm有更新成新项目,因此该段在2025年7月有所更新

version: '3.9'
services:
    container_name: npmplus
    image: docker.io/zoeyvid/npmplus:latest # or ghcr.io/zoeyvid/npmplus:latest
    restart: always
    network_mode: host
    volumes:
      - "/opt/npmplus:/data"
      - "TZ=Asia/Shanghai" # 设置时区,必填,需"TZ identifier",可参考 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
      - "ACME_EMAIL=【你的邮箱】" # 用于 acme 的电子邮件地址,目前是可选的,但将来可能会需要,因此作者建议您在此处输入您的电子邮件

    wordpress:
        image: wordpress
        restart: always
        privileged: true
        ports:
            - 8080:80
            - 8081:443
        container_name: wordpress
        environment:
            WORDPRESS_DB_HOST: mysql
            WORDPRESS_DB_USER: #mysql用户名
            WORDPRESS_DB_PASSWORD: #mysql密码
            WORDPRESS_DB_NAME: #mysql数据库名
        volumes:
            - /home/blog/wp:/var/www/html
            - /etc/letsencrypt
            - /home/blog/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
        deploy:
        restart_policy:
        condition: on-failure

        mysql:
            image: mysql:5.7
            restart: always
            privileged: true
            environment:
              MYSQL_DATABASE: #mysql数据库名
              MYSQL_USER: #mysql用户名
              MYSQL_PASSWORD: #mysql密码
              MYSQL_RANDOM_ROOT_PASSWORD: '1'
            container_name: mysql
            volumes:
              - /home/blog/wpmysql:/var/lib/mysql
            deploy:
              restart_policy:
                condition: on-failure
volumes:
  wordpress:
  db:

在当前目录下up,推荐先docker-compose up看一下有没有什么报错,再docker-compose up -d

4. 配置Nginx proxy manager plus

这个对我来讲是新东西,很现代,很优雅,有GUI对我这种猴子非常的友好。zoeyvid/npmplus

先用ip:81 访问后台管理界面,然后输入账号密码进入后台。这个NPM镜像的初始账户如下,密码需查看NPMPLUS的镜像日志文件得到,即

docker logs npmplus
Creating a new user: admin@example.org with password: acadc7f8c7e79b11a8f7209881acc2553dc3ea8e2db45651617af7d9e7f08715
Email:    admin@example.org
Password: 【上述指令所得密码,例如“acadc7f8c7e79b11a8f7209881acc2553dc3ea8e2db45651617af7d9e7f08715”】

查询所有的容器的IP,IP是在NPMplus配置Proxy Host所需的

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

进入后会填写个人信息,重置密码
点击Add Proxy Host,填写成这个样子

Forward Host那么可能和我这个并不一样,如果搭建的wordpress和nginx proxy manager服务所在不是一个服务器,则填写能访问对应服务的IP。如果都在同一台服务器上,则填写在服务器中输入ip addr show docker0 命令获取得到的ip。后者一般是172.17.0.1
搞完了应该就可以访问HTTP的博客了,但是不太安全。可以在TLS Certificates栏中,右侧Add TLS Certificates - certBot申请一个证书,如果不是搞通配符证书很简单

申请完之后再在Proxy Host栏Edit Proxy Host-TLS选择刚才申请好的证书即可。

5.一些可选项

此作者没有提供个人介绍。
最后更新于 2025-07-19