如何将 Nestjs 应用程序部署到 Dreamhost VPS?简单地添加 NodeJS 并将 Nestjs dist 文件夹内容复制到站点的根目录是行不通的。我似乎找不到任何有关 Dreamhost 或 Nestjs 的文档来解释如何进行此操作。
最佳答案
如何在Dreamhost上部署nestjs
- 首先确保您的域的 Dreamhost 面板中已设置 NodeJS,如 Dreamhost 文档中所述:
- 接下来安装最新版本的 NVM,然后安装 NodeJS。注意:请确保您阅读了故障排除部分并添加了对乘客的引用,还有一些有关如何在每次对应用程序进行更改时重新启动节点的信息:
- 在您的 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/$1 [P,L]
- 在 Nestjs 应用的终端窗口上运行
npm run build
- 将 Nestjs 应用的 dist 文件夹中的所有文件复制到 dreamhost 站点的根目录,而不是公共(public)文件夹
- 将 package.json 文件复制到根目录,而不是公共(public)文件夹
- 在 Dreamhost 上站点的根目录中运行
npm install
- 您可能需要
触摸 ./tmp/restart.txt
来重新启动 NodeJS 应用。在 Dreamhost 站点的根目录中,而不是公共(public)文件夹中。 - 只要您指定的 Controller 不与公共(public)文件夹中的文件夹同名,您的网站就应该与您的 Controller 一起工作。在您的 app.ts 中,您可能希望通过以下设置将所有请求设置为以路径/api 开头:
app.setGlobalPrefix('api');
这是我发现的一个网站,它有助于确定将请求重定向到在端口 3000 上运行的 Nestjs 所需的重写: -https://medium.com/@mayomi1/how-to-host-a-node-js-app-on-shared-host-52e12a62a259
希望对其他可能尝试这样做的人有所帮助。
关于typescript - 如何将nestjs应用程序部署到Dreamhost VPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947389/