如何在端口80上运行ng服务

时间:2018-09-06 15:51:43

标签: angular amazon-ec2 angular-cli

在我的package.json文件中,我有:

"scripts": {
  "start": "concurrently \"ng serve --host something.mydomain.com --port 4200 --live-reload false --env=prod\" \"gulp\""
},

运行npm start后,几秒钟后,我就可以在浏览器中访问http://something.mydomain.com:4200的项目了

我希望直接访问https://something.mydomain.com(即没有端口号)来访问同一系统

我已将package.json修改为:

"scripts": {
  "start": "concurrently \"ng serve --host something.mydomain.com --port 80 --live-reload false --env=prod\" \"gulp\""
},

但是当我运行package.json时,我得到了:

  

端口80已在使用中。使用'--port'指定其他端口。

如果我运行lsof -i :80,则什么也没有发生,因此我确定未占用端口80。我怀疑问题在于端口80是受保护的端口,并且当我以ec2-user身份登录时,我没有正确的权限吗?

如何通过80端口运行项目?

2 个答案:

答案 0 :(得分:3)

我个人不会使用Angular CLI(ng serve命令)在生产中提供Angular应用程序。更好的选择是构建项目(ng build)并提供dist文件夹。这样做,您将拥有一个更快的应用程序,因为它不会“即时编译”,并且不会与Angular CLI交互。

但是,如果您想坚持使用您的方法,则要在标准端口上运行该应用程序(这样就不必指定该端口;对于HTTP网站为80,对于HTTPS网站为443),将必须根据您使用的Angular版本修改其他文件:

  • > =角度6:

    编辑angular.json文件,并在serve对象(在<yourProjectName>对象下)中,添加以下代码:

    "options": { "port": 80 }

  • 角度<6.0:

    编辑angular-cli.json文件,然后在defaults对象中添加以下代码:

    "serve": { "port": 80 }

答案 1 :(得分:1)

我将假定您正在终端中运行项目。 尝试在ng服务之前添加sudo,因为端口80需要以root身份运行。