在 azure vm (windows server 2012) 上执行 nodejs?
Execute nodejs on azure vm (windows server 2012)?
我在 visual studio 中创建了与 nodejs 的聊天,它在我的本地主机上运行良好,但我的网站在 azure 上,所以我创建了虚拟机(windows 服务器 2012)。(注意:它不是经典虚拟机)
并安装必要的软件 NodeJS.and 将我的 nodejsapp 文件夹复制到虚拟机中。
这里是代码片段(server.js)...
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io').listen(http);
var sql = require('mssql');
var config = {
user: 'xxxxx',
password: 'xxxxxxxxxxx',
server: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
database: 'xxxxx',
options: {
encrypt: true // Use this if you're on Windows Azure
}
}
console.log(config);
io.sockets.on('connection', function(socket){
socket.on('join room', function (data) {console.log('joined-->'+data.email);
socket.join(data.email);
});
socket.on('leave room', function (data) {console.log('Leaved-->'+data.email);
socket.leave(data.email);
});
socket.on('message', function (data) {
console.log('sent==>'+data.id+" , "+data.to+' , '+data.from+' , '+data.msg );
io.sockets.in(data.to).emit('chat message', {id: data.id, to:data.to,from: data.from, msg: data.msg });
});
});
http.listen(5556, function(){
console.log('listening on *:5556');
});
之后使用命令提示符尝试 运行 server.js 但不是 运行 节点。
它在本地机器上工作,但在虚拟机上不工作。
谁能指出我正确的方向?
似乎另一个程序在环境路径中有 node.exe。在您的情况下,它可能是 Microsoft HPC Pack。
输入 echo %PATH% 并查看 (C:\Program Files\Microsoft HPC Pack 2008 R2\Bin) 是否位于 node.js 文件夹 (C:\Program Files\nodejs) 之前。如果是这样,请更改路径,使 node.js 路径位于 HPC 路径之前。
您似乎使用了 HPC Pack 计算节点模板来创建 VM 实例并构建您的应用程序。
默认情况下,node
是此模板中 HPC
命令的别名。如果您不主动安装,它就没有 node.js 环境。其实可以使用node.js执行应用的绝对路径
另外,您可以使用普通版本的VM模板,例如
安装node.js并确保在系统PATH
中配置nodejs文件夹的路径。否则,您只需将 node.js 执行应用程序的文件夹打包到您的项目目录中,然后将它们一起部署到 Azure VM。然后使用 node.js 执行的绝对路径到 运行 你的 node.js 服务器。
更新
当您在市场中添加新资源时,您可以 select 那些没有 HPC 包的 VM 模板。
我在 visual studio 中创建了与 nodejs 的聊天,它在我的本地主机上运行良好,但我的网站在 azure 上,所以我创建了虚拟机(windows 服务器 2012)。(注意:它不是经典虚拟机) 并安装必要的软件 NodeJS.and 将我的 nodejsapp 文件夹复制到虚拟机中。
这里是代码片段(server.js)...
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io').listen(http);
var sql = require('mssql');
var config = {
user: 'xxxxx',
password: 'xxxxxxxxxxx',
server: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
database: 'xxxxx',
options: {
encrypt: true // Use this if you're on Windows Azure
}
}
console.log(config);
io.sockets.on('connection', function(socket){
socket.on('join room', function (data) {console.log('joined-->'+data.email);
socket.join(data.email);
});
socket.on('leave room', function (data) {console.log('Leaved-->'+data.email);
socket.leave(data.email);
});
socket.on('message', function (data) {
console.log('sent==>'+data.id+" , "+data.to+' , '+data.from+' , '+data.msg );
io.sockets.in(data.to).emit('chat message', {id: data.id, to:data.to,from: data.from, msg: data.msg });
});
});
http.listen(5556, function(){
console.log('listening on *:5556');
});
之后使用命令提示符尝试 运行 server.js 但不是 运行 节点。
它在本地机器上工作,但在虚拟机上不工作。
谁能指出我正确的方向?
似乎另一个程序在环境路径中有 node.exe。在您的情况下,它可能是 Microsoft HPC Pack。 输入 echo %PATH% 并查看 (C:\Program Files\Microsoft HPC Pack 2008 R2\Bin) 是否位于 node.js 文件夹 (C:\Program Files\nodejs) 之前。如果是这样,请更改路径,使 node.js 路径位于 HPC 路径之前。
您似乎使用了 HPC Pack 计算节点模板来创建 VM 实例并构建您的应用程序。
默认情况下,node
是此模板中 HPC
命令的别名。如果您不主动安装,它就没有 node.js 环境。其实可以使用node.js执行应用的绝对路径
另外,您可以使用普通版本的VM模板,例如
安装node.js并确保在系统PATH
中配置nodejs文件夹的路径。否则,您只需将 node.js 执行应用程序的文件夹打包到您的项目目录中,然后将它们一起部署到 Azure VM。然后使用 node.js 执行的绝对路径到 运行 你的 node.js 服务器。
更新
当您在市场中添加新资源时,您可以 select 那些没有 HPC 包的 VM 模板。