Antを使用してWindows AzureにJavaアプリケーションをデプロイする

Windows Azure + Apache Ant + Java



この記事では、人気のあるantツールの使用について説明します。



始める前に、Windows Azure-Windows Azure E-Book-Microsoft Cloud Platformに関する一般的な情報と、Windows Azure に関するロシア語の24の記事をよく理解することをお勧めします。 Windows AzureでJavaアプリケーションを操作するには、 Java用のWindows Azure Starter Kitを使用します (Eclipseユーザーには、 Eclipseプラグイン用のWindows Azureプラグインがあります )。 Java用Windows Azureスターターキットは 、ビルドプロセス中にツールとしてApache Antを使用します。ドキュメントはこちらから入手できます。ApacheAntマニュアル (ロシア語: 10ステップのAnt(make ant java)またはApache Ant 101:Instant build) Javaプログラム )。 この記事では、Windows Azureエミュレーターの使用方法について説明します。WindowsAzureサイトのダウンロードセクション (エミュレーターリンク)にインストールできます。詳細については、 デスクトップ上のWindows Azureエミュレーターを参照してください。



Java用Windows Azureスターターキット

[ ダウンロード]セクションには、プロジェクトテンプレートを含むZIPファイルへのリンクがあります-開始するには、アーカイブの内容を解凍するだけです。 標準のJavaコンポーネントに加えて、Windows Azureとの連携を容易にするプロジェクト内のファイルがいくつかあります。



Java用Windows Azureスターターキット





プロジェクトテンプレートの主要な要素
ファイル

説明
.cspack.jar Windowsazurepackage Antタスクの実装
ServiceConfiguration.cscfg Windows Azureサービス構成ファイル
ServiceDefinition.csdef Windows Azureサービス構成ファイル
package.xml antの構成ファイル(スクリプト)
WorkerRole1 \ approot \ HelloWorld.war 簡単なアップロードの実装例。
WorkerRole1 \ approot \ startup.cmd この開始スクリプト(バッチファイル)は、アップロードプロセスの開始が開始されるたびに実行されます。 このファイルには、WindowsAzureインスタンスを起動するときに実行する必要があるすべてのアクション(Javaアプリケーションサーバーのインストールや起動など、個々のコンポーネントのインストールや構成など)を実装する必要があります。
サンプル このディレクトリには、一般的なJavaアプリケーションサーバー(Tomcat、JBoss、GlassFish、Jettyなど)のインストールと設定の例が含まれています。これらの例を使用して、必要なstartup.cmd実装を作成できます。
WorkerRole1 \ approot \ run.cmd このスクリプト(バッチファイル)は、アップロードプロセスが開始されるたびに実行されます。 このスクリプトは、アプリケーションが動作状態にある間、常に実行されることになっています。 このスクリプトの終了が発生した場合、Azureはインスタンスデータを再起動する必要があると考えています。 テンプレートは、run.cmdの例を実装しており、java.exeパラメーターを指定したutil \ whileproc.cmdの呼び出しを確認できるwhile.proc.cmdスクリプト(WorkerRole1 \ approot \ utilにあります)は、java.exeプロセスがチェックされるように15秒ごとにチェックします起動しました。
WorkerRole1 \ approot \ util unzip.vbs スクリプト(ビジュアルベーシックスクリプト)は、zipアーカイブの解凍を実装します。このスクリプトは、zipアーカイブの解凍が必要な場合にstartup.cmdを実装するときに役立ちます。
WorkerRole1 \ approot \ util download.vbs スクリプト(Visual Basicスクリプト)は、指定されたURLのapprootフォルダーへの読み込みを実装します。 このスクリプトは、一部のデータをダウンロードする必要がある場合にstartup.cmdを実装するときに非常に役立ちます。たとえば、Javaサーバー配布キットなど、大規模な配布パッケージ(Windows Azureのアプリケーションパッケージにこの配布パッケージを含めないため)をダウンロードできます。 リンク(URL)は、認証を必要としないリソース(匿名アクセスのBLOBにあるデータを含む- コンテナーと BLOBへのアクセスの制限を参照)または認証に必要なすべての情報が含まれるリンクを指すことができますURLリンク自体(たとえば、 共有アクセス署名が有効になっているBLOBである場合があります )。
cert \ SampleRemoteAccessPrivate.pfx Windows Azureの実行中のインスタンスへのリモートデスクトップアクセスを許可するためにWindows Azure Webポータルからダウンロードできる証明書付きの秘密キーの例- リモートデスクトップまたはMicrosoft Windows Azureを参照してください クイックスタート。 パート4. Windows Azure仮想マシンの内部
cert \ SampleRemoteAccessPublic.cer 証明書付きの公開キーの例-このキーは、リモートデスクトップ経由でアクセスするために秘密キーと組み合わせて使用​​する必要があります-詳細については、 リモートデスクトップまたはMicrosoft Windows Azureを参照してください クイックスタート。 パート4. Windows Azure仮想マシンの内部




起動スクリプトの実装を選択する

