Skip to content
On this page

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.nodegdal-runtime/ 目录存在。如缺失,COG 元数据提取和坐标转换功能将不可用,但不影响其他功能。

基于 MIT 许可发布