运行 IIS 中的 Ghost with Iisnode
Running Ghost in IIS with Iisnode
我在让 iisnode 和 ghost 一起玩时遇到问题。
我可以 运行 iisnode 提供的样本很好,我可以通过节点命令行得到 ghost up 和 运行ning 很好。我关注了我能找到的所有在线博客 post,以便将它们整合在一起。令人沮丧的是博客让这个过程看起来非常简单。
从查看 "ETW" 日志来看,iisnode 似乎无法使用命名管道 ("iisnode scheduled a retry of a named pipe connection to the node.exe process" x20+) 与节点进程通信,然后节点进程终止。
问题可能不在于 ghost,说实话我不知道该做什么或下一步要调整哪个部分。在这一点上我最好的猜测是某种权限问题,但我花了几个小时在我的开发机器上设置权限无济于事。
如果有帮助,我在浏览器中收到的错误消息是:错误:(代码:EACCES)启动服务器时出错。
为了回答我自己的问题,我逐行检查了 node.exe 的 Process Monitor 输出,看看我是否能看到任何奇怪的东西。我不是分析 Process Monitor 输出的专家,有大量 "Buffer Overflow" 消息和其他 可能 错误的东西,但后来我偶然发现了下一行:
Node.exe CreatePipe \MyProjects\WebsiteName\process.env.port\ INVALIDDEVICEREQUEST
设备无效?
然后一分钱终于掉了。在 config.js 中,您不想将端口设置为 'process.env.port'
(正如 config.js 文件本身作为注释所建议的那样),您希望将端口设置为 process.env.port
。
没有引号。
澄清一下,这里是我的工作“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" 以获取更多信息。
我在让 iisnode 和 ghost 一起玩时遇到问题。
我可以 运行 iisnode 提供的样本很好,我可以通过节点命令行得到 ghost up 和 运行ning 很好。我关注了我能找到的所有在线博客 post,以便将它们整合在一起。令人沮丧的是博客让这个过程看起来非常简单。
从查看 "ETW" 日志来看,iisnode 似乎无法使用命名管道 ("iisnode scheduled a retry of a named pipe connection to the node.exe process" x20+) 与节点进程通信,然后节点进程终止。
问题可能不在于 ghost,说实话我不知道该做什么或下一步要调整哪个部分。在这一点上我最好的猜测是某种权限问题,但我花了几个小时在我的开发机器上设置权限无济于事。
如果有帮助,我在浏览器中收到的错误消息是:错误:(代码:EACCES)启动服务器时出错。
为了回答我自己的问题,我逐行检查了 node.exe 的 Process Monitor 输出,看看我是否能看到任何奇怪的东西。我不是分析 Process Monitor 输出的专家,有大量 "Buffer Overflow" 消息和其他 可能 错误的东西,但后来我偶然发现了下一行:
Node.exe CreatePipe \MyProjects\WebsiteName\process.env.port\ INVALIDDEVICEREQUEST
设备无效?
然后一分钱终于掉了。在 config.js 中,您不想将端口设置为 'process.env.port'
(正如 config.js 文件本身作为注释所建议的那样),您希望将端口设置为 process.env.port
。
没有引号。
澄清一下
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" 以获取更多信息。