» Node.js:使用Express构建REST API » 3. 部署 » 3.1 独立部署

独立部署

执行 npm run build 以构建待发布目录:

npm run build

这等同于tsc && tsc-alias。它将在项目目录中创建一个名为 dist 的目录。

确保你目录中有 config.json 文件(与 dist 平级),且所有数据库都是启动就绪的状态。

然后,你可以按独立服务器的方式运行它:

node dist/main.js

curl 发送一些请求过去,你将看到类似如下服务器日志:

::ffff:127.0.0.1 - - [02/Mar/2024:11:46:46 +0000] "GET /books/4/reviews?q=masterpiece HTTP/1.1" 200 1050 "-" "curl/8.1.2" - 14.394 ms
::ffff:127.0.0.1 - - [02/Mar/2024:11:46:47 +0000] "GET /books/4/reviews?q=masterpiece HTTP/1.1" 200 1050 "-" "curl/8.1.2" - 3.241 ms
::ffff:127.0.0.1 - - [02/Mar/2024:11:47:12 +0000] "GET /books HTTP/1.1" 200 1438 "-" "curl/8.1.2" - 9.047 ms

为了是它工作得更稳健,可以考虑使用 PM2

使用 PM2 进程管理器

PM2(进程管理器2)是用于 Node.js 程序的生产环境进程管理器,它帮助保持 Node.js 程序永远运行,无需停机的情况下重新加载配置,并简化常见的系统管理任务。在你需要确保 Node.js 程序始终平稳运行的生产环境中,它非常有用。

安装 pm2:

npm install pm2 -g

使用 pm2 启动你的 Node.js 服务器:

pm2 start dist/main.js --name "books-api"

检查 pm2 进程状态:

pm2 list

结果:

┌────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name         │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0  │ books-api    │ default     │ 1.0.0   │ fork    │ 14849    │ 69s    │ 0    │ online    │ 0%       │ 61.7mb   │ literan  │ disabled │
└────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

监测服务日志:

pm2 logs books-api

结果:

[TAILING] Tailing last 15 lines for [books-api] process (change the value with --lines option)
/Users/literank/.pm2/logs/books-api-error.log last 15 lines:
/Users/literank/.pm2/logs/books-api-out.log last 15 lines:
0|books-ap | Connected to Redis
0|books-ap | Running on port 3000
0|books-ap | Connected to mongodb.
0|books-ap | Successfully initialized tables.
0|books-ap | ::ffff:127.0.0.1 - - [02/Mar/2024:11:52:07 +0000] "GET /books HTTP/1.1" 200 1438 "-" "curl/8.1.2" - 3.367 ms
0|books-ap | ::ffff:127.0.0.1 - - [02/Mar/2024:11:52:09 +0000] "GET /books HTTP/1.1" 200 1438 "-" "curl/8.1.2" - 1.271 ms
0|books-ap | ::ffff:127.0.0.1 - - [02/Mar/2024:11:52:09 +0000] "GET /books HTTP/1.1" 200 1438 "-" "curl/8.1.2" - 1.140 ms
0|books-ap | ::ffff:127.0.0.1 - - [02/Mar/2024:11:52:10 +0000] "GET /books HTTP/1.1" 200 1438 "-" "curl/8.1.2" - 1.205 ms

干得漂亮!⭐️

上页下页