From efdd967d6940b3a36e912bfd4b06525f2b02ed11 Mon Sep 17 00:00:00 2001 From: yangyuqing <1614872855@qq.com> Date: Tue, 2 Jun 2026 16:42:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E9=94=AE=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E8=84=9A=E6=9C=AC=E5=92=8C=E8=87=AA=E5=8A=A8=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AUTO_DEPLOY_README.md | 217 ++++++++++++++++++++++++++++++++++++++ auto-deploy.sh | 237 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 454 insertions(+) create mode 100644 AUTO_DEPLOY_README.md create mode 100644 auto-deploy.sh diff --git a/AUTO_DEPLOY_README.md b/AUTO_DEPLOY_README.md new file mode 100644 index 0000000..4f211ff --- /dev/null +++ b/AUTO_DEPLOY_README.md @@ -0,0 +1,217 @@ +# ⚡ 一键部署指南 + +## 🎯 目标 +自动部署到:**https://solarark.net/g2026/g4/** + +--- + +## 📋 前提条件 + +你需要有服务器的 **SSH 访问权限**和 **sudo 权限**。 + +--- + +## 🚀 三步完成部署 + +### 第1步:上传部署脚本到服务器 + +在你的电脑上打开终端(Windows 可用 PowerShell 或 Git Bash): + +```bash +# 上传脚本到服务器 +scp auto-deploy.sh username@solarark.net:/tmp/ + +# 输入服务器密码 +``` + +或者,如果你已经在服务器上,可以跳过此步。 + +--- + +### 第2步:SSH 登录服务器并运行脚本 + +```bash +# SSH 登录 +ssh username@solarark.net + +# 赋予执行权限 +chmod +x /tmp/auto-deploy.sh + +# 运行部署脚本(需要 sudo) +sudo bash /tmp/auto-deploy.sh +``` + +**脚本会自动完成:** +- ✅ 检查并安装依赖(Git、Apache/Nginx) +- ✅ 备份现有部署(如果有) +- ✅ 克隆最新代码 +- ✅ 验证文件完整性 +- ✅ 设置正确的文件权限 +- ✅ 配置 Web 服务器 +- ✅ 重启服务 +- ✅ 测试访问 + +**预计时间**: 5-10分钟 + +--- + +### 第3步:验证部署 + +脚本运行完成后,在浏览器中访问: +``` +https://solarark.net/g2026/g4/ +``` + +按 F12 检查: +- ✅ Console 无红色错误 +- ✅ Network 所有资源状态码 200 +- ✅ 页面正常显示 + +--- + +## 🔍 如果遇到问题 + +### 问题1:提示 "Permission denied" + +**解决**:确保使用 `sudo` 运行脚本 +```bash +sudo bash /tmp/auto-deploy.sh +``` + +### 问题2:Git 克隆失败(认证错误) + +**解决**:脚本会提示输入 Gitea 用户名和密码 +``` +Username: yangyuqing +Password: [你的Gitea密码] +``` + +### 问题3:Web 服务器启动失败 + +**查看日志**: +```bash +# Apache +sudo tail -f /var/log/apache2/error.log + +# Nginx +sudo tail -f /var/log/nginx/error.log +``` + +### 问题4:页面显示但样式不对 + +**检查 .htaccess**: +```bash +ls -la /var/www/html/g2026/g4/.htaccess +cat /var/www/html/g2026/g4/.htaccess +``` + +确保 Apache 启用了 mod_rewrite: +```bash +sudo a2enmod rewrite +sudo systemctl restart apache2 +``` + +--- + +## 🔄 后续更新(超简单) + +以后修改代码后,只需在服务器上运行: + +```bash +ssh username@solarark.net +cd /var/www/html/g2026/g4 +git pull origin master +sudo systemctl restart apache2 +``` + +或者重新运行部署脚本: +```bash +sudo bash /tmp/auto-deploy.sh +``` + +--- + +## 📊 部署详情 + +### 脚本功能清单 + +| 步骤 | 操作 | 说明 | +|------|------|------| +| 1/7 | 检查依赖 | 自动安装 Git 和 Web 服务器 | +| 2/7 | 创建备份 | 如果目录已存在,自动备份 | +| 3/7 | 创建目录 | 确保部署目录存在 | +| 4/7 | 获取代码 | Git clone 或 pull | +| 5/7 | 验证文件 | 检查关键文件是否存在 | +| 6/7 | 设置权限 | 正确的所有者和权限 | +| 7/7 | 配置服务 | Apache/Nginx 配置和重启 | + +### 支持的系统 + +- ✅ Ubuntu / Debian +- ✅ CentOS / RHEL +- ✅ Apache2 +- ✅ Nginx + +### 部署位置 + +- **目录**: `/var/www/html/g2026/g4/` +- **URL**: `https://solarark.net/g2026/g4/` +- **备份**: `/var/www/html/g2026/g4_backup_时间戳/` + +--- + +## 💡 小贴士 + +1. **首次部署**: 脚本会自动安装所需软件 +2. **更新部署**: 脚本会检测并更新现有代码 +3. **安全备份**: 每次部署前自动备份旧版本 +4. **智能检测**: 自动识别 Apache 或 Nginx +5. **完整验证**: 部署后自动测试访问 + +--- + +## 🎊 成功标志 + +看到以下输出表示部署成功: + +``` +======================================== + ✅ 部署成功! +======================================== + +访问地址: https://solarark.net/g2026/g4/ +部署目录: /var/www/html/g2026/g4/ +Web 服务器: apache2 + +✓ 本地访问测试通过 + +祝毕业设计展示圆满成功!🎓✨ +``` + +--- + +## 📞 需要帮助? + +如果脚本执行出错,请提供: + +1. **错误信息截图** +2. **服务器系统版本**: + ```bash + cat /etc/os-release + ``` +3. **Web 服务器类型**: + ```bash + sudo systemctl status apache2 + # 或 + sudo systemctl status nginx + ``` +4. **日志内容**: + ```bash + sudo tail -n 50 /var/log/apache2/error.log + ``` + +--- + +**祝你一次部署成功!** 🚀✨ + +*详细文档请查看 DEPLOY_GUIDE.md* diff --git a/auto-deploy.sh b/auto-deploy.sh new file mode 100644 index 0000000..3a6f0d1 --- /dev/null +++ b/auto-deploy.sh @@ -0,0 +1,237 @@ +#!/bin/bash +# ============================================ +# 一键部署脚本 - 毕业设计网站 +# 目标: https://solarark.net/g2026/g4/ +# 使用: sudo bash auto-deploy.sh +# ============================================ + +set -e # 遇到错误立即退出 + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 配置变量 +REPO_URL="https://gitea.solarark.net/yangyuqing/new-site.git" +BRANCH="master" +DEPLOY_DIR="/var/www/html/g2026/g4" +BACKUP_DIR="/var/www/html/g2026/g4_backup_$(date +%Y%m%d_%H%M%S)" + +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE} 毕业设计网站一键部署脚本${NC}" +echo -e "${BLUE} 目标: https://solarark.net/g2026/g4/${NC}" +echo -e "${BLUE}========================================${NC}" +echo "" + +# 检查是否以 root 权限运行 +if [ "$EUID" -ne 0 ]; then + echo -e "${RED}✗ 请使用 sudo 运行此脚本${NC}" + echo "用法: sudo bash auto-deploy.sh" + exit 1 +fi + +# 第1步:检查依赖 +echo -e "${YELLOW}[1/7] 检查系统依赖...${NC}" + +# 检查 Git +if ! command -v git &> /dev/null; then + echo -e "${RED}✗ Git 未安装,正在安装...${NC}" + apt-get update && apt-get install -y git +else + echo -e "${GREEN}✓ Git 已安装${NC}" +fi + +# 检查 Web 服务器 +if command -v apache2 &> /dev/null || systemctl is-active --quiet apache2; then + WEB_SERVER="apache2" + echo -e "${GREEN}✓ 检测到 Apache2${NC}" +elif command -v nginx &> /dev/null || systemctl is-active --quiet nginx; then + WEB_SERVER="nginx" + echo -e "${GREEN}✓ 检测到 Nginx${NC}" +else + echo -e "${YELLOW}! 未检测到 Web 服务器,将安装 Apache2${NC}" + apt-get update && apt-get install -y apache2 + WEB_SERVER="apache2" +fi + +# 第2步:创建备份(如果目录已存在) +echo -e "${YELLOW}[2/7] 检查现有部署...${NC}" +if [ -d "$DEPLOY_DIR" ] && [ "$(ls -A $DEPLOY_DIR)" ]; then + echo -e "${YELLOW}! 发现现有部署,创建备份...${NC}" + mkdir -p $(dirname $BACKUP_DIR) + cp -r $DEPLOY_DIR $BACKUP_DIR + echo -e "${GREEN}✓ 备份已创建: $BACKUP_DIR${NC}" +else + echo -e "${GREEN}✓ 全新部署,无需备份${NC}" +fi + +# 第3步:创建部署目录 +echo -e "${YELLOW}[3/7] 创建部署目录...${NC}" +mkdir -p $DEPLOY_DIR +echo -e "${GREEN}✓ 目录已创建: $DEPLOY_DIR${NC}" + +# 第4步:克隆或更新仓库 +echo -e "${YELLOW}[4/7] 获取最新代码...${NC}" +cd $DEPLOY_DIR + +if [ -d ".git" ]; then + echo -e "${BLUE} → 更新现有仓库...${NC}" + git fetch origin + git reset --hard origin/$BRANCH +else + echo -e "${BLUE} → 克隆新仓库...${NC}" + # 清空目录 + rm -rf $DEPLOY_DIR/* + git clone $REPO_URL . + git checkout $BRANCH +fi + +echo -e "${GREEN}✓ 代码已获取${NC}" + +# 第5步:验证文件 +echo -e "${YELLOW}[5/7] 验证部署文件...${NC}" + +if [ ! -f "index.html" ]; then + echo -e "${RED}✗ 错误: index.html 不存在!${NC}" + echo -e "${RED} 部署失败,请检查仓库地址和分支${NC}" + exit 1 +fi + +if [ ! -f "css/style.css" ]; then + echo -e "${RED}✗ 错误: css/style.css 不存在!${NC}" + exit 1 +fi + +if [ ! -f "js/main.js" ]; then + echo -e "${RED}✗ 错误: js/main.js 不存在!${NC}" + exit 1 +fi + +echo -e "${GREEN}✓ 所有关键文件验证通过${NC}" + +# 第6步:设置权限 +echo -e "${YELLOW}[6/7] 设置文件权限...${NC}" + +# 确定 Web 服务器用户 +if [ "$WEB_SERVER" = "apache2" ]; then + WEB_USER="www-data" +elif [ "$WEB_SERVER" = "nginx" ]; then + WEB_USER="nginx" +else + WEB_USER="www-data" +fi + +chown -R $WEB_USER:$WEB_USER $DEPLOY_DIR +chmod -R 755 $DEPLOY_DIR +chmod 644 $DEPLOY_DIR/.htaccess 2>/dev/null || true + +echo -e "${GREEN}✓ 权限设置完成${NC}" + +# 第7步:配置 Web 服务器 +echo -e "${YELLOW}[7/7] 配置 Web 服务器...${NC}" + +if [ "$WEB_SERVER" = "apache2" ]; then + # 确保 mod_rewrite 启用 + a2enmod rewrite 2>/dev/null || true + + # 检查 .htaccess 支持 + APACHE_CONF="/etc/apache2/apache2.conf" + if grep -q "AllowOverride None" $APACHE_CONF; then + echo -e "${YELLOW} → 更新 Apache 配置以支持 .htaccess...${NC}" + sed -i 's/AllowOverride None/AllowOverride All/g' $APACHE_CONF + fi + + # 重启 Apache + systemctl restart apache2 + echo -e "${GREEN}✓ Apache2 已重启${NC}" + +elif [ "$WEB_SERVER" = "nginx" ]; then + # 创建 Nginx 配置文件 + NGINX_CONF="/etc/nginx/sites-available/g2026-g4" + + cat > $NGINX_CONF << 'EOF' +server { + listen 80; + server_name solarark.net; + + root /var/www/html/g2026/g4; + index index.html; + + location /g2026/g4/ { + try_files $uri $uri/ /g2026/g4/index.html; + + # Gzip 压缩 + gzip on; + gzip_types text/css application/javascript text/javascript; + + # 缓存静态资源 + location ~* \.(jpg|jpeg|png|gif|webp|svg)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + location ~* \.(css|js)$ { + expires 1M; + add_header Cache-Control "public"; + } + } +} +EOF + + # 启用站点 + ln -sf $NGINX_CONF /etc/nginx/sites-enabled/ + + # 测试配置 + nginx -t + + # 重启 Nginx + systemctl restart nginx + echo -e "${GREEN}✓ Nginx 已重启${NC}" +fi + +# 部署完成 +echo "" +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN} ✅ 部署成功!${NC}" +echo -e "${GREEN}========================================${NC}" +echo "" +echo -e "${BLUE}访问地址:${NC} https://solarark.net/g2026/g4/" +echo -e "${BLUE}部署目录:${NC} $DEPLOY_DIR" +echo -e "${BLUE}Web 服务器:${NC} $WEB_SERVER" +echo "" + +# 如果有备份,提示 +if [ -d "$BACKUP_DIR" ]; then + echo -e "${YELLOW}ℹ 备份位置: $BACKUP_DIR${NC}" + echo -e "${YELLOW} 如需回滚: sudo cp -r $BACKUP_DIR/* $DEPLOY_DIR/${NC}" + echo "" +fi + +# 测试访问 +echo -e "${YELLOW}正在测试访问...${NC}" +sleep 2 + +if curl -s -o /dev/null -w "%{http_code}" "http://localhost/g2026/g4/" | grep -q "200\|301\|302"; then + echo -e "${GREEN}✓ 本地访问测试通过${NC}" +else + echo -e "${YELLOW}! 本地访问测试未通过,请检查 Web 服务器配置${NC}" +fi + +echo "" +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN} 下一步操作:${NC}" +echo -e "${GREEN}========================================${NC}" +echo "1. 在浏览器中访问: https://solarark.net/g2026/g4/" +echo "2. 按 F12 检查控制台是否有错误" +echo "3. 测试移动端响应式效果" +echo "4. 如有问题,查看日志:" +if [ "$WEB_SERVER" = "apache2" ]; then + echo " sudo tail -f /var/log/apache2/error.log" +else + echo " sudo tail -f /var/log/nginx/error.log" +fi +echo "" +echo -e "${GREEN}祝毕业设计展示圆满成功!🎓✨${NC}"