-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·88 lines (77 loc) · 2.86 KB
/
deploy.sh
File metadata and controls
executable file
·88 lines (77 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
# deploy.sh — 将 NameTool 部署到 Azure VM
# 用法: ./deploy.sh
set -e
# ─── 配置 ───
REMOTE_USER="lvxiaoxin96"
REMOTE_HOST="20.2.216.149"
REMOTE_DIR="/var/www/name-tool"
SSH_TARGET="${REMOTE_USER}@${REMOTE_HOST}"
SITE_PATH="/name-tool"
echo "🚀 部署 NameTool 到 ${SSH_TARGET}"
# ─── 1. 远程初始化:安装 nginx(如未安装)& 创建目录 ───
echo "── 检查远程环境 ──"
ssh "${SSH_TARGET}" bash -s <<'SETUP'
set -e
# 检查并安装 nginx
if ! command -v nginx &>/dev/null; then
echo " 📦 安装 Nginx..."
sudo apt-get update -qq
sudo apt-get install -y -qq nginx
sudo systemctl enable nginx
sudo systemctl start nginx
echo " ✓ Nginx 安装完成"
else
echo " ✓ Nginx 已安装"
fi
# 创建站点目录
sudo mkdir -p /var/www/name-tool/data
sudo chown -R "$USER:$USER" /var/www/name-tool
# 配置 nginx location
NGINX_CONF="/etc/nginx/sites-available/default"
if ! grep -q "location /name-tool" "$NGINX_CONF" 2>/dev/null; then
echo " 🔧 配置 Nginx /name-tool 路径..."
# 在 default server block 中添加 location
sudo cp "$NGINX_CONF" "${NGINX_CONF}.bak"
sudo sed -i '/^\s*location \/ {/i \
\tlocation /name-tool {\
\t\talias /var/www/name-tool/;\
\t\tindex index.html;\
\t\ttry_files $uri $uri/ /name-tool/index.html;\
\t}\
' "$NGINX_CONF"
sudo nginx -t
sudo systemctl reload nginx
echo " ✓ Nginx 配置完成"
else
echo " ✓ Nginx 已配置 /name-tool"
fi
# 确保 gzip 压缩已启用(对 JSON 等静态资源)
NGINX_MAIN="/etc/nginx/nginx.conf"
if grep -q '# gzip_types' "$NGINX_MAIN" 2>/dev/null; then
echo " 🔧 启用 gzip 压缩..."
sudo sed -i 's/# gzip_vary on;/gzip_vary on;/' "$NGINX_MAIN"
sudo sed -i 's/# gzip_proxied any;/gzip_proxied any;/' "$NGINX_MAIN"
sudo sed -i 's/# gzip_comp_level 6;/gzip_comp_level 6;/' "$NGINX_MAIN"
sudo sed -i 's/# gzip_buffers 16 8k;/gzip_buffers 16 8k;/' "$NGINX_MAIN"
sudo sed -i 's/# gzip_http_version 1.1;/gzip_http_version 1.1;/' "$NGINX_MAIN"
sudo sed -i 's/# gzip_types text\/plain/gzip_types text\/plain/' "$NGINX_MAIN"
sudo nginx -t && sudo systemctl reload nginx
echo " ✓ gzip 压缩已启用"
else
echo " ✓ gzip 已启用"
fi
SETUP
# ─── 2. 同步文件 ───
echo "── 同步文件 ──"
rsync -avz \
index.html \
"${SSH_TARGET}:${REMOTE_DIR}/"
rsync -avz \
data/characters.json \
"${SSH_TARGET}:${REMOTE_DIR}/data/"
# ─── 3. 完成 ───
echo ""
echo "╔══════════════════════════════════════════════════════╗"
echo "║ ✓ 部署完成! ║"
echo "╚══════════════════════════════════════════════════════╝"