zoukankan      html  css  js  c++  java
  • [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的使用。

  • 相关阅读:
    将博客搬至CSDN
    ActiveMQ 的可持久化(六)
    ActiveMQ之协议(五)
    ActiveMQ与Spring / SpringBoot 整合(四)
    ActiveMQ之JMS及保证消息的可靠性<持久化、事务、签收>(三)
    ActiveMQ部署和代码尝试(二)
    ActiveMQ初步安装使用(一)
    Redis之哨兵机制(五)
    Redis主从复制(读写分离)(四)
    Redis持久化(三)
  • 原文地址:https://www.cnblogs.com/wangqiideal/p/11166326.html
Copyright © 2011-2022 走看看