一个月前我开始学习服务器端编码,我使用“express”框架和mssql构建了一个nodejs项目和带有get和post请求的网络服务,我的项目文件包括一个“main.js”文件和一个“node_modules”文件夹。我试图在IIS上托管这个项目,但没有关于如何做到这一点的想法或经验。我将不得不以某种方式 Package 我的项目。我可以在IIS上托管nodejs项目吗?如果可以,那么我需要执行哪些步骤。我有一个运行IIS的Windows服务器,其中安装了mysql。
ehxuflar1#
下面是一个步骤...1.如果尚未安装node、iisnode和urlrewrite,请安装它们1.添加一个网站到iis
1.编辑主机文件
1.添加你的网址到主机
1.检查你的新网站模块以确保iisnode是安装的
1.如果它在那里你是好的
1.创建节点应用代码JS文件
1.将此代码放入文件中
var express = require("express"); var app = express(); app.get("/", function(req, res) { res.send("Hello Worlxxxxd!"); }); // This is REQUIRED for IISNODE to work app.listen(process.env.PORT, () => { console.log("listening"); });
1.添加一个web.config文件到目录中,并将此代码放入其中
<configuration> <system.webServer> <handlers> <add name="iisnode" path="node_app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="nodejs"> <match url="(.*)" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="/node_app.js" /> </rule> </rules> </rewrite> <security> <requestFiltering> <hiddenSegments> <add segment="node_modules" /> <add segment="iisnode" /> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration>
1.在浏览器中导航到新站点,你应该得到这个错误,因为你还没有安装express软件包
1.打开命令提示符并安装express
1.刷新这网页并且瞧
7vhp5slm2#
我参加聚会有点晚了,所以你可能已经解决了这个问题,或者走了另一条路。您可以使用iisnode在IIS内部运行节点应用程序。我个人在运行iisnode方面成败参半,但这绝对是可能的。
hgb9j2n63#
我建议使用URL重写(https://www.iis.net/downloads/microsoft/url-rewrite)和应用程序请求路由(https://www.iis.net/downloads/microsoft/application-request-routing)IIS模块。请在您的IIS服务器上安装这些模块。在IIS中创建一个指向节点应用程序运行目录的应用程序(尽管实际上并没有使用此路径!):
在这个新应用程序中,使用反向代理模板创建重写规则,并指向本地服务的节点js应用程序:
现在,您可以使用您配置的IIS应用程序浏览到IIS托管站点,它将显示您的node.js托管站点:
这种方法的主要好处之一是,颁发给IIS的SSL证书可以用于“http”托管的node.js应用程序。
我已经从命令行运行了node.js,但是如果需要,这可以作为一个服务来完成。
3条答案
按热度按时间ehxuflar1#
下面是一个步骤...
1.如果尚未安装node、iisnode和urlrewrite,请安装它们
1.添加一个网站到iis
1.编辑主机文件
1.添加你的网址到主机
1.检查你的新网站模块以确保iisnode是安装的
1.如果它在那里你是好的
1.创建节点应用代码JS文件
1.将此代码放入文件中
1.添加一个web.config文件到目录中,并将此代码放入其中
1.在浏览器中导航到新站点,你应该得到这个错误,因为你还没有安装express软件包
1.打开命令提示符并安装express
1.刷新这网页并且瞧
7vhp5slm2#
我参加聚会有点晚了,所以你可能已经解决了这个问题,或者走了另一条路。
您可以使用iisnode在IIS内部运行节点应用程序。
我个人在运行iisnode方面成败参半,但这绝对是可能的。
hgb9j2n63#
我建议使用URL重写(https://www.iis.net/downloads/microsoft/url-rewrite)和应用程序请求路由(https://www.iis.net/downloads/microsoft/application-request-routing)IIS模块。请在您的IIS服务器上安装这些模块。
在IIS中创建一个指向节点应用程序运行目录的应用程序(尽管实际上并没有使用此路径!):
在这个新应用程序中,使用反向代理模板创建重写规则,并指向本地服务的节点js应用程序:
现在,您可以使用您配置的IIS应用程序浏览到IIS托管站点,它将显示您的node.js托管站点:
这种方法的主要好处之一是,颁发给IIS的SSL证书可以用于“http”托管的node.js应用程序。
我已经从命令行运行了node.js,但是如果需要,这可以作为一个服务来完成。