添加一键部署脚本和自动部署指南
This commit is contained in:
217
AUTO_DEPLOY_README.md
Normal file
217
AUTO_DEPLOY_README.md
Normal file
@@ -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*
|
||||||
237
auto-deploy.sh
Normal file
237
auto-deploy.sh
Normal file
@@ -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}"
|
||||||
Reference in New Issue
Block a user