在服务器上部署一个 NestJS 项目,通常包括以下步骤:git clone 拉取项目代码,安装依赖,打包项目,启动服务,并确保它在后台运行。以下是详细的操作步骤,基于常见的 Linux 服务器环境(例如 Ubuntu)。
1. 安装 Node.js 和 npm(如果未安装)
确保服务器上已安装了 Node.js 和 npm。以下是安装 Node.js 的步骤(使用 NodeSource):
# 更新系统包
sudo apt update
# 安装 Node.js 和 npm(这里使用 18.x 版本)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
检查是否成功安装:
node -v
npm -v
2. 使用 git clone 获取 NestJS 项目
在服务器上,使用 git clone 克隆你的项目代码:
git clone https://github.com/yourusername/your-nestjs-repo.git
进入项目目录:
cd your-nestjs-repo
3. 安装项目依赖
NestJS 项目依赖于 Node.js 的包管理器 npm 或 yarn。你可以通过以下命令安装项目所需的依赖:
npm install
如果你使用 yarn,则使用:
yarn install
4. 设置环境变量
NestJS 项目通常使用 .env 文件存储环境变量。在服务器上创建 .env 文件并添加必要的配置。
touch .env
在 .env 文件中添加内容,例如:
DATABASE_URL=mongodb://localhost:27017/yourdb
PORT=3000
JWT_SECRET=your_secret_key
确保 .env 文件包含你项目所需的所有环境变量。
5. 构建 NestJS 项目
NestJS 项目通常需要通过 npm run build 命令将 TypeScript 编译为 JavaScript。
npm run build
这会在项目的 dist 目录下生成编译后的文件。
6. 启动 NestJS 应用程序
使用以下命令启动编译后的 NestJS 应用程序:
npm run start:prod
或者,使用直接运行命令:
node dist/main.js
7. 使用 PM2 管理 NestJS 应用程序(可选)
为了确保 NestJS 应用程序在服务器重启后能够自动启动,或者在崩溃时自动重启,建议使用 PM2 进程管理器。
安装 PM2:
npm install -g pm2
使用 PM2 启动 NestJS 应用:
pm2 start dist/main.js --name "nestjs-app"
你可以查看 PM2 状态:
pm2 status
确保应用程序在服务器重启时自动重启:
pm2 startup
pm2 save
8. 设置反向代理(使用 Nginx)
如果你希望通过域名(例如 your-domain.com)来访问 NestJS 应用程序,可以使用 nginx 作为反向代理。首先安装 nginx:
sudo apt install nginx
编辑 Nginx 配置文件,指向 NestJS 应用运行的端口(默认为 3000):
sudo nano /etc/nginx/sites-available/default
在文件中添加如下配置:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
保存并退出后,测试 nginx 配置:
sudo nginx -t
如果配置没有问题,重新加载 nginx:
sudo systemctl reload nginx
9. 验证应用程序
此时,你应该可以通过服务器的 IP 地址或绑定的域名访问 NestJS 应用。例如:
http://your-domain.com
总结
- 安装 Node.js 和 npm。
- 使用
git clone拉取项目代码。 - 安装依赖并设置环境变量。
- 编译项目并启动。
- 使用 PM2 管理应用的进程(可选)。
- 配置
nginx作为反向代理(可选)。
通过这些步骤,你可以成功在服务器上部署并运行你的 NestJS 项目。