使用Iisnode在IIS中运行Ghost

时间:2016-01-24 02:47:44

标签: node.js iis-7.5 iisnode ghost

我遇到了让iisnode和ghost一起玩的问题。

我可以运行iisnode提供的样本,我可以通过节点命令行启动并运行正常。我已经关注了在线写的每篇博文,我可以找到它们将它们组合在一起。令人沮丧的是博客让这个过程看起来非常简单。

通过查看“ETW”日志,看起来iisnode无法使用命名管道与节点进程通信(“iisnode计划重试命名管道连接到node.exe进程”x20 +),然后节点进程终止。

问题可能不在于幽灵,我不知道该做什么或接下来调整哪个部分。我在这一点上最好的猜测是某种权限问题,但我花了几个小时在我的开发机器上设置权限都无济于事。

如果有帮助,我在浏览器中收到的错误消息是:错误:(代码:EACCES)启动服务器时出错。

2 个答案:

答案 0 :(得分:3)

为了回答我自己的问题,我逐行检查了node.exe的进程监视器输出,看看我是否能看到任何奇怪的内容。我不是分析Process Monitor输出的专家,而且有大量的“缓冲区溢出”消息以及其他可能错误的东西,但后来我偶然发现了以下几行: / p>

Node.exe CreatePipe \MyProjects\WebsiteName\process.env.port\ INVALIDDEVICEREQUEST

设备无效?

然后便士终于放弃了。在config.js中,您不希望将端口设置为'process.env.port'(如config.js文件中建议的那样作为注释),您希望将端口设置为process.env.port

没有引号。

答案 1 :(得分:1)

只是为了澄清what ruethewhirl551 said,这是我的工作“ config.js ”的摘录:

config = {
    production: {
        url: 'http://my-blog.com',
        mail: {
            transport: 'SMTP',
            options: {
                service: 'Mailgun',
                auth: {
                    user: 'postmaster@my-blog.com',
                    pass: '9ed512da012cd454376947365xd71793'
                }
            }
        },
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '127.0.0.1',
            port: process.env.PORT // <-- HERE
        }
    },

    // ...

请注意底部的port: process.env.PORT行。

您还可以通过“config.example.js”文件搜索“iisnode”以获取更多信息。