我为有特定需求的工厂开发了一个小型应用程序。这是一个小型应用程序,将在本地使用,不到10人。
现在,我将后端和前端放在同一个git存储库中。
存储库结构如下
--README.md
--.gitignore
--document
--projects
|--backend // Nestjs API
|--frontend // Angular
我已经准备好NestJS来提供静态文件,这意味着我已经配置了Angular构建器以使其工作如下:
angular.json
...
"options": {
"outputPath": "../backend/client/dist",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
...
我的NestJs服务器配置为提供静态文件:
main.ts
const PORT = process.env.PORT || 8080;
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule);
app.enableCors();
app.setGlobalPrefix('api');
await app.listen(PORT);
}
...
app.module.ts
imports: [
TypeOrmModule.forRoot(),
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'client/dist'),
}),
直到今天,我将npm与npm run start:dev
一起使用,这使我能够自动构建数据库并运行后端服务器。
现在,我需要将后端和前端部署到同一服务器上并构建所有内容。
什么是最好的方法? 我应该首先在dist文件夹中构建angular,还是构建nestjs .. 我只能将dist文件夹带到生产服务器上,对吗?
答案 0 :(得分:1)
我会做的是,构建您的有角度的应用程序并将文件复制到您为前端服务的位置。如果您的应用程序已路由,则还必须配置一个对index.html的后备,您可以在此处查看操作方法:Angular deployement
对于您的nestjs应用程序,您可以将其放置在服务器上的几乎任何位置,而pm2将在端口8080上提供它。首先从nestjs中提取所有文件,然后使用npm install(您也需要在nestjs中使用prodjs中的node_modules) 。然后使用nest build来构建您的应用程序。对于pm2,您应该使用main.js来启动api。然后,我将研究一个代理反向配置,以将所有api请求重定向到8080。它的作用是,如果到达example.com/api,则服务器将理解它必须重定向到8080内部,因此您不必打开任何其他端口,那么您想要的就是80。
我还考虑在服务器启动时启动pm2并保存您的pm2配置,这样,如果您重新启动服务器,它将自动启动后端。