如何将 nestjs 应用程序部署到 Dreamhost VPS

How to deploy nestjs app to Dreamhost VPS

如何将 nestjs 应用程序部署到 Dreamhost VPS?简单地添加 NodeJS 并将 nestjs dist 文件夹内容复制到站点的根目录是行不通的。我似乎无法在 Dreamhost 或 nestjs 上找到任何文档来解释如何进行此操作。

如何在Dreamhost上部署nestjs

  • 首先确保在您的 Dreamhost 面板中为您的域设置了 NodeJS,如 Dreamhost 文档中所述:
  • 接下来安装最新版本的 NVM,然后安装 NodeJS。注意:确保您阅读了故障排除部分并添加了对 passenger 的引用,并且还有一些关于每次更改应用程序时如何重新启动节点的信息:
  • 在您的 nestjs 应用程序中,将 main.ts 重命名为 app.ts(Dreamhost 默认提供 app.js,因此您的项目 src 文件夹中需要 app.ts)
  • 在您的 nestjs 应用 package.json 文件中,将任何引用从 main.ts 更改为 app.ts
  • 您需要重定向对您的域发出的任何与 public 文件夹中的任何文件不匹配的请求,并将这些请求重定向到端口 3000 上的 nestjs 应用 运行。在您的 Dreamhost VPS 站点,在您域根目录的 public 文件夹中,将以下内容添加到您的 .htaccess 文件
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/ [P,L]
  • 在你的 nestjs 应用的终端上 window 运行 npm run build
  • 将 nestjs 应用程序的 dist 文件夹中的所有文件复制到 dreamhost 站点的根目录,而不是 public 文件夹
  • 将 package.json 文件复制到根目录,而不是 public 文件夹
  • 运行 npm install 在 Dreamhost
  • 上您网站的根目录中
  • 您可能需要 touch ./tmp/restart.txt 重新启动您的 NodeJS 应用程序。在您的 Dreamhost 站点的根目录中,而不是 public 文件夹。
  • 只要您不将控制器命名为与 public 文件夹中的文件夹同名,您的站点就应该与您的控制器一起工作。在您的 app.ts 中,您可能希望通过以下设置将所有请求设置为以路径 /api 开头:app.setGlobalPrefix('api');

这是我发现的一个网站,它有助于确定需要完成的重写,以将请求重定向到端口 3000 上的 nestjs 运行: - https://medium.com/@mayomi1/how-to-host-a-node-js-app-on-shared-host-52e12a62a259

希望对可能尝试这样做的其他人有所帮助。