プロジェクトテンプレートを使用すると、Tomcat、Jetty、JBoss、GlassFishなどのさまざまなJavaアプリケーションサーバーを使用できます(他のアプリケーションサーバーでも使用できますが、いくつかの設定を変更します)。 特定のJavaサーバーのテンプレートを構成するには、適切な開始スクリプト(サンプルフォルダーにあります)を取得し、このスクリプトの内容をstartup.cmdスクリプトにコピーする必要があります(したがって、その内容は完全に置き換えられます)。 さらに、起動スクリプトを変更する必要がある場合は、すぐにstartup.cmdで変更することをお勧めします



JDK.zipパッケージをapprootに追加する

例として、 Sun OracleのJDK v1.6の使用を検討しますが、一般に、Javaサーバーと同様に、別のJDKを選択する自由があります。 Windows Azureプラットフォームはコンピューティングリソースの観点から64ビットであるため、JDKの64ビットバージョンとJavaサーバーの対応するバージョンを使用する必要があることに注意してください。 これは、64ビットJDKを使用して、開発対象のコンピューター上のWindows Azureエミュレーターで開発/テストするには、64ビットWindowsが必要であることも意味します。 最初に、選択したJDKをコンピューターにインストールしてから、JDKフォルダーをJDK.zipファイルに圧縮し、アーカイブ内にJDKと呼ばれるフォルダーが1つあり、インストールされたJDKのすべてのコンテンツ(JREを含む)がこのフォルダー内にあるようにします(参照最新のJRE / JDKをzipファイルとして入手できますか )。 jdk.zipが作成されたら、それをapprootにコピーする必要があります。



プロジェクト構造内のjdk.zip





javaサーバーを含むパッケージをapprootに追加する

次のステップは、選択したJavaアプリケーションサーバーをapprootに追加することです。起動スクリプトへの変更を最小限に抑えるために、デフォルト名を使用することをお勧めします。 選択したサーバーに応じて、表に従ってJavaサーバーで圧縮アーカイブの名前をZIPに変更します
サーバー ファイル名

Apache Tomcat 7.x tomcat7.zip
GlassFish Server OSE 3.x glassfish3.zip
JBoss Application Server 6.x jboss6.zip
JBoss Application Server 7.x jboss7.zip
Jetty 7.x jetty7.zip
次に、このZIPファイルをapprootにコピーします(たとえば、tomcat7.zipはここにあります)。

プロジェクト構造のtomcat7





次のステップは、起動スクリプトのSERVER_DIR_NAME変数に正しい値を設定することです-変数は、Javaサーバーが展開されるディレクトリを指す必要があります。 原則として、ZIPファイル内のJavaサーバーがあるフォルダーの名前と同じに設定するだけで十分です。 Javaサーバーを解凍するためのフォルダー名がZIP内のフォルダー名と等しくなるように選択するのが最適な理由は、通常、Javaサーバーの異なるリリースがバージョンとディレクトリ名の間に強い関係があるためです。 サンプルの例には、もはや関係がなく、Javaサーバーの最新リリースに対応しない値が含まれているため、使用するバージョンに応じてSERVER_DIR_NAMEの値を更新することをお勧めします。 たとえば、Apache Tomcatの例(ファイルサンプル/ startupApacheTomcat7.txt)では、この変数の値はSET SERVER_DIR_NAME = apache-tomcat-7.0.22に設定されています。 このドキュメントを読むときには、バージョン7.0.22が最後ではない可能性が高いため、新しいバージョン(7.0.29など)を使用するため、SERVER_DIR_NAME変数の値を更新することを忘れないでください(この場合、SERVER_DIR_NAME = apache -tomcat-7.0.29)。 これを行わないと、アプリケーションが実行中のインスタンスに正しくデプロイすることさえできなくなる可能性が非常に高くなります。 エラーの一般的な原因は、この変数を初期化するときに余分な(目立たない)スペースを使用することです。初期化文字列は(二重引用符なしで)「SET SERVER_DIR_NAME = apache-tomcat-7.0.29」以降のように見えることに注意してください=記号、および初期化行の終了後(この場合は文字9の後)、スペースはありませんこのステップの後、ローカルWindows Azureエミュレーターでこのプロジェクトを既にビルドおよび実行しようとすることができます-Javaサーバーの目的を確認してください OSCALとHelloWorldアプリケーションが正しく設定されています。 HelloWorldアプリケーションはデフォルトのテンプレートに含まれています-approotで見ることができます。起動スクリプトのWAR_NAME値もこのアプリケーションを指します。 Javaサーバーを起動して「Hello World」アプリケーションをデプロイしようとすると、次の手順に進むことができます。別のJavaアプリケーションを接続する予定がない場合は、次のセクションをスキップして、すぐにアプリケーションのアセンブリとテストに進むことができます。



Javaアプリケーションの準備

そもそも、Windows AzureのプロジェクトはJavaプログラミングプロジェクトではなく、展開プロジェクトであるという事実に注意を喚起したいと思います(さらに、Windows AzureプロジェクトにはJavaコードがまったく含まれない場合があります)。 つまり、開発中のJavaアプリケーションがすでに存在し、そのアプリケーションを含むWARファイルを作成できることが前提となっています。 次に、Windows Azureプロジェクトにアプリケーションを含める手順は次のとおりです。
  1. アプリケーション(たとえば、MyWebApp.war)でWARファイルを作成します。
  2. このWARファイルをapprootにコピーします(このステップは、WARファイルを作成する手順に追加できます)
  3. 起動スクリプトstartup.cmdで、それに応じてWAR_NAME変数を変更します-この例ではWAR_NAME = MyWebApp.war
SERVER_DIR_NAMEの場合と同様に、注意して、=の後と行の最後(.warの後)にスペースがないことを確認してください。 コンテンツapprootは次のようになります。



プロジェクト構造内のMyWebApp.war







Windows Azureエミュレーターでビルドおよびテストする

Windowsコマンドプロンプトを開き、プロジェクトがあるフォルダーに移動して、antを実行します。

ant -buildfile package.xml







このコマンドは、antにpackage.xmlの情報を使用してアプリケーションをビルドするように指示します。 アプリケーションのサイズとコンピューターのパフォーマンスによっては、ビルドプロセスに時間がかかり、非常に長くなる場合があります。 アセンブリが成功した場合、ウィンドウに「BUILD SUCCESSFUL」というコマンドラインのメッセージが表示されます。次のようになります。



ant用のWindows Azureプロジェクトの正常なビルドの例





デフォルトでは、プロジェクトはエミュレーターへのローカルアップロード用に設定されます(設定はpackage.xmlファイルのpackagetypeパラメーターで指定されます-デフォルトではpackagetype = "local")。 プロジェクトのビルド中に、「emulatorTools」という名前のフォルダーが「deploy」フォルダーの直後に作成されます。 「emulatorFolder」フォルダーには、Windows Azureエミュレーターでより便利に作業できるようにする2つのスクリプト(バッチファイル)が含まれています-プロジェクトのアップロード、サービスの再起動、開始: 最後の手順は、エミュレータでサーバーを起動することです。
cd emulatorToolsRunInEmulator
すべてがうまくいった場合、アプリケーションはポート8080で起動されます-これは、リンクhttp:// localhost:8080 / MyWebAppをWebブラウザーで開くことで確認できます



Windows Azureのレイアウトのプロジェクト変更

プロジェクトをWindows Azureクラウドで作業できるようにするには、package.xmlファイルにいくつかの変更を加える必要があります。 このファイルには、プロジェクトをローカルまたはリモートのWindows Azureクラウド環境に配置する構成を定義する特別なwindowsazurepackageタグがあります。

<windowsazurepackage packagefilename="WindowsAzurePackage.cspkg" packagedir="${wapackagedir}" packagetype="local" projectdir="${basedir}" definitionfilename="ServiceDefinition.csdef" configurationfilename="ServiceConfiguration.cscfg"

>







packagetype属性に注意してください-この属性packagetype = "local"の値は、アセンブルされたプロジェクトの構造がWindows Azureクラウドでの使用とまったく同じになりますが、アセンブリ自体はダウンロード用にパッケージ化されませんが、逆にWindowsエミュレーター環境で実行する準備ができます紺Azure 属性packagetype = "cloud"の値の場合、アセンブリは.cspkgファイルとしてアーカイブされます。WindowsAzure Webポータルを介して、.cspkgファイルと.cscfgファイルをクラウドにアップロードし、クラウド内のアプリケーションをアップロードして実行できます。



Windows Azureでプロジェクトをレイアウトする

アプリケーションをWindows Azureクラウドに配置するのは非常に簡単です。ユーザー名/パスワードを使用してWindows Azureポータルに移動し、2つの簡単な手順を実行します。

  1. PFX証明書をダウンロードします(これがまだ行われていない場合)。 この手順は、リモートデスクトップを介してWindows Azureクラウドで実行中の仮想マシンへのリモートアクセスを有効にするために必要です。リモートアクセスは、Windows Azureでアプリケーションを開発、デバッグ、テストするときに役立ちます詳細については リモートデスクトップまたはMicrosoft Windows Azureを参照してください クイックスタート。 パート4. Windows Azure仮想マシンの内部
  2. 新しい展開を作成し、Azureアプリケーションのビルドプロセス中に作成された.cspkgおよび.cscfgファイルを読み込みます。
これらの手順を完了すると、アプリケーションはWindows Azureクラウドに正常にデプロイおよび実行されるはずです。 Windows Azureへの展開の詳細については、 Microsoft Windows Azureを参照してください クイックスタートMicrosoft Windows Azure。 クイックスタート。 パート2 次の記事では、リモートデスクトップを介したリモートアクセスを使用してWindows AzureのJavaアプリケーションを操作する方法と、.cscfgおよび.csdef構成ファイルの使用方法について詳しく説明します。



便利なリンク






All Articles