2025-03-26 01:09:15 +08:00
|
|
|
|
[TOC]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-25 16:41:57 +00:00
|
|
|
|
# navigation-app
|
|
|
|
|
|
2025-03-26 01:09:15 +08:00
|
|
|
|
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. 易于维护和更新
|