edit | blame | history | raw

销售 CRM 阿里云 Linux 部署执行文档

适用日期:2026-07-15
适用系统:Alibaba Cloud Linux、Anolis OS、CentOS、Ubuntu 等 Linux 服务器
当前项目目录:D:\SalesCRM

目标:实施人员拿到这份文档后,可以把当前本地 CRM 项目部署到阿里云 Linux ECS,并能通过公网访问。

0. 当前项目说明

当前 CRM 是一个 Node.js 服务:

  • 前端页面:outputs/sales_crm_full_demo.html
  • 后端服务:work/crm_full_server.js
  • 数据文件:data/crm_full_data.json
  • 默认端口:8090
  • 云端启动命令:npm startnode work/crm_full_server.js

当前版本仍使用 JSON 文件保存数据。可以先用于内部测试上线;正式长期使用前,建议迁移到 MySQL。

1. 上线前必须确认

1.1 服务器信息

实施前请准备:

ECS 公网 IP:
服务器账号:root 或有 sudo 权限的账号
登录方式:密码 / SSH 密钥
操作系统:Alibaba Cloud Linux / Anolis OS / CentOS / Ubuntu

1.2 阿里云安全组

在阿里云 ECS 控制台安全组放行:

22    SSH 远程登录
80    HTTP 访问
443   HTTPS 访问,后续绑定证书后使用
8090  测试期可临时放行,正式建议只通过 80/443 访问

正式使用建议:

  • 外网只开放 80/443
  • 8090 只在服务器本机监听或安全组不放行
  • 用 Nginx 把 80 转发到 8090

2. 本地打包项目

在 Windows 本地确认最新目录:

D:\SalesCRM

上线前先备份数据:

cd /d D:\SalesCRM
powershell -ExecutionPolicy Bypass -File deploy\backup_data.ps1

然后把整个目录压缩成:

SalesCRM.zip

压缩包必须包含:

package.json
work\crm_full_server.js
outputs\sales_crm_full_demo.html
data\crm_full_data.json
deploy\
docs\

3. 上传到服务器

推荐部署目录:

/opt/sales-crm

可以用以下任意方式上传:

  • Xftp
  • WinSCP
  • 阿里云 Workbench 文件上传
  • scp 命令

示例 scp:

scp SalesCRM.zip root@服务器公网IP:/opt/

登录服务器:

ssh root@服务器公网IP

解压:

cd /opt
mkdir -p /opt/sales-crm
unzip SalesCRM.zip -d /opt/sales-crm

如果压缩包里多包了一层 SalesCRM 目录,请调整:

mv /opt/sales-crm/SalesCRM/* /opt/sales-crm/

确认文件:

ls -la /opt/sales-crm
ls -la /opt/sales-crm/work
ls -la /opt/sales-crm/data

4. 安装 Node.js

进入项目目录:

cd /opt/sales-crm

先检查是否已有 Node:

node -v
npm -v

如果没有 Node,执行项目自带安装脚本:

bash deploy/install_node_alicloud_linux.sh

要求:

Node.js >= 18

如果系统仓库安装的 Node 版本太低,需要改用 NodeSource 或 nvm 安装 Node 18+。

5. 启动测试

在服务器上执行:

cd /opt/sales-crm
npm start

看到类似输出:

Full CRM demo is running at http://127.0.0.1:8090/

另开一个 SSH 窗口测试:

curl http://127.0.0.1:8090/

如果返回 HTML 内容,说明服务本机正常。

如果安全组临时开放了 8090,浏览器访问:

http://服务器公网IP:8090/

6. 配置 systemd 守护进程

为了让服务断开 SSH 后仍然运行,并且服务器重启后自动启动,使用 systemd。

复制服务文件:

cp /opt/sales-crm/deploy/sales-crm.service /etc/systemd/system/sales-crm.service

重新加载 systemd:

systemctl daemon-reload

启动:

systemctl start sales-crm

设置开机自启:

systemctl enable sales-crm

查看状态:

systemctl status sales-crm

查看日志:

journalctl -u sales-crm -f

常用命令:

systemctl restart sales-crm
systemctl stop sales-crm
systemctl status sales-crm

7. 配置 Nginx

正式建议用 Nginx 对外提供 80 端口访问,再转发到本地 8090。

安装 Nginx:

Alibaba Cloud Linux / CentOS / Anolis:

yum install -y nginx

如果系统使用 dnf:

dnf install -y nginx

Ubuntu:

apt update
apt install -y nginx

复制配置:

cp /opt/sales-crm/deploy/nginx_sales_crm.conf /etc/nginx/conf.d/sales-crm.conf

测试配置:

nginx -t

启动 Nginx:

systemctl start nginx
systemctl enable nginx
systemctl reload nginx

浏览器访问:

http://服务器公网IP/

如果能打开登录页,Nginx 转发成功。

8. 防火墙检查

不同 Linux 系统可能启用 firewalld。

查看状态:

systemctl status firewalld

如果启用,需要放行 HTTP:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

测试期如需放行 8090:

firewall-cmd --permanent --add-port=8090/tcp
firewall-cmd --reload

注意:阿里云安全组和服务器系统防火墙都要允许,公网才能访问。

9. 数据备份

当前最重要的数据文件:

/opt/sales-crm/data/crm_full_data.json

手动备份:

cd /opt/sales-crm
bash deploy/backup_data_linux.sh

备份会生成到:

/opt/sales-crm/backups/

建议每天备份一次。可以添加定时任务:

crontab -e

加入:

0 2 * * * cd /opt/sales-crm && bash deploy/backup_data_linux.sh >> /opt/sales-crm/backups/backup.log 2>&1

表示每天凌晨 2 点备份。

10. 更新部署流程

以后本地改完代码,再更新服务器:

  1. 本地备份 D:\SalesCRM\data\crm_full_data.json
  2. 上传新文件到服务器
  3. 服务器先备份:
cd /opt/sales-crm
bash deploy/backup_data_linux.sh
  1. 覆盖程序文件
  2. 重启服务:
systemctl restart sales-crm
  1. 验证:
systemctl status sales-crm
curl http://127.0.0.1:8090/

11. 验收清单

部署完成后逐项验收:

  • 能打开登录页
  • admin / 123456 能登录
  • 客户列表能打开
  • 新增客户能保存
  • 销售订单能保存
  • 销售订单能生成生产任务
  • 销售订单能生成物流记录
  • 销售订单能生成财务应收
  • 账号权限页面能打开
  • 手机浏览器能访问
  • 电脑浏览器能访问
  • 重启服务器后服务能自动启动
  • 备份脚本能生成备份文件

12. 上线后必须马上做

上线测试通过后,马上处理:

  • 修改 admin 默认密码
  • 给每个员工单独账号
  • 关闭或限制 8090 公网访问,只保留 80/443
  • 如果绑定域名,配置 HTTPS
  • 每天备份数据
  • 保留服务器登录账号和密码/密钥

13. 常见问题

页面打不开

检查:

systemctl status sales-crm
curl http://127.0.0.1:8090/
systemctl status nginx
nginx -t

再检查阿里云安全组是否开放 80 或 8090。

登录后保存失败

检查数据文件是否有写入权限:

ls -l /opt/sales-crm/data

如果服务用 root 运行,一般不会有权限问题。后续如果改成普通用户,需要给该用户 data 目录写权限。

服务器重启后服务没了

执行:

systemctl enable sales-crm
systemctl status sales-crm

端口被占用

查看:

ss -lntp | grep 8090

停止旧服务或修改端口。

14. 正式上线前的风险提醒

当前版本适合内部测试和早期试用。正式长期生产建议继续升级:

  • JSON 文件存储迁移到 MySQL
  • 密码改成加密存储
  • 增加 HTTPS
  • 增加附件 OSS
  • 增加操作日志
  • 增加数据导入校验
  • 增加权限到按钮级