5

Web コンテナー (現時点では Jetty) 内で実行され、Web サービスを介して要求に応答する Java アプリケーションがあります。

ここで、できるだけ簡単にアプリケーションの新しいバージョンを Amazon EC2 インスタンスにデプロイ (WAR ファイルをサーバーに転送し、そこに新しいバージョンをインストール) できるメカニズムを作成したいと考えています (理想的には、いくつかの Maven コマンドを実行することによって)。 .

バージョン管理にBeanstalkを使用しており、展開サポートを提供していますが、それを自分のシナリオに適用する方法がわかりませんでした。

Maven (Beanstalk の有無にかかわらず) を使用して Web アプリケーションを Amazon EC2 にデプロイする方法に関するチュートリアルはありますか?

更新 1 (10.04.2013): Beanstalk のスタッフから、SSH デプロイメントを使用するように勧められました。

更新 2 (11.04.2013 23:17 MSK):

Maven Cargo プラグインを使用する最初の試みで、次のものを my に追加しましたpom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    [...]
    <build>
    [...]    
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <configuration>
                    <container>
                        <containerId>Heaven7</containerId>
                        <type>remote</type>
                    </container>
                    <configuration>
                        <type>runtime</type>
                        <properties>
                            <cargo.remote.username>myusername</cargo.remote.username>
                            <cargo.remote.password>mypassword</cargo.remote.password>
                        </properties>
                    </configuration>

                    <!-- Deployer configuration -->
                    <deployer>
                        <type>remote</type>
                    </deployer>

                    <deployables>
                        <deployable>
                            <groupId>ru.mycompany</groupId>
                            <artifactId>my-product</artifactId>
                            <type>war</type>
                        </deployable>
                    </deployables>
                </configuration>
            </plugin>
        </plugins>
    </build>
    [...]
</project>

次に、実行mvn cargo:deployして次の出力を得ました。

[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.3.3:dep
oy (default-cli) on project [...]: Execution default-cli of goal org.codeh
us.cargo:cargo-maven2-plugin:1.3.3:deploy failed: Cannot create configuration.
here's no registered configuration for the parameters (container [id = [Heaven7
, type = [remote]], configuration type [runtime]). Actually there are no valid
ypes registered for this configuration. Maybe you've made a mistake spelling it

2 つの質問:

  1. どうすれば修正できますか?
  2. Tomcat コンテナーのアドレスはどこで指定できますか?

更新 3 (12.04.2013 22:36 MSK):

Cargo プラグインに関連するセクションを次のように変更しました。

    <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.3.3</version>
        <configuration>
            <container>
                <containerId>tomcat7</containerId>
                <type>remote</type>
            </container>
            <configuration>
                <type>runtime</type>
                <properties>
                    <cargo.remote.username>myuser</cargo.remote.username>
                    <cargo.remote.password>mypassword</cargo.remote.password>
                    <cargo.hostname>ec2-NN-NNN-NN-NN.compute-1.amazonaws.com</cargo.hostname>
                    <cargo.protocol>http</cargo.protocol>
                    <cargo.servlet.port>8080</cargo.servlet.port>
                </properties>
            </configuration>

            <!-- Deployer configuration -->
            <deployer>
                <type>remote</type>
            </deployer>
            <deployables>
                <deployable>
                    <groupId>ru.mycompany</groupId>
                    <artifactId>myproduct</artifactId>
                    <type>war</type>
                </deployable>
            </deployables>

        </configuration>
    </plugin>
</plugins>

次に、実行mvn cargo:deployして次の出力を得ました。

[ERROR] Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.3.3:depl
oyer-deploy (default-cli) on project ccp-server: Execution default-cli of goal o
rg.codehaus.cargo:cargo-maven2-plugin:1.3.3:deployer-deploy failed: Cannot creat
e configuration. There's no registered configuration for the parameters (contain
er [id = [tomcat7], type = [remote]], configuration type [runtime]). Actually th
ere are no valid types registered for this configuration. Maybe you've made a mi
stake spelling it? -> [Help 1]

更新 4 (12.04.2013 23:12):

pom.xmlは再び次のように変更しました:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.3.3</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <type>remote</type>
        </container>
        <configuration>
            <type>runtime</type>
            <properties>
                <cargo.remote.username>myuser</cargo.remote.username>
                <cargo.remote.password>mypassword</cargo.remote.password>
                <cargo.hostname>ec2-NN-NNN-NN-NN.compute-1.amazonaws.com</cargo.hostname>
                <cargo.protocol>http</cargo.protocol>
                <cargo.servlet.port>8080</cargo.servlet.port>
            </properties>
        </configuration>

        <!-- Deployer configuration -->
        <deployer>
            <type>remote</type>
        </deployer>
        <deployables>
            <deployable>
                <groupId>ru.mycompany</groupId>
                <artifactId>myproduct</artifactId>
                <type>war</type>
            </deployable>
        </deployables>

    </configuration>
</plugin>

次に、次のコマンドを使用して、アプリケーションをサーバーにデプロイしました。

  1. mvn clean
  2. mvn install
  3. mvn cargo:deploy

<packaging>このシーケンスを機能させるには、を に設定する必要があることに注意してくださいwar(そうしないと、奇妙なエラー メッセージが表示される場合があります)。

4

3 に答える 3

0

Charlee と Dmitri が先に答えたように、通常は cargo プラグインが最も簡単な方法です。その際、EC2 インスタンスを実際に作成する方法を検討することもできます (多くのシナリオでは、開発/テストのシナリオと本番のシナリオの両方で)、常に新しいインスタンスを作成する必要があります (これに関するhttp:/の Martin Fowler の考えを参照してください)。 /martinfowler.com/bliki/PhoenixServer.htmlおよびhttp://martinfowler.com/bliki/SnowflakeServer.html

これを行うための興味深いソリューションが Ravello Systems によって提供されています。これは基本的に、クラウド内にアプリケーションの本格的なレプリカを簡単に作成できるものであり、自動化に役立つ maven プラグインも実装しています。http://www.ravellosystems.com/blog/ravello_maven_plugin/をご覧ください。環境の作成からアプリケーションのデプロイ、テスト、分解まで、プロセス全体を maven でエンドツーエンドで結び付けることができます。 .

于 2013-12-16T15:12:46.847 に答える