[6月10日]博客等站点数据迁移

首页 / 教程 / 正文

前言

周末的时候对博客等站点进行了数据迁移,抛弃了宝塔面板,全面转向容器化。所有站点均采用Docker部署。

迁移途中尝试使用云联网使腾讯轻量云服务器和TDSQL-C实现内网互通。结果发现在同一区域以及不同区域的轻量云还是无法在云联网的基础下实现内网互通,于是将TDSQL开启公网访问,尝试了下ping值在25ms左右,感觉使用上应该没有什么影响,结果迁移完成以后发现站点文章页面加载还是有点慢,这还是开了CDN的情况下,先用一段时间看看具体是什么影响到的。

如果是数据库连接上产生的耗时且无法实现轻量和TDSQL的内网互联,后续会考虑弃用TDSQL换到本地PostgreSQL数据库。

本次做了以下几件事:

  • 操作系统由Centos和Ubuntu迁移到Debian GNU/Linux 11 (bullseye)
  • Typecho主程序由Typecho 1.2/18.1.29 版本更新到1.2.1版本
  • 抛弃宝塔面板(以前用它就是图一个管理方便)
  • 数据库由本地数据库迁移到腾讯TDSQL-C
  • 抛弃Apache使用更加轻量的Caddy Server V2
  • Cuteen主题及插件升级至5.10版本
  • 全面容器化部署

迁移

  1. 构建php-fpm镜像
FROM composer:latest as composer-build

FROM php:8.1.15-fpm-alpine3.17
MAINTAINER rainerosion "[email protected]"

COPY --from=composer-build /usr/bin/composer /usr/bin/composer
ENV BUILD_DEPS \
    libzip-dev \
    icu-dev \
    postgresql-dev \
    libpng-dev \
    libwebp-dev \
    libjpeg-turbo-dev \
    curl-dev \
    sqlite-dev \
    oniguruma-dev \
    libmemcached-dev

ENV RUN_DEPS \
    autoconf \
    g++ \
    make \
    libzip \
    icu \
    postgresql-libs \
    libpng \
    libwebp \
    libjpeg-turbo \
    curl \
    sqlite-libs \
    oniguruma \
    libmemcached \
    shadow

ENV PHP_EXTENSIONS \
    zip \
    intl \
    exif \
    pdo_mysql \
    pdo_pgsql \
    mysqli \
    pgsql \
    gd \
    curl \
    session \
    pdo_sqlite \
    fileinfo \
    mbstring \
    bcmath
ARG UID=33
ARG GUID=33
RUN set -eux && \
    sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
    apk update && \
    apk add --no-cache $RUN_DEPS && \
    usermod -u $UID -o www-data && \
    groupmod -g $GUID -o www-data && \
    apk add --no-cache --virtual .build-deps $BUILD_DEPS && \
    docker-php-ext-configure gd --enable-gd --with-jpeg --with-webp && \
    docker-php-ext-install -j $(nproc) $PHP_EXTENSIONS && \
    pecl install redis memcached  && \
    docker-php-ext-enable redis memcached && \
    apk del .build-deps
  1. 配置Caddyfile
{
    email [email protected]
}
rainss.cn {
    encode gzip
    root * /www/wwwroot/rainss.cn
    php_fastcgi php-fpm:9000
    file_server
}
api.rainss.cn {
    encode gzip
    root * /www/wwwroot/api.rainss.cn
    php_fastcgi php-fpm:9000
    file_server
}
tool.rainss.cn {
    encode gzip
    root * /www/wwwroot/tool.rainss.cn
    
    @visual_page {
        path_regexp page ^/amusement/VisualDeception/page-(\d+)\.html$
    }
    @visual_look {
        path_regexp look ^/amusement/VisualDeception/look-(\d+)\.html$
    }
    @spz {
        path_regexp look ^/amusement/spz/look-(\d+)\.html$
    }
    rewrite @visual_page /amusement/VisualDeception/index.php?page={re.page.1}
    rewrite @visual_look /amusement/VisualDeception/look.php?id={re.look.1}
    rewrite @spz /amusement/spz/look.php?id={re.look.1}

    php_fastcgi php-fpm:9000
    file_server
}

suger.live {
    root * /www/wwwroot/suger.live
    encode gzip
    php_fastcgi php-fpm:9000
    file_server
}

pic.suger.live {
    root * /www/wwwroot/pic.suger.live/public
    php_fastcgi php-fpm:9000
    file_server
}

bit.suger.live:80 {
    encode gzip zstd
    reverse_proxy * bitwarden:80
}
  1. 服务编排
version: '3.2'
services:
  webservice:
    container_name: caddy
    image: caddy:latest
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
      - /opt/caddy/config:/config
      - /opt/caddy/data:/data
      - /www/wwwroot:/www/wwwroot
    depends_on:
      - php-cgi
    restart: always
    networks:
      - website
  php-cgi:
    container_name: php-fpm
    image: rainautos/php-fpm:8.1.15
    volumes:
      - /etc/localtime:/etc/localtime
      - /www/wwwroot:/www/wwwroot
    restart: always
    networks:
      - website
  pgsql:
    container_name: postgres
    image: postgres:12.4
    restart: always
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - ALLOW_IP_RANGE=${ALLOW_IP_RANGE}
    ports:
      - 5432:5432
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/docker/postgres:/var/lib/postgresql
    networks:
      - website
networks:
  website:
    external: true
  1. 由于更换了服务器,重新进行域名解析以及CDN回源配置,配置完成后启动服务。
docker-compose up -d
  1. 各站点程序安装以及数据迁移,以及服务器运行情况

服务运行情况.png

无标签
评论区
头像
    头像
    勿忘初心
      

    你好,看你的站做的挺不错的,有没有出手的打算,想出手的话,联系QQ1587894193。

    头像
    彻夜丶雨
      

    评论邮件通知测试

    头像

    评论功能测试

      头像
      寻梦xunm
        
      @雨落凋殇

      真不错呀,网站首页的css模糊效果太耗费性能啦

        头像
        @寻梦xunm

        啊,迁移新版本原来的邮件通知插件失效了,才看到。不过确实模糊效果耗费性能。

文章目录