gpt4 book ai didi

node.js - 将 AzureServiceProject Node.js 发布到 Windows Server 2012

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:52 25 4
gpt4 key购买 nike

我正在尝试使用 Powershell“Publish-AzureServiceProject”cmdlet 将 Node.js 包发布到 Azure。

使用默认的 osFamily="2"(Windows Server 2008 R2),它可以按预期工作,但当我使用 osFamily="3"(Windows Server 2012) 发布时,出现以下错误:

The feature named NetFx35 that is required by the uploaded package is not available in the OS * chosen for the deployment.

显然我没有使用 .Net,但 3.5 是默认值,阻止我上传包。

要指定 .Net 4.5,我了解到我需要创建一个 roleproperties.txt 文件,其中包含:

TargetFrameWorkVersion=v4.5

并通过/rolePropertiesFile 将其传递给 cspack。

但是,由于我自己不调用 cspack,如何通过 Publish-AzureServiceProject 将该选项传递给 cspack?或者还有其他解决方法吗?

<小时/>

目前我的 ServiceDefinition 如下所示:

<?xml version="1.0"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Foo" upgradeDomainCount="1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="Bar">
<Imports>
<Import moduleName="RemoteForwarder" />
<Import moduleName="RemoteAccess" />
</Imports>
<Startup>
<Task commandLine="setup_worker.cmd &gt; log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node" />
<Variable name="RUNTIMEURL" value="http://nodertncu.blob.core.windows.net/node/0.6.20.exe" />
</Environment>
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="tcp" port="80" />
</Endpoints>
<Runtime>
<Environment>
<Variable name="PORT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[@name='HttpIn']/@port" />
</Variable>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
<EntryPoint>
<ProgramEntryPoint commandLine="runnode.cmd" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
</WorkerRole>
</ServiceDefinition>

最佳答案

目前,您需要做一些工作才能让 OSFamily=3 与非 .Net 角色一起工作。本质上,您需要自己运行 cspack 来创建一个包并指定一个 roleProperties 文件,该文件允许您以 .Net 4.5 为目标(是的,即使您根本不使用 .Net,您也需要让 cspack 工具相信您'正在使用 .Net 4.5)。

步骤如下:

  1. 去创建一个具有网络角色的新 Node 项目。
  2. 修改 cscfg 以设置操作系统系列 = 3。
  3. 将以下 roleproperties.txt 拖放到服务的根目录中。
  4. 启动“Windows Azure 命令提示符”,然后转到服务根文件夹。
  5. 运行以下命令:cspack ServiceDefinition.csdef/role:WebRole1;WebRole1/sites:WebRole1;Web;WebRole1/rolePropertiesFile:WebRole1;RoleProperties.txt/out:package.cspkg
  6. 登录门户并创建服务/手动上传 cspkg

roleproperties.txt的内容:


目标框架版本=v4.5

关于node.js - 将 AzureServiceProject Node.js 发布到 Windows Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com