2

我使用 Eclipse 和 PHP 插件来创建和配置我的 PHP 项目,以便在 Windows Azure (WA) 上部署它们。但是,我已经安装了 WA SDK 1.7(6 月 7 日),它与 Eclipse 和插件不兼容,所以我不得不使用突击队。我决定在 Eclipse 中创建项目(具有 Web 角色和工作者角色)并尝试运行以下突击队来重新创建 cscfg 文件和 .csx 文件夹,然后在计算模拟器上运行它......

 cspack ServiceDefinition.csdef /generateConfigurationFile:ServiceConfiguration.cscfg /copyonly

...但它会产生以下错误...

Error : CloudServices38 : The entrypoint dll is not defined for worker role MyPhpProj_MyWorkerRole.

谢谢你的建议。

4

1 回答 1

8

在 Web 和 Worker 角色中,您确实需要提供角色入口点或程序入口点。而且我知道在自定义工作角色中没有工作角色 DLL,但是您可以使用 PHP.EXE 或 Java.exe 或 Nodejs.exe 作为 ProgramEntryPoint。

解决此问题的方法是将 ProgramEntryPoint 与 Windows Azure Worker Role 结合使用。我将为您提供一个如下示例,说明如何使用它,以便您可以在 Windows Azure PHP 应用程序中使用它:

因此,如果您的工作角色名称为“TestWorker”并且文件夹 TestWorker 包含您的 PHP.EXE 以及其他文件,并且您的应用程序文件夹如下所示:

在此处输入图像描述

现在您还可以编辑/添加您的 ServiceDefinition.cscfg 以包含正确的 WorkerRole 设置以及 ProgramEntryPoint,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WorkerRoleApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
 <WorkerRole name="TestWorker" vmsize="Small">
   <Runtime executionContext="limited">
     <EntryPoint>
      <ProgramEntryPoint commandLine="php.exe" setReadyOnProcessStart="true" />
     </EntryPoint>
   </Runtime>
   <Endpoints>
        <InputEndpoint name="PhpHttpIn" protocol="http" port="80" />
   </Endpoints>
  </WorkerRole>
</ServiceDefinition>

最后,您可以使用如下 CSPACK 命令来构建您的包,然后在 Compute Emulator 中进行本地测试:

cspack ServiceDefinition.csdef /role:TestWorker;TestWorker /copyOnly 
   /out:WorkerRoleApp.csx /generateConfigurationFile:ServiceConfiguration.cscfg

最后结果如下所示:

在此处输入图像描述

于 2012-06-13T19:52:12.337 回答