diff --git a/README.md b/README.md index 09d3da5..226481d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,280 @@ +[TOC] + + + # navigation-app +from deepseek + +## 详细部署流程 + +### 1. 开发环境准备 + +1. **安装Go语言环境** (仅开发机需要): + + bash + + 复制 + + ``` + # Linux + sudo apt update && sudo apt install -y golang + + # Mac + brew install go + + # Windows + # 从 https://golang.org/dl/ 下载安装包 + ``` + +2. **初始化Go模块**: + + bash + + 复制 + + ``` + cd backend + go mod init navigation/backend + go mod tidy + ``` + +### 2. 编译应用程序 + +1. **编译Linux可执行文件**: + + bash + + 复制 + + ``` + make build + ``` + + 这会在`bin/`目录下生成`navigation-server`二进制文件 + +### 3. VPS部署步骤 + +1. **上传文件到VPS**: + + bash + + 复制 + + ``` + scp -r bin/ navigation-server config/ frontend/ data/ user@your_vps_ip:/opt/navigation-app + ``` + +2. **SSH登录VPS**: + + bash + + 复制 + + ``` + ssh user@your_vps_ip + ``` + +3. **设置文件权限**: + + bash + + 复制 + + ``` + cd /opt/navigation-app + chmod +x bin/navigation-server + mkdir -p data + chmod 700 data + ``` + +4. **运行应用程序** (测试运行): + + bash + + 复制 + + ``` + cd /opt/navigation-app + ./bin/navigation-server + ``` + +5. **配置持久化运行** (使用systemd): + + 创建服务文件`/etc/systemd/system/navigation.service`: + + ini + + 复制 + + ``` + [Unit] + Description=Navigation Server + After=network.target + + [Service] + Type=simple + User=www-data + WorkingDirectory=/opt/navigation-app + ExecStart=/opt/navigation-app/bin/navigation-server + Restart=always + RestartSec=10 + + [Install] + WantedBy=multi-user.target + ``` + + 启用并启动服务: + + bash + + 复制 + + ``` + sudo systemctl daemon-reload + sudo systemctl enable navigation + sudo systemctl start navigation + ``` + +6. **验证服务运行**: + + bash + + 复制 + + ``` + sudo systemctl status navigation + curl http://localhost:8080/api/sites + ``` + +### 4. 配置反向代理 (可选,推荐) + +使用Nginx作为反向代理: + +1. **安装Nginx**: + + bash + + 复制 + + ``` + sudo apt update && sudo apt install -y nginx + ``` + +2. **创建配置文件** `/etc/nginx/sites-available/navigation`: + + nginx + + 复制 + + ``` + server { + listen 80; + server_name yourdomain.com; + + location / { + proxy_pass http://127.0.0.1:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + ``` + +3. **启用配置**: + + bash + + 复制 + + ``` + sudo ln -s /etc/nginx/sites-available/navigation /etc/nginx/sites-enabled/ + sudo nginx -t + sudo systemctl reload nginx + ``` + +4. **配置HTTPS (使用Let's Encrypt)**: + + bash + + 复制 + + ``` + sudo apt install -y certbot python3-certbot-nginx + sudo certbot --nginx -d yourdomain.com + ``` + +## 维护与管理 + +### 常用命令 + +- **查看日志**: + + bash + + 复制 + + ``` + journalctl -u navigation -f + ``` + +- **重启服务**: + + bash + + 复制 + + ``` + sudo systemctl restart navigation + ``` + +- **备份数据库**: + + bash + + 复制 + + ``` + cp /opt/navigation-app/data/navigation.db /path/to/backup/navigation_$(date +%F).db + ``` + +### 更新流程 + +1. 本地修改代码后重新编译: + + bash + + 复制 + + ``` + make build + ``` + +2. 上传新版本到VPS: + + bash + + 复制 + + ``` + scp bin/navigation-server user@your_vps_ip:/opt/navigation-app/bin/ + ``` + +3. 重启服务: + + bash + + 复制 + + ``` + ssh user@your_vps_ip + sudo systemctl restart navigation + ``` + +这个方案提供了完整的、生产就绪的Go后端实现,具有以下优点: + +1. 单个静态二进制文件,部署简单 +2. 使用SQLite数据库,无需额外服务 +3. 完整的CRUD API实现 +4. 包含生产环境部署配置 +5. 易于维护和更新