Coolify 的 WordPress 迁移至宝塔重新部署

发布于 2024-06-24  60 次阅读


Post Stats

此文章有 4376 个字符, 大约要花 19 分钟阅读

背景

Coolify 部署在一台 2C2G 的云服务器上。只运行了一个 WordPress 应用,

正常运行时服务器CPU占用很低(不超过20%),内存还剩余600M。但运行一阵以后服务器会卡死,磁盘在一直满速读文件,CPU占用不高。云服务上连接SSH也进不去 (VNC都进不去),

尝试了以下手段:

  • 刚开始以为是WP内存占用太高,尝试限制了容器内存在400M以内。
  • 再后来限制Coolify内存在 500M。
  • 最后把所有的 HealthCheck 取消掉。

还是不行,最后一直观察htop,发现是Coolify有定时任务,一直扫文件。

不确定是因为这个导致的,但我还是准备把博客从Coolify迁移回同一台机器上的宝塔。

WordPress 备份

这里因为文章还不是很多,安装了WPvivid,将整站文件夹进行了备份。

重装宝塔

备份好后直接去云服务器控制台,将机器重装镜像。

这里重装的是 centos-stream-9。

重装好后登录ssh,使用宝塔脚本安装宝塔。

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

安装好后设置宝塔的用户名、密码、端口、入口地址登入宝塔。

安装 docker

前往宝塔docker面板安装docker。这里选择的清华大学源进行安装。

配置加速url

安装好后在 设置 -> 加速URL 处修改,填入加速地址。

加速地址可以参考:利用 Cloudflare Workers 自建 Docker 镜像

保存后在设置面板重启Docker服务

宝塔 Docker 安装 WordPress

前往 编排模板 新增 docker-compose.yaml 配置。

services:
  wordpress:
    image: "wordpress:latest"
    volumes:
      - "/www/wwwroot/blog/wordpress:/var/www/html"
    container_name: wordpress-web
    environment:
      - WORDPRESS_DB_HOST=mariadb
      - WORDPRESS_DB_USER=root
      - WORDPRESS_DB_PASSWORD=blog.evef1.top
      - WORDPRESS_DB_NAME=wordpress
    restart: always
    depends_on:
      - mariadb
    ports:
      - "127.0.0.1:8080:80"
    deploy:
      resources:
        limits:
          memory: 440M
        reservations:
          memory: 160M
  mariadb:
    image: "mariadb:11"
    volumes:
      - "/www/wwwroot/blog/mysql:/var/lib/mysql"
    container_name: wordpress-mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=blog.evef1.top
      - MYSQL_USER=root
      - MYSQL_DATABASE=wordpress
    restart: always
    deploy:
      resources:
        limits:
          memory: 440M
        reservations:
          memory: 160M
  phpmyadmin:
    image: "phpmyadmin:latest"
    container_name: wordpress-phpmyadmin
    environment:
      - PMA_ARBITRARY=1
    depends_on:
      - mariadb
    ports:
      - "127.0.0.1:8081:80"
    deploy:
      resources:
        limits:
          memory: 120M
        reservations:
          memory: 60M

保存后点击拉取镜像。然后前往容器编排新增对应的编排模板即可。

error establishing a database connection 问题修复

启动后发现打开Wordpress报error establishing a database connection

但是通过phpmyadmin链接数据库是没问题的。

后来经过调查发现是 wp-config.php 文件中,define( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', 'mysql')); 获取不到环境变量,其他环境变量正常可以获取到。

将其改为define( 'DB_HOST', 'mariadb' ) 重启即可。

恢复备份

登录Wordpress后台,安装WPvivid插件。上传备份文件,点击还原。

WordPress就装好了。

Coolify 与 宝塔的对比

反向代理

Coolify:使用traefik
宝塔:使用Nginx

内存:

2G内存
Coolify:正常运行要吃400-600M内存
宝塔:大概吃100-200M内存(配置完后可以关闭宝塔服务)

CPU

2CPU核心:
Coolify:正常运行存在很多定时任务和健康检查,会占约15%的CPU资源
宝塔:没什么定时任务,也不具备自带的健康检查,会占1.5%的CPU资源

SSL证书

Coolify: 利用traefik自动续签,支持非常多的dns云
宝塔:固定三家dns云

其他功能

Coolify: 没什么其他功能了
宝塔:运维工具齐全,FTP,SSH,防火墙,监控,日志,自定义定时任务。

WordPress 再次崩溃

最后发现是阿里云centos-stream-9镜像有定时任务一直在执行 dnf makecache