我的外呼软件跑在一台服务器上。第一次部署的时候我对着终端输命令,输了半天没跑起来, 后来用了宝塔面板,全是点鼠标,十几分钟就搞定了。
这篇记一下我是怎么弄的。写的是我自己走的流程,不是标准答案, 你按自己的情况调。
为什么用宝塔
因为它把服务器上那些命令变成了按钮。
要在终端里干的事大概是这些:装 Node、配环境变量、传文件、开防火墙、装进程守护、 看日志。每一样都是一串命令,而且版本不一样命令还不一样, 出错的时候报错信息也看不太懂。
宝塔把这些都做成了图形界面,点「安装」它自己装,点「启动」它自己起。 对不太熟 Linux 的人来说省事很多。
有个前提:宝塔要装在你自己的服务器上。它要 root 权限,装在别人的机器上不合适。
第一步:把宝塔装上
登进服务器(我用的是网页版终端,你也可以用 SSH 工具),
用官方给的安装脚本跑一遍就行。装的过程会问你确认,按提示输 y。
装完它会打印一段东西,里面有三样要抄下来:
- 面板地址(一般是
你的IP:8888这种) - 用户名
- 密码
这三样丢了就得重装,所以赶紧存到备忘录里。
第二步:放行面板端口
这一步最容易卡住,因为有两层防火墙:
- 服务器自己的安全组(在服务器商家那边的控制台改)
- 服务器系统里的防火墙(宝塔里叫「安全」)
两层都要放行同一个端口,少一层就打不开面板。
我第一次就是只改了系统防火墙,浏览器一直转圈,查了半天才发现商家的控制台里 还有个安全组没开。
第三步:装 Node 环境
进面板之后找「软件商店」,搜 Node,装一个你项目需要的版本。
我的项目要求 Node 18 以上,所以装的是 18 的 LTS 版。
装完可以在面板的终端里敲 node -v 确认一下,能出数字就成了。
第四步:把代码传上去
两种方式:
- 面板的文件管理:直接拖压缩包上去,然后右键解压。简单,但每次改代码都要重传
- Git:服务器上拉一次,以后改完本地推上去,服务器上拉一下就行。适合要经常改的
我用的是第二种,因为代码在 GitHub 上,服务器拉一下就有了。
代码放哪:不要放在网站根目录,单独建一个文件夹,比如
/www/wwwroot/你的项目名/。Node 项目不是静态网站,放在网站目录里会被当网页请求。
第五步:建 Node 项目
面板里找「网站」→「Node 项目」→「添加 Node 项目」:
| 填什么 | 填成什么 |
|---|---|
| 项目目录 | 你的代码文件夹,比如 /www/wwwroot/xxx/ |
| 启动文件 | 一般是 app.js 或 src/index.js |
| 端口 | 你的程序里监听的端口,比如 3000 |
| Node 版本 | 刚装的那个 |
| 运行用户 | www |
点确定,它就开始跑。跑起来之后状态会显示「运行中」。
关键一点:这里的「端口」必须和代码里 listen(3000) 里的数字一样。
不一样的话项目显示运行中,但外面连不上。
第六步:再放行一次端口
对,又是防火墙。你程序监听的端口(比如 3000)也要在安全组和系统防火墙两层 都放行,外面才能访问。
嫌麻烦的话可以在面板里配个反向代理,把域名指到 3000 端口, 这样只开 80 和 443 两个口就够了,用户也不用记端口号。
我踩过的三个坑
一、改了代码要重启。 Node 项目不像静态网页,改完文件刷新一下就行。
Node 是把代码读进内存里跑的,改了必须重启项目。宝塔里点一下「重启」按钮就行,
不用去命令行敲 pm2 restart。
二、数据库文件的权限。 我用的是 SQLite,数据库就是一个文件。
第一版跑起来之后一直报「无法写入」,查了半天是文件权限不对——
运行用户是 www,但文件是 root 建的。在面板里改一下所有者就好了。
三、内存不够。 我的服务器是 2 核 2G。Node 本身吃不了多少, 但如果你还装了 MySQL、面板本身也占内存,2G 会紧张。 用 SQLite 就不用另起一个数据库进程,省内存。这也是我选它的原因。
最后
整套下来大概是这样:
服务器 → 装宝塔 → 装 Node → 传代码 → 建 Node 项目 → 放行端口 → 能访问了真正麻烦的不是某一步,是防火墙有两层这件事。记住这个,能省不少时间。