本地打包再上传

npm install
npm run build

会生成:dist/

然后上传:

scp -r dist package.json root@服务器IP:/www/nest
或者直接使用工具直接复制进去比如:FinalShell HexHub

服务器启动项目

  1. cd /www/nest
  2. 启动:node dist/main.js
  3. 如果能访问:http://服务器IP:3000
  • 如果报错比如:
Error: Cannot find module 'reflect-metadata'
Require stack:
- /usr/www/nest/dist/main.js
    at Function._resolveFilename (node:internal/modules/cjs/loader:1405:15)
    at defaultResolveImpl (node:internal/modules/cjs/loader:1061:19)
    at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1066:22)
    at Function._load (node:internal/modules/cjs/loader:1215:37)
    at TracingChannel.traceSync (node:diagnostics_channel:322:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
    at Module.require (node:internal/modules/cjs/loader:1491:12)
    at require (node:internal/modules/helpers:135:16)
    at Object.<anonymous> (/usr/www/nest/dist/main.js:3:1)
    at Module._compile (node:internal/modules/cjs/loader:1734:14) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/usr/www/nest/dist/main.js' ]
}

Node.js v23.10.0

数据库配置错误

st] 2487230  - 2026/02/27 10:53:52   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (2)...
Error: Access denied for user 'root'@'localhost' (using password: YES)
    at Packet.asError (/usr/www/nest/node_modules/mysql2/lib/packets/packet.js:739:17)
    at ClientHandshake.execute (/usr/www/nest/node_modules/mysql2/lib/commands/command.js:29:26)
    at PoolConnection.handlePacket (/usr/www/nest/node_modules/mysql2/lib/base/connection.js:508:34)
    at PacketParser.onPacket (/usr/www/nest/node_modules/mysql2/lib/base/connection.js:93:12)
    at PacketParser.executeStart (/usr/www/nest/node_modules/mysql2/lib/packet_parser.js:75:16)
    at Socket.<anonymous> (/usr/www/nest/node_modules/mysql2/lib/base/connection.js:100:25)
    at Socket.emit (node:events:507:28)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
    at Readable.push (node:internal/streams/readable:390:5)
[Nest] 2487230  - 2026/02/27 10:53:55   ERROR [TypeOrmModule] Unable to con

错误解决办法

  1. 没有 package.json package-lock.json ,重新把这两个文件也上传上去
  2. 没有执行Npm install
  3. 数据和后台同一个服务器,数据库链接地址使用 127.0.0.1
  4. .env配置文件也要放dist目录同级才行

、使用 PM2 永久运行

pm2 start dist/main.js --name nest-app

设置开机启动:

pm2 startup
pm2 save

安装 Nginx

apt install nginx -y

启动

systemctl start nginx

http://服务器IP 出现欢迎页说明成功。

配置 Nginx 反向代理

nano /etc/nginx/sites-available/default
server {
    listen 80;
    server_name 你的域名;

   # =========================
	# NestJS API 反代
	# =========================
	location /api/ {
	    proxy_pass http://127.0.0.1:3000/api/;   # 注意最后的 /api/
	    proxy_http_version 1.1;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection 'upgrade';
	    proxy_set_header Host $host;
	}
}

这样配置后就是:xx域名/api/admin/login 这样请求地址了

重启

systemctl restart nginx
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