Linux 部署
在 Linux 服务器上部署逸云 GIS。
部署架构选择
| 架构 | 命令 | 适用场景 |
|---|---|---|
| 直接访问 | http://IP:3000 | 内网小规模使用 |
| Nginx 代理 | https://域名 | 公网部署、多用户并发 |
公网部署建议使用 Nginx 代理模式,详见 Nginx 配置。
前置要求
- Ubuntu 20.04+ / CentOS 8+ / Debian 11+
- 4GB+ 可用内存
- 20GB+ 可用磁盘空间
- 无需安装 Node.js(程序已内置)
部署步骤
1. 上传发布包
将发布包上传到服务器:
bash
# 使用 scp 上传
scp gisnode.zip user@your-server:/opt/
# 或使用 rsync
rsync -avz gisnode/ user@your-server:/opt/gisnode/
2. 解压发布包
bash
cd /opt
unzip gisnode.zip -d gisnode
cd gisnode
3. 设置执行权限
bash
chmod +x node.exe
chmod -R 755 data/
注意: 尽管 Linux 版本的可执行文件名可能是
node.exe(pkg 打包产物),它在 Linux 上仍可正常运行。如果发布包提供了node文件名,请使用对应名称。
4. 配置环境
直接访问模式(内网使用):
bash
nano .env
bash
PORT=3000
NODE_ENV=production
Nginx 代理模式(公网部署):
bash
PORT=3000
NODE_ENV=production
TRUST_PROXY=true
CORS_ORIGIN=https://eatool.cn
5. 启动服务
bash
# 前台运行(测试用)
./node.exe
# 后台运行
nohup ./node.exe > logs/app.log 2>&1 &
启动成功后访问: http://your-server:3000
使用 PM2 管理进程
推荐使用 PM2 管理应用进程,实现自动重启和日志管理。
安装 PM2
bash
npm install -g pm2
安装 PM2 需要先安装 Node.js。如果服务器没有 Node.js,可以使用其他方式管理进程。
启动应用
bash
cd /opt/gisnode
# 使用 PM2 启动
pm2 start ./node.exe --name gisnode --max-memory-restart 4G
# 设置开机自启
pm2 startup
pm2 save
PM2 常用命令
bash
# 查看状态
pm2 status
# 查看日志
pm2 logs gisnode
# 重启应用
pm2 restart gisnode
# 停止应用
pm2 stop gisnode
# 监控
pm2 monit
使用 systemd 管理服务
如果服务器没有 Node.js,可以使用 systemd 直接管理可执行程序。
创建服务文件
bash
sudo nano /etc/systemd/system/gisnode.service
写入以下内容:
ini
[Unit]
Description=逸云 GIS 服务器
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/opt/gisnode
ExecStart=/opt/gisnode/node.exe
Restart=on-failure
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启用服务
bash
# 重新加载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start gisnode
# 查看状态
sudo systemctl status gisnode
# 设置开机自启
sudo systemctl enable gisnode
管理服务
bash
# 重启
sudo systemctl restart gisnode
# 停止
sudo systemctl stop gisnode
# 查看日志
sudo journalctl -u gisnode -f
防火墙配置
直接访问模式:
bash
# Ubuntu/Debian
sudo ufw allow 3000
sudo ufw allow 443
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Nginx 代理模式:
bash
# 仅开放 80/443,3000 端口不需要对外
sudo ufw allow 80
sudo ufw allow 443
# 不要开放 3000 端口
常见问题
端口被占用
bash
# 查看端口占用
lsof -i :3000
# 或
netstat -tlnp | grep 3000
# 修改端口
# 编辑 .env 文件中的 PORT 变量
权限问题
bash
# 确保 data 目录可写
chmod -R 755 /opt/gisnode/data/
# 确保可执行权限
chmod +x /opt/gisnode/node.exe
GDAL 功能不可用
确认 native/gdal.node 和 gdal-runtime/ 目录存在。如缺失,COG 元数据提取和坐标转换功能将不可用,但不影响其他功能。