前言
周末的时候对博客等站点进行了数据迁移,抛弃了宝塔面板,全面转向容器化。所有站点均采用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版本
- 全面容器化部署
迁移
- 构建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
- 配置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
}
- 服务编排
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
- 由于更换了服务器,重新进行域名解析以及CDN回源配置,配置完成后启动服务。
docker-compose up -d
- 各站点程序安装以及数据迁移,以及服务器运行情况
你好,看你的站做的挺不错的,有没有出手的打算,想出手的话,联系QQ1587894193。
评论邮件通知测试
评论功能测试
真不错呀,网站首页的css模糊效果太耗费性能啦
啊,迁移新版本原来的邮件通知插件失效了,才看到。不过确实模糊效果耗费性能。