Shr*_*hri 4 python azure web-deployment
我正在寻找有用的解决方案来部署Python可执行文件Azure Service Fabric
没有为文件node js 在这里,但我找不到任何相关的python
小贴士:节省一些时间,并尝试先在本地运行.我的经验是,很多事情都可能出错,其中最难确定的是节点上的执行权.
将Python部署到Service Fabric所需的步骤:
现在我们得到了一些黑客攻击.Service Fabric不会以与在Microsoft的示例中运行node.exe相同的方式运行Python.exe .所以你需要做的是创建一个run.cmd脚本,基本上这样做:
python.exe main.py
将其用作EntryPoint.
现在,您在ServiceManifest.xml中的EntryPoint如下所示:
...
<EntryPoint>
<ExeHost>
<Program>run.cmd</Program>
<Arguments></Arguments>
<WorkingFolder>CodePackage</WorkingFolder>
<ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048"/> //use this to get logging (very helpful ;)
</ExeHost>
</EntryPoint>
</CodePackage>
Run Code Online (Sandbox Code Playgroud)
如果你想让SetupEntryPoint为你安装python,你可以这样做:
<SetupEntryPoint>
<ExeHost>
<Program>Setup\setup.bat</Program>
<WorkingFolder>CodePackage</WorkingFolder>
</ExeHost>
</SetupEntryPoint>
Run Code Online (Sandbox Code Playgroud)
我的setup.bat看起来像这样(路径有一些问题):
C:\ Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command".\ Setup\pythonInstall.ps1"
我的解决方案中的代码被复制到这个结构中:
MyGuestExecutablePkg\
|
- Code\
- run.cmd
- main.py
- Setup\
- setup.bat
- ....
- Config\
- Settings.xml
- ServiceManifest.xml
ApplicationManifest.xml
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助某些人,但是我会阅读Guest Executable文档以了解我错过的任何内容.1
有些事情需要在服务结构节点上获得精简权限,这就是你如何使服务无法运行.cmd,.bat,Python.exe等.以下编辑来自ApplicationManifest.xml
....
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="MyGuestExecutablePkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="Setup" />
<RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="Main" />
</Policies>
</ServiceManifestImport>
....
Run Code Online (Sandbox Code Playgroud)
第一个策略是提升SetupEntryPoint,而第二个策略是复制EntryPoint,也就是说.你的服务.确保在ApplicationManifest.xml的底部定义Principals.
</DefaultServices>
<Principals>
<Users>
<User Name="SetupAdminUser">
<MemberOf>
<SystemGroup Name="Administrators" />
</MemberOf>
</User>
</Users>
</Principals>
</ApplicationManifest>
Run Code Online (Sandbox Code Playgroud)
我作为Flask Api运行我的服务,因为这非常容易.所以"所有"Service Fabric会启动Flask API,然后确保它在崩溃时重新启动.这样可以轻松地测试和验证部署的哪个部分崩溃,以及是否通过执行来启动和运行
netstat -na | find "5000"
Run Code Online (Sandbox Code Playgroud)
在节点上验证api确实启动并运行.
在这之后,您当然需要在Azure门户中为服务结构集群打开负载balanser中的端口.
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |