独立部署
执行 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
干得漂亮!⭐️