[IISNode] 如何在IIS7/8下,配置一个可以通过IIS访问NodeJS的web项目

参考了一下几篇很给力的文章,在每篇文章中,都学到了解决遇到的问题的答案:

(1)用iisnode模块,让你的Node.js应用跑在Windows系统IIS中

(2)让IIS能够运行Nodejs

(3)记录一次使用iisnode部署node项目遇到的坑!

(4)NodeJS + express访问html、css、JS等静态资源文件

第(1)篇文章收获:

a.下载了IISNode.exe安装包。

b.了解需要在web.config中配置handler、iisnode、rewrite节点。

c.新建launch.js,作为nodejs web的入口。

第(2)篇文章收获:

a.到iisnode 安装目录 %programfiles%iisnode 执行setupsamples.bat,通过iis可以成功访问到nodejs的项目,增强了继续死磕iisnode的信心。

b.修改setupsamples.bat,安装到其他站点下面(通过修改 set sitename="abcsiteweb").

第(3)篇文章收获:

a.iisnode的配置:

<iisnode 
        node_env="%node_env%" 
        nodeProcessCountPerApplication="1" 
        maxConcurrentRequestsPerProcess="1024" 
        maxNamedPipeConnectionRetry="100" 
        namedPipeConnectionRetryDelay="250" 
        maxNamedPipeConnectionPoolSize="512" 
        maxNamedPipePooledConnectionAge="30000" 
        asyncCompletionThreadCount="0" 
        initialRequestBufferSize="4096" 
        maxRequestBufferSize="65536" 
        watchedFiles="*.js;node_modules*;routes*.js;views*.jade" 
        uncFileChangesPollingInterval="5000" 
        gracefulShutdownTimeout="60000" 
        loggingEnabled="true" 
        logDirectory="iisnode" 
        debuggingEnabled="true" 
        debugHeaderEnabled="false" 
        debuggerPortRange="5058-6058" 
        debuggerPathSegment="debug" 
        maxLogFileSizeInKB="128" 
        maxTotalLogFileSizeInKB="1024" 
        maxLogFiles="20" 
        devErrorsEnabled="true" 
        flushResponse="false" 
        enableXFF="false" 
        configOverrides="iisnode.yml" 
        nodeProcessCommandLine="C:software
odejs
ode.exe" 
        promoteServerVars="REMOTE_ADDR" />

b.

自己通过观察发现:

C:Program Filesiisnodewwwexpresshello.js,发现:

配置路由,必须从根目录配置,去掉指定的端口:

路由从根目录配置例如:

app.get('/node/express/myapp/foo',function(req, res){}

端口(去掉原来指定的特定端口):
app.listen(process.env.PORT);

bin/www:

var port = normalizePort(process.env.PORT || '3030');
app.set('port', port);

修改为:
var port = normalizePort(process.env.PORT);
app.set('port', port);


var express = require('express');

var app = express.createServer();

app.get('/node/express/myapp/foo', function (req, res) {
    res.send('Hello from foo! [express sample]');
});

app.get('/node/express/myapp/bar', function (req, res) {
    res.send('Hello from bar! [express sample]');
});

app.listen(process.env.PORT);

静态文件如何处理呢?

第(4)篇文章,收获:

app.js代码如下:

const express = require('express')
const path = require('path')
const app = express()

app.use(express.static(path.join(__dirname, 'public')))

app.listen(8080, () => {
  console.log(`App listening at port 8080`)
})
其中最主要的部分是app.use(express.static(path.join(__dirname, 'public'))),该行代码是在express添加中间件,设置静态资源路径为public,所有的HTML、CSS、JS等文件都放在public下即可,后续代码迁移直接将public下的代码copy到Java Web的webRoot中就行

将public目录下的文件,搬迁到根目录下面。

以上如果都做到,基本就可以搞定iisnode的使用。

原文地址:https://www.cnblogs.com/wangqiideal/p/11166326.html