update readme
This commit is contained in:
278
README.md
278
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. 易于维护和更新
|
||||
|
Reference in New Issue
Block a user