1

Azure ワーカー ロールのホームを見つける必要がある Ruby on Rails アプリケーションがあります。

私は現在、バッチ ファイルを使用してアプリケーションの展開を自動化しています。これは、Apache と Ruby のインストーラーを取得して実行し、適切なディレクトリに RoR アプリをドロップするファイルです。バッチ スクリプトが終了すると、Apache はポート 80 経由でアプリケーションとの間でサービスを提供します。

私は Azure が初めてで、これを行う方法を理解しようとしています。

私の理解では、ここには 2 つのオプションがあります。Blob Storage のインストール ファイルを使用する OnStart か、スタートアップ スクリプトです。後者の方法はわかりませんが、作成したばかりの新しい Azure プロジェクトの WorkerRole.vb ファイル内に onStart メソッドを配置しました。

私の質問: OnStart を使用して (バッチ スクリプトを使用して) アプリケーションを展開することをお勧めしますか? もしそうなら、スクリプトをプロジェクトに統合するにはどうすればよいですか? また、BLOB ストレージにファイルを保存して参照するにはどうすればよいでしょうか。

これらは非常に高度な質問であることは承知しています。入力または提案された読書は非常に役立ちます。関連するリソースをグーグル/検索しようとしましたが、あまり見つけることができませんでした. お時間をいただきありがとうございます!

4

2 に答える 2

2

OnStart() 関数内にいる場合は、IP バインドなどのロール構成を行う方が適切ですが、ランタイムをインストールし、アプリケーション zip をダウンロードし、ロール固有の設定を構成する場合は、スタートアップ タスクを使用するのが最適です。私のブログにアクセスしてくださいWindows Azure: スタートアップ タスクまたは OnStart()、どちらを選択しますか? それについてもっと学ぶために。

あなたの場合、スタートアップタスクを使用するのが最善です。以下のようにできること:

  1. ROR パッケージを zip で作成し、Windows Azure Blob Storage に配置します
  2. 以下を実行する Cmmmand バッチ ファイルを作成します。

    2.1 ZIP をダウンロードする

    2.2 コンテンツを特定の場所に解凍する

    2.3 状態を AZure Blob Storage に戻す (オプション)

  3. OnStart() 関数では、ROR を構成するだけです。

TCP エンドポイント名「RORWeb80」がポート 80 を使用するように設定されている場合、コードは次のようになります。

TcpListener RoRPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["RORWeb80"].IPEndpoint);
RoRPortListener.Start();

まったく同じことを行うTomcat/Java ベースのワーカー ロール用のサンプル アプリを作成しました。したがって、Tomcat ZIP ファイルを ROR ZIP に置き換えて、コードを正確に再利用するだけです。

于 2012-06-14T17:34:09.120 に答える
1

管理者レベルのアクセス (レジストリの変更、msi のインストールなど) を必要としない限りOnStart()、スクリプトの起動を含む からセットアップを行うことができます。プロジェクトに起動スクリプトを含めるだけです (Copy Local を true に設定することを忘れないでください)。

スタートアップ スクリプトについても同様です。cmd ファイルを呼び出すと、シーケンスが実行されます。また、権限を昇格させれば、インストーラーの実行、レジストリ設定の変更、カスタム パフォーマンス カウンターのインストールなどを行うことができます。

どちらの場合でも、Apache zip、Ruby インストーラーなどを BLOB ストレージに保持し、起動時にそれらをローカル ストレージにダウンロードできます。これにより、デプロイ内のすべてをバンドルする必要がなくなり、いくつかの利点が得られます (再デプロイせずに ruby​​ / apache を更新できる、パッケージ サイズが縮小されるなど)。

スタートアップ スクリプトを使用して Tomcat を設定する基本を示すサンプル アプリが codeplex にあります。もう 1 つの例として、Java 用の Eclipse Windows Azure プラグインを介してインストールされたスクリプトを見ることができます。これらのスクリプトは非常に似ています。重要なのは、blob ストレージからファイルをダウンロードしてから解凍する何らかの方法を用意することです。私が参照した codeplex プロジェクトは、単純な BLOB のダウンロードを行うサンプル アプリを指しています。Eclipse パッケージは、.vbs アプリで同様の機能を提供します。これは、Eclipse ベースのプロジェクトからの私のスクリプトの 1 つのスニペットです。

SET SERVER_DIR_NAME=apache-tomcat-7.0.25
SET WAR_NAME=myapp.war
rd "\%ROLENAME%"
mklink /D "\%ROLENAME%" "%ROLEROOT%\approot"
cd /d "\%ROLENAME%"
cscript /NoLogo util\unzip.vbs jre7.zip "%CD%"
cscript /NoLogo util\unzip.vbs tomcat7.zip "%CD%"
copy %WAR_NAME% "%SERVER_DIR_NAME%\webapps\%WAR_NAME%"
cd "%SERVER_DIR_NAME%\bin"
set JAVA_HOME=\%ROLENAME%\jre7
set PATH=%PATH%;%JAVA_HOME%\bin
cmd /c startup.bat

codeplex プロジェクトには、似たようなスクリプトがあります。

忘れないでください: ロールの入力エンドポイントを設定する必要があります (ロール プロパティの一部)。

BLOB を BLOB ストレージに入れるには、無料のツール (Clumsy Leaf CloudXplorerなど) と有料のツール (Cerebrata の Cloud Storage Studio など) の両方があります。

BLOB をローカル ストレージにダウンロードするには、(OnStart から) 数行の .net コードを記述するか、codeplex プロジェクトで指定されているユーティリティを使用するだけです。

于 2012-06-14T17:22:58.003 に答える