如何将 node-windows 与服务帐户一起使用?
How do to use node-windows with service account?
我正在使用 node-windows to run my node app as a service. Because I intend to use node-expose-sspi I created a service account 和 powershell(我用 Test-ADServiceAccount 检查过)。
如果我运行这个代码
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'project-name',
description: 'node server',
script: 'C:\server\server.js'
, allowServiceLogon: true
// ,
// env:{
// name: "NODE_ENV",
// value: "production"
// }
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
// Just in case this file is run twice.
svc.on('alreadyinstalled',function(){
console.log('This service is already installed.');
});
// Listen for the "start" event and let us know when the
// process has actually started working.
svc.on('start',function(){
console.log(svc.name+' started!\nVisit http://127.0.0.1:5000 to see it in action.');
});
// Install the script as a service.
svc.install();
我得到了控制台日志 'project-name started...',但是没有创建服务(我用 get-process 检查过)。
如果我省略 'allowServiceLogon: true',则会创建服务。
如何在节点中指定服务帐户-windows?
语法
node-windows v1.1.8 seems to be using winsw version 2 so you need to set the options according to this xmlConfigFile.md(不要忘记 $
符号)。
<serviceaccount>
<domain>YOURDOMAIN</domain>
<user>gmsa_account$</user>
<allowservicelogon>true</allowservicelogon>
</serviceaccount>
疑难解答
如果没有创建该服务,那是因为 gMSA 没有足够的权限 a) node-windows 的 npm 文件夹(如果您全局安装它,这应该是 C:\Users\username\AppData\Roaming\npm
, b) npm 文件夹 (C:\Users\username
) 的“入口点”以及节点 app.js 所在的文件夹(例如 C:\projects\myserverproject
)。您至少需要写权限。
此外,将不会创建守护程序文件夹 (C:\projects\myserverproject\daemon
) 中的 windows-node 日志文件!这使得故障排除更加困难。
用户 LocalService 也是如此。
我的推荐
如果您完全省略 allowServiceLogon
和其他登录属性,服务将创建为 LocalSystem。 LocalSystem 具有足够的权限。现在您可以在 Windows GUI(搜索 'services.msc')中将 LocalSystem 更改为 gMSA。
如果 gMSA 没有足够的权限,服务将启动但立即停止。然后您可以在事件查看器中找到错误日志。错误日志会告诉您需要向哪些文件夹添加权限。
我正在使用 node-windows to run my node app as a service. Because I intend to use node-expose-sspi I created a service account 和 powershell(我用 Test-ADServiceAccount 检查过)。
如果我运行这个代码
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'project-name',
description: 'node server',
script: 'C:\server\server.js'
, allowServiceLogon: true
// ,
// env:{
// name: "NODE_ENV",
// value: "production"
// }
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
// Just in case this file is run twice.
svc.on('alreadyinstalled',function(){
console.log('This service is already installed.');
});
// Listen for the "start" event and let us know when the
// process has actually started working.
svc.on('start',function(){
console.log(svc.name+' started!\nVisit http://127.0.0.1:5000 to see it in action.');
});
// Install the script as a service.
svc.install();
我得到了控制台日志 'project-name started...',但是没有创建服务(我用 get-process 检查过)。 如果我省略 'allowServiceLogon: true',则会创建服务。
如何在节点中指定服务帐户-windows?
语法
node-windows v1.1.8 seems to be using winsw version 2 so you need to set the options according to this xmlConfigFile.md(不要忘记 $
符号)。
<serviceaccount>
<domain>YOURDOMAIN</domain>
<user>gmsa_account$</user>
<allowservicelogon>true</allowservicelogon>
</serviceaccount>
疑难解答
如果没有创建该服务,那是因为 gMSA 没有足够的权限 a) node-windows 的 npm 文件夹(如果您全局安装它,这应该是 C:\Users\username\AppData\Roaming\npm
, b) npm 文件夹 (C:\Users\username
) 的“入口点”以及节点 app.js 所在的文件夹(例如 C:\projects\myserverproject
)。您至少需要写权限。
此外,将不会创建守护程序文件夹 (C:\projects\myserverproject\daemon
) 中的 windows-node 日志文件!这使得故障排除更加困难。
用户 LocalService 也是如此。
我的推荐
如果您完全省略 allowServiceLogon
和其他登录属性,服务将创建为 LocalSystem。 LocalSystem 具有足够的权限。现在您可以在 Windows GUI(搜索 'services.msc')中将 LocalSystem 更改为 gMSA。
如果 gMSA 没有足够的权限,服务将启动但立即停止。然后您可以在事件查看器中找到错误日志。错误日志会告诉您需要向哪些文件夹添加权限。