nestjs 打包部署 服务自启动
时间: 2023-09-02 16:15:48 浏览: 40
要将 NestJS 应用程序打包并部署到生产环境中,可以使用以下步骤:
1. 首先,使用 `npm run build` 命令构建应用程序的生产版本。这将生成一个名为 `dist` 的目录,其中包含应用程序的编译后的 JavaScript 文件。
2. 接下来,将 `dist` 目录复制到部署服务器上。
3. 使用 PM2 或者 systemd 等工具将应用程序设置为自启动。这些工具可以在服务器重启时自动启动应用程序,并且可以监控应用程序的运行状态,以便在应用程序崩溃时重新启动它。
使用 PM2 启动应用程序的方法如下:
- 使用 `npm install pm2 -g` 命令全局安装 PM2。
- 在应用程序根目录下创建一个名为 `ecosystem.config.js` 的文件,内容如下:
```
module.exports = {
apps : [{
name: 'my-app',
script: 'dist/main.js',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G'
}]
};
```
其中,`name` 是应用程序的名称,`script` 是启动应用程序的脚本路径,`instances` 指定要启动的进程数,`autorestart` 表示进程崩溃后是否自动重启,`watch` 表示是否监视应用程序文件的变化,`max_memory_restart` 表示进程在使用多少内存后需要重启。
- 使用 `pm2 start ecosystem.config.js` 命令启动应用程序。可以使用 `pm2 list` 命令查看已启动的应用程序列表,使用 `pm2 logs <app-name>` 命令查看应用程序的日志输出。
使用 systemd 启动应用程序的方法如下:
- 在 `/etc/systemd/system` 目录下创建一个名为 `my-app.service` 的文件,内容如下:
```
[Unit]
Description=my-app
[Service]
ExecStart=/usr/bin/node /path/to/my-app/dist/main.js
Restart=on-failure
WorkingDirectory=/path/to/my-app/
User=node
Group=node
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
```
其中,`ExecStart` 指定启动应用程序的命令,`Restart` 表示进程崩溃后是否自动重启,`WorkingDirectory` 指定应用程序运行时的工作目录,`User` 和 `Group` 指定应用程序运行时的用户和组,`Environment` 指定应用程序运行时的环境变量。
- 使用 `systemctl start my-app` 命令启动应用程序。可以使用 `systemctl status my-app` 命令查看应用程序的状态,使用 `journalctl -u my-app` 命令查看应用程序的日志输出。
以上是将 NestJS 应用程序部署到生产环境并设置自启动的基本步骤,你可以根据实际情况进行调整。