angular - Ubuntu 16.04 LTS 中的 Angular 7 服务器端渲染部署
问题描述
我使用通用工具创建了带有服务器端渲染的 Angular 7 项目。
它在本地机器上工作正常没问题,dist 文件夹包括服务器和浏览器文件夹以及 server.js
问题是如何在使用 apache 的 ubuntu 服务器中使用它,并且应用程序将位于子文件夹中,如果我关闭终端,如何保持应用程序运行?
我搜索了很多并使用 pm2 方法运行该过程,但我没有找到如何访问站点。
解决方案
首先,您必须将 Web 服务器配置为反向代理以指向节点服务器。
对于 Nginx,配置可能如下所示:
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
确保您设置proxy_pass
的端口与节点服务器文件中定义的端口相同。
接下来,您应该将 dist 目录复制到您的 Web 服务器。然后您可以使用pm2在后台启动节点服务器,正如您已经正确提到的:
npm install pm2 -g
pm2 start /var/www/html/server.js // this is the entry point of your universal server
这将启动节点服务器。您可以通过运行检查 Node 是否正确响应curl localhost:8080
。如果这会返回您的应用程序的源代码,那么您就可以开始了。
最后,在您重新启动 Web 服务器后,您的 Angular 应用程序应该可以通过调用服务器 IP 或主机名从外部访问。
编辑- 要在 apache 服务器上完全启用代理,请运行以下命令:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
推荐阅读
- php - 自定义 Laravel 类中的变量继承总是返回空
- c# - 您如何将 aws 访问密钥和密钥存储在 net core 中以进行生产?
- c++ - 将 Vcl::Controls::TCaption aka (System::UnicodeString) 转换为 const char *
- flutter - 为什么我在 Flutter 中使用 Firestore 中的 foreach 方法后得到空值?
- c# - listview 上的项目在拉动时重复以刷新 xamarinforms
- sql - 通过 Postgres 中的值组获取滚动的更改总数
- java - 根据值动态设置setter
- python - 哪个 Python 错误消息用于失败的图遍历以及如何处理 mypy 声称该函数没有返回语句?
- linux - 由于 Ubuntu 中缺少 .env 文件,Android 应用程序无法在模拟器中安装
- reactjs - 到达路由器 - 使用 URL 加载组件