绮课运维文档
教务导入数据
- 如果课程不全,导入开课数据,还会全吗?
同步数据到数据库服务器
本地导出数据
注意:如果表名全小写了,先逐个改大写,再导出,但是可能改不了,一旦配置为忽略大小写。表太大全局替换也搞不了,只能用脚本
powershellmysqldump -uroot -p --default-character-set=utf8 --skip-triggers --ignore-table=c2.blogpost --ignore-table=c2.file --ignore-table=c2.admin --ignore-table=c2.captcha --ignore-table=c2.configuration c2 --result-file dump917.sql
导入到云数据库
powershellmysql -u avnadmin -h cheer-cheer.aivencloud.com -P 27873 -p --default-character-set=utf8 cheer2025_9 < dump919.sql
AVNS_MUaYnfZJIr892QFJYDq
一个简单的持续部署方式
- 配置环境变量
参考 .env.example 创建 .env 主要需配置 DATABASE_URL
# docker 部署配置IMAGE_NAME=ghcr.nju.edu.cn/huayemao/cheer-next:latestCONTAINER_NAME=cheer-nextPORT=3000NODE_ENV=production# 应用配置DATABASE_URL=<YOUR_DATABASE_URL>
- 复制 docker-compose.yml
services: cheer-next: image: ${IMAGE_NAME} container_name: ${CONTAINER_NAME} restart: always environment: - DATABASE_URL=${DATABASE_URL} - NODE_ENV=${NODE_ENV} ports: - "${PORT}:3000" logging: driver: "json-file" options: max-size: "10m" max-file: "3"
- 创建并执行部署脚本
/opt/deploy_scripts/deploy-cheer.sh
以下脚本将拉取镜像并判断有更新,有更新时停止并重新创建容器
shell# 日志文件路径LOG_FILE=/var/log/cheer-deploy.log[root@iZ2vc2khcigksds4daxk1xZ deploy_scripts]# cat ./deploy.sh#!/bin/bashset -euo pipefail# 加载环境变量if [ -f ".env" ]; thenexport $(grep -v '^#' .env | xargs)elseecho "Error: .env file not found!"exit 1fi# 确保日志目录存在if [ ! -d "$(dirname "$LOG_FILE")" ]; thenmkdir -p "$(dirname "$LOG_FILE")"fi# 定义日志函数log() {local TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"}log "Starting deployment process for ${CONTAINER_NAME}"# 拉取最新镜像log "Pulling latest image: ${IMAGE_NAME}"if docker pull "${IMAGE_NAME}" >> "$LOG_FILE" 2>&1; thenlog "Image pulled successfully"# 获取当前运行容器使用的镜像ID(如果容器存在)CURRENT_IMAGE_ID=$(docker inspect --format '{{.Image}}' "${CONTAINER_NAME}" 2>/dev/null || true)# 获取新拉取镜像的IDNEW_IMAGE_ID=$(docker inspect --format '{{.Id}}' "${IMAGE_NAME}" 2>/dev/null)log "Current image ID: ${CURRENT_IMAGE_ID:-(none)}"log "New image ID: ${NEW_IMAGE_ID:-(none)}"# 检查是否需要更新if [ -z "${CURRENT_IMAGE_ID}" ] || [ "${CURRENT_IMAGE_ID}" != "${NEW_IMAGE_ID}" ]; thenlog "New image detected, updating container..."# 停止并重新创建容器if docker compose down >> "$LOG_FILE" 2>&1; thenlog "Old container stopped and removed"if docker compose up -d >> "$LOG_FILE" 2>&1; thenlog "New container started successfully"elselog "Failed to start new container"exit 1fielselog "Failed to stop old container"exit 1fielselog "No changes in image, no update needed"fielselog "Failed to pull latest image"exit 1filog "Deployment process completed"
services: cheer-next: image: ${IMAGE_NAME} container_name: ${CONTAINER_NAME} restart: always environment: - DATABASE_URL=${DATABASE_URL} - NODE_ENV=${NODE_ENV} ports: - "${PORT}:3000" logging: driver: "json-file" options: max-size: "10m" max-file: "3"
crontab -e编辑定时任务配置文件,定时执行脚本。
添加以下行,以每隔5分钟定时执行 /opt/deploy_scripts/deploy-cheer.sh ,保存并退出编辑器后,定时任务将自动生效。`
*/5 * * * * /opt/deploy_scripts/deploy-cheer.sh >> /var/log/cheer-deploy.log 2>&1
shell#!/bin/bashset -euo pipefail# 加载环境变量if [ -f ".env" ]; thenexport $(grep -v '^#' .env | xargs)elseecho "Error: .env file not found!"exit 1fi# 确保日志目录存在if [ ! -d "$(dirname "$LOG_FILE")" ]; thenmkdir -p "$(dirname "$LOG_FILE")"fi# 定义日志函数log() {local TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"}log "Starting deployment process for ${CONTAINER_NAME}"# 拉取最新镜像log "Pulling latest image: ${IMAGE_NAME}"if docker pull "${IMAGE_NAME}"; thenlog "Image pulled successfully"# 检查是否需要更新if [ "$(docker compose images -q ${CONTAINER_NAME})" != "$(docker images -q ${IMAGE_NAME})" ]; thenlog "New image detected, updating container..."# 停止并重新创建容器if docker compose down; thenlog "Old container stopped and removed"if docker compose up -d; thenlog "New container started successfully"elselog "Failed to start new container"exit 1fielselog "Failed to stop old container"exit 1fielselog "No changes in image, no update needed"fielselog "Failed to pull latest image"exit 1filog "Deployment process completed"
问题
- 首字母大写的表,mysql 导出再导入后变成小写
MySQL 数据导出谨慎使用 --compact | Dors. 花野猫的数字花园
SteamFinder: 09-19 19:08:49 huayemao cZErZzRSARdCAGcf
SteamFinder: 09-19 19:08:58 huayemao_dev cZErZzRSARdCAGcf
https://8.210.252.207:887/phpmyadmin_452aeed7e1c9537f/index.php?lang=zh_cn
test002
22023130
999888
150114