服务器部署nestjs项目
会生成:dist/
·
本地打包再上传
npm install
npm run build
会生成:dist/
然后上传:
scp -r dist package.json root@服务器IP:/www/nest
或者直接使用工具直接复制进去比如:FinalShell HexHub
服务器启动项目
- cd /www/nest
- 启动:node dist/main.js
- 如果能访问: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
错误解决办法
- 没有 package.json package-lock.json ,重新把这两个文件也上传上去
- 没有执行Npm install
- 数据和后台同一个服务器,数据库链接地址使用 127.0.0.1
- .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
更多推荐
所有评论(0)