错误:在 Azure 服务器上监听 EACCES 0.0.0.0:80 节点(Windows 服务器 2012 r2)

Posted

技术标签:

【中文标题】错误:在 Azure 服务器上监听 EACCES 0.0.0.0:80 节点(Windows 服务器 2012 r2)【英文标题】:Error: listen EACCES 0.0.0.0:80 Node on azure server (Windows server 2012 r2) 【发布时间】:2016-07-17 12:55:26 【问题描述】:

我停止了万维网发布服务并将启动类型更改为已禁用并以管理员身份运行以启动网站,但收到了 EACCES。

这是权限错误吗?我已经读过在 linux / unix 上使用 sudo 运行网站可以解决这个问题,但是在 windows 上呢?

编辑:我最终使用了 iisnode,因为我无法解决端口 80 上的 EACCES 错误。以下是我通过 iisnode 模块让我的节点服务器在 iis 上运行的步骤:

*安装iisnode(在任何你想要的地方); *为iss安装“URL重写”插件; *创建新网站; *创建 web.config 文件:

    服务器文件上 iisnode 的处理程序映射以及服务器文件的路径; 重写url规则,任何对url的请求都转到服务器文件; 调试和日志记录(日志文件目标路径)设置为 true;

(请在本文底部找到示例 web.config 文件)

*授予 SERVER/IIS_IUSRS 对站点 iis 中找到的目录/虚拟目录的写入权限; *创建本地绑定; *使用 *:80 作为端口创建外部绑定; *确保节点的 http 监听器设置为监听 process.env.PORT,因为 iisnode 会将此环境变量设置为 80 用于 http 请求;

根文件夹中的示例 web.config 文件并假设节点服务器(在本例中称为 app.js)也位于根文件夹中。

<configuration>
  <system.webServer>
             <!--Tells iis that app.js is to be handled by iisnode module-->
    <handlers>
        <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> 
    </handlers>
        <!--Url rewrite rule that anything coming to any url of within site goes through app.js-->
    <rewrite>
        <rules>
            <rule name="toNode">
                <match url="/*"/>
                <action type="Rewrite" url="app.js"/>
            </rule>
        </rules>
    </rewrite>

  </system.webServer>
</configuration>

编辑:在大多数情况下,我遵循本教程: https://www.youtube.com/watch?v=JUYCDnqR8p0

【问题讨论】:

我应该试试 iisnode 模块吗? 尝试在其他端口上运行, 但我仍然需要它在端口 80 上运行 【参考方案1】:

如果您想在端口80 上运行node 应用程序,那么您必须使用sudo 特权帐户运行它。

对于 windows,重启 iis 节点可能可以解决问题。

run node.js webbapp on 80 port on windows

【讨论】:

这是一个windows服务器【参考方案2】:

我想通过使用库中的图像 Windows Server 2012 R2 DataCenter 创建 Azure VM 来重现此问题,但节点应用程序无法在端口 80 上运行。

根据我的经验,您可以尝试一些步骤来解决问题。

    选择Command Prompt并右键选择Run as administrator选项以启动cmd以管理员身份运行节点或其他人。 命令netstat -ao显示所有监听端口及其PID,然后找到本地地址0.0.0.0:80和命令taskkill /PID &lt;PID&gt; /F之一,强制终止运行在端口80上的进程。 再次尝试命令node app.js

【讨论】:

已经试过了。我最终只使用了 iisnode 并对其进行了配置。如果有人想知道运行 iisnode 的必要步骤,我可以分享。 @pbordeaux 感谢您的分享。这对遇到相同问题的每个人都有帮助。请描述详细信息,包括操作系统、中间件等。【参考方案3】:

您还可以从 Azure CLI 生成 Node.js Azure Webapp。

    使用 NPM 安装 Azure CLI:

    c:\&gt; npm install azure-cli -g

    登录到您的天蓝色帐户:

    c:\&gt; azure login

    将模式更改为asm

    c:\&gt; azure config mode asm

    从您的本地 git 存储库中,创建一个 azure webapp(名为 yoursite):

    c:\git\yoursite&gt; azure site create --git yoursite

这将在issnode.yml 文件中生成添加所有必要的设置。

    使用 git 提交:

    c:\git\yoursite&gt; git add . &amp;&amp; git commit -m "initial commit"

    将修改推送到天蓝色服务器:

    c:\git\yoursite&gt; git push https://yourlogin@yoursite.scm.azurewebsites.net:443/yoursite.git

Azure 将添加节点依赖项并在端口 80 上运行您的站点。

【讨论】:

以上是关于错误:在 Azure 服务器上监听 EACCES 0.0.0.0:80 节点(Windows 服务器 2012 r2)的主要内容,如果未能解决你的问题,请参考以下文章

错误:在监听端口 444/443 时监听 EACCES 0.0.0.0:444 node.js

Amazon EC2 错误:监听 EACCES 0.0.0.0:80

错误:监听 EACCES 0.0.0.0:8080 但找不到端口?

错误:EACCES:权限被永远拒绝

在 mac 上使用 Bower 安装 Bootstrap 说:错误:EACCES,权限被拒绝

错误:EACCES:在 Elastic Beanstalk 上运行“npm install”时权限被拒绝