2

Eclipse と PHP 用のプラグインを使用して、PHP プロジェクトを作成および構成し、Windows Azure (WA) にデプロイします。ただし、WA SDK 1.7 (6 月 7 日) をインストールしましたが、Eclipse およびプラグインと互換性がないため、コマンドを使用する必要がありました。Eclipse で (Web ロールと worker ロールを使用して) プロジェクトを作成することにし、次のコマンドを実行して 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 ロールと共に使用することです。Windows Azure PHP アプリケーションで使用できるように、使用方法の例を以下に示します。

したがって、worker ロール名が「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 に答える