日常私下的项目喜欢部署到windowserve服务器上,因为简单些。最近写了一些node小的服务,所以想着不要花费太多时间在服务端部署上,如何使用IIS部署Node服务,网上有很多教程。话不多说,中间主要以遇到的常见问题为主,让大家少踩坑;
准备环境和配置服务:
1、准备windows功能,设置后打开服务器的IIS功能,这个就不细说了。
2、IIS如何要像部署站点一样那样简单,需要有两个插件来软件支持;
3、以上准备好以后,先在服务器安装nodejs,安装后再安装上面的两个软件,按转后打开iisnode。
打开setupsamples.bat,执行命令
之后会多一个node应用程序
4、访问localhost/node
5、紧接着访问localhost/node/helloworld/hello.js
如果出现报错可以在对应目录的web.config中加入一下配置:
<iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" />
以上步骤如果操作没问题后,就代表配置完成了,接下来可以进行node服务的部署了。
部署node服务:
1、把node服务拷贝到服务目录,并在目录下新建web.config内容如下(url指向的是你的服务js):
<configuration> <system.webServer> <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" /> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="myapp"> <match url="/*" /> <action type="Rewrite" url="server.js" /> </rule> </rules> </rewrite> <security> <requestFiltering> <hiddenSegments> <add segment="node_modules" /> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration>
紧接着访问服务地址(以下是我测试的一个输出):
在配置过程中出现过这个报错,尝试了很多方法,但是最终都没有解决。最终发现是node服务打包的时候指定了端口(port)导致的,把端口去掉后就可以正常访问了,这个有待细细研究。
总结:从一开始有想把node服务部署到IIS上的想法到最终成功,花费了很多时间。写出来的目的是把踩到的坑填上,希望可以帮助到大家。