85 lines
2.9 KiB
Bash
85 lines
2.9 KiB
Bash
#!/bin/bash
|
||
|
||
# 部署Gitea的脚本
|
||
# 作者:AI助手
|
||
# 日期:2025-03-13
|
||
|
||
set -e
|
||
|
||
echo "===== 开始部署Gitea ====="
|
||
|
||
# 设置变量
|
||
DOMAIN="gitea.mzh.one"
|
||
DNMP_DIR="/opt/dnmp"
|
||
NGINX_CONF_DIR="$DNMP_DIR/services/nginx/conf.d"
|
||
SSL_DIR="$DNMP_DIR/services/nginx/ssl/$DOMAIN"
|
||
WWW_DIR="$DNMP_DIR/www"
|
||
|
||
# 自动检测MySQL容器
|
||
MYSQL_CONTAINER="mysql" # 默认MySQL容器名
|
||
AUTO_DETECT_MYSQL=$(docker ps | grep -E 'mysql|mariadb' | head -1 | awk '{print $1}')
|
||
if [ ! -z "$AUTO_DETECT_MYSQL" ]; then
|
||
DETECTED_MYSQL_NAME=$(docker inspect --format='{{.Name}}' $AUTO_DETECT_MYSQL | sed 's/\///')
|
||
MYSQL_CONTAINER=$DETECTED_MYSQL_NAME
|
||
echo "自动检测到MySQL容器: $MYSQL_CONTAINER"
|
||
fi
|
||
|
||
# 自动检测Nginx容器
|
||
NGINX_CONTAINER="nginx" # 默认Nginx容器名
|
||
AUTO_DETECT_NGINX=$(docker ps | grep nginx | head -1 | awk '{print $1}')
|
||
if [ ! -z "$AUTO_DETECT_NGINX" ]; then
|
||
DETECTED_NGINX_NAME=$(docker inspect --format='{{.Name}}' $AUTO_DETECT_NGINX | sed 's/\///')
|
||
NGINX_CONTAINER=$DETECTED_NGINX_NAME
|
||
echo "自动检测到Nginx容器: $NGINX_CONTAINER"
|
||
fi
|
||
|
||
# 1. 创建必要的目录
|
||
echo "1. 创建必要的目录..."
|
||
mkdir -p conf/nginx/conf.d conf/gitea data/gitea data/mysql
|
||
mkdir -p $SSL_DIR
|
||
mkdir -p $WWW_DIR
|
||
|
||
# 2. 确保MySQL数据库已准备好
|
||
echo "2. 准备MySQL数据库..."
|
||
# 假设MySQL已经在DNMP环境中运行
|
||
# 创建gitea数据库和用户
|
||
cat <<EOF > create_db.sql
|
||
CREATE DATABASE IF NOT EXISTS gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
CREATE USER IF NOT EXISTS 'gitea'@'%' IDENTIFIED BY 'gitea_password';
|
||
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'%';
|
||
FLUSH PRIVILEGES;
|
||
EOF
|
||
|
||
echo "请手动执行以下命令创建数据库(如果尚未创建):"
|
||
echo "docker exec -i $MYSQL_CONTAINER mysql -uroot -p < create_db.sql"
|
||
|
||
# 3. 申请SSL证书
|
||
echo "3. 申请SSL证书..."
|
||
echo "请确保域名$DOMAIN已正确解析到服务器IP"
|
||
echo "请手动执行以下命令申请证书:"
|
||
echo "certbot certonly --webroot -w $WWW_DIR -d $DOMAIN"
|
||
echo "然后复制证书到指定目录:"
|
||
echo "cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem $SSL_DIR/$DOMAIN.pem"
|
||
echo "cp /etc/letsencrypt/live/$DOMAIN/privkey.pem $SSL_DIR/$DOMAIN.key"
|
||
|
||
# 4. 启动Gitea服务
|
||
echo "4. 启动Gitea服务..."
|
||
docker-compose up -d
|
||
|
||
echo "5. 配置Nginx..."
|
||
# 假设Nginx配置文件已经创建好
|
||
echo "请确保Nginx配置文件已正确加载"
|
||
echo "请将gitea.conf复制到DNMP的nginx配置目录:"
|
||
echo "cp conf/nginx/conf.d/$DOMAIN.conf $NGINX_CONF_DIR/"
|
||
echo "然后重启Nginx:docker exec -it $NGINX_CONTAINER nginx -s reload"
|
||
|
||
echo "===== Gitea部署完成 ====="
|
||
echo "请访问 https://$DOMAIN 完成初始化设置"
|
||
echo "初始化时,请使用以下数据库设置:"
|
||
echo "数据库类型:MySQL"
|
||
echo "主机:$MYSQL_CONTAINER:3306"
|
||
echo "用户名:gitea"
|
||
echo "密码:gitea_password"
|
||
echo "数据库名:gitea"
|
||
|
||
echo "注意:首次访问时,您将被引导完成Gitea的初始化设置,包括创建管理员账户" |