跳转到内容

生产环境部署

本指南涵盖生产环境部署注意事项,包括 Nginx 反向代理、TLS、systemd 服务和监控。

典型的生产环境部署包含:

互联网 → Nginx (TLS) → EasyShell Web (:18880)
→ EasyShell Server (:18080)
MySQL 8.0 ← EasyShell Server
Redis 7 ← EasyShell Server

配置 Nginx 提供 Web 前端静态文件并代理 API 请求到 Server:

server {
listen 443 ssl http2;
server_name easyshell.example.com;
ssl_certificate /etc/letsencrypt/live/easyshell.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/easyshell.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:18880;
proxy_set_header Host $host;
}
location /api/ {
proxy_pass http://127.0.0.1:18080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws/ {
proxy_pass http://127.0.0.1:18080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}

如果你使用 Docker Compose 运行 EasyShell(推荐),创建一个 systemd 单元来管理 Compose 栈:

[Unit]
Description=EasyShell (Docker Compose)
After=docker.service
Requires=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/easyshell
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target

启用并启动:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable easyshell
sudo systemctl start easyshell

使用 cron 设置每日自动备份:

Terminal window
0 2 * * * mysqldump -u easyshell -p'密码' easyshell | gzip > /backup/easyshell-$(date +\%Y\%m\%d).sql.gz

至少保留 7 天的备份,并定期测试恢复。

  • 使用非 root 用户运行 Server
  • 启用 MySQL SSL 连接
  • 在生产环境中设置 Redis requirepass
  • 配置防火墙规则限制数据库和 Redis 端口的访问
  • 启用审计日志用于合规
  • 轮转应用日志防止磁盘耗尽

监控以下端点:

端点用途
/actuator/health应用健康检查
/actuator/metricsPrometheus 兼容指标
/actuator/info应用版本信息

配置监控系统(Prometheus、Grafana 等)抓取指标端点,并在服务降级时发出告警。