2016-04-12 7 views
2

私はこれと.ebextensionsでの.configファイル作成WEBPサポート

...予想通りしかし、それは働いていない、ELBとWEBPフォーマットの使用をサポートしよう:

commands: 
01-command: 
    command: wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-0.5.0.tar.gz 

02-command: 
    command: tar xvzf libwebp-0.5.0.tar.gz 

03-command: 
    command: cd libwebp-0.5.0 

04-command: 
    command: ./configure 

05-command: 
    command: make 

06-command: 
    command: sudo make install 

しかし、ときに私はこのエラーを得た展開:

ERROR: Command failed on instance. Return code: 127 Output: /bin/sh: ./configure: No such file or directory.

私が何か間違ったことをやっていますか? (環境:64bit Amazon Linux 2015.09 v2.0.6 PHP 5.6を実行中)

答えて

2

インストール後の展開を実行する必要があります。 AWSは実際にコマンドを実行する方法を文書化していません。投稿デプロイメントについてはここで説明します。

commands: 
    create_post_dir: 
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post" 
    ignoreErrors: true 
files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_install_libwebp.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     . /opt/elasticbeanstalk/support/envvars 
     cd $EB_CONFIG_APP_CURRENT 
     wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-0.5.0.tar.gz 
     tar xvzf libwebp-0.5.0.tar.gz 
     cd libwebp-0.5.0 
     sudo ./configure 
     sudo make 
     sudo make install 

前述のとおり、AWSは実際にElasticBeanstalkの展開後にスクリプトを実際に実行できることを実際に文書化していません。 eb-commandprocessor.logファイルで一見すると、ebはAppDeployPreHook(4 of 6)とAppDeployPostHook(1 of 2)を探します。少し「AppDeployPostHookは」それはポストの展開を実行するためのスクリプトを探していることを教えてくれること

[2016-04-13T14:15:22.955Z] DEBUG [8851] : Loaded 6 actions for stage 0.<br> 
[2016-04-13T14:15:22.955Z] INFO [8851] : Running 1 of 6 actions: InfraWriteConfig...<br> 
[2016-04-13T14:15:22.962Z] INFO [8851] : Running 2 of 6 actions: DownloadSourceBundle...<br> 
[2016-04-13T14:15:23.606Z] INFO [8851] : Running 3 of 6 actions: EbExtensionPreBuild...<br> 
[2016-04-13T14:15:24.229Z] INFO [8851] : Running 4 of 6 actions: AppDeployPreHook...<br> 
[2016-04-13T14:15:28.469Z] INFO [8851] : Running 5 of 6 actions: EbExtensionPostBuild...<br> 
[2016-04-13T14:15:28.970Z] INFO [8851] : Running 6 of 6 actions: InfraCleanEbextension...<br> 
[2016-04-13T14:15:28.974Z] INFO [8851] : Running stage 1 of command CMD-AppDeploy...<br> 
[2016-04-13T14:15:28.974Z] DEBUG [8851] : Loaded 2 actions for stage 1.<br> 
[2016-04-13T14:15:28.974Z] INFO [8851] : Running 1 of 2 actions: AppDeployEnactHook...<br> 
[2016-04-13T14:15:29.600Z] INFO [8851] : Running 2 of 2 actions: AppDeployPostHook...<br> 
[2016-04-13T14:16:42.048Z] INFO [8851] : Running AddonsAfter for command CMD-AppDeploy... <br> 


:それはこのようになります。 ebデプロイメントスクリプトはサーバーの/opt/elasticbeanstalkディレクトリにあります。もしあなたがsshを使用してそのディレクトリにlsがあれば、hooksが見つかります。cd hooksの場合は、アプリケーションデプロイメントが見つかりますディレクトリcd appdeploy、次にlsとすると、preとenactの2つのディレクトリが作成されます。これは世俗的だと思われますが、実際にはebが実行中のスクリプトを探している場所を知っているので、本当に素晴らしいです。 AppDeployPreHookスクリプトは "pre"ディレクトリから実行されているので、ebが実行されているAppDeployPostHookでコマンドポストデプロイメントを実行するには "post"ディレクトリが必要です。何をすべきかを知ったので、コマンドを書くことができます。

  1. create_post_dir最初のステップは、実際にmkdirコマンドを使用して、サーバー上の「ポスト」ディレクトリを作成しようとすることです。 mkdir "/opt/elasticbeanstalk/hooks/appdeploy/post"がそれを行いますので、それをコマンドとして作成します。
  2. ファイルファイルの設定により、ElasticBeanstalk経由でディレクトリにファイルを作成することができます。私たちの目的にはかなり便利です! filesアクションの最初の行は、作成するファイルの名前を示します。私たちはコマンドを実行するためのシェルスクリプトを作成し、あなたが望むところでそれを呼び出すことができますが、私は99から始めて、次に進むでしょう。このシェルスクリプトを "99_install_libwebp.sh"という名前で作成します。
  3. ファイル設定次の3行がファイル設定を設定します。 rootがそれらを所有していることを確認し、そこに000755dとしてください。
  4. ファイルの内容これは、作成するファイルの内容です。ストレートフォワード。あなたのシェルスクリプトをそこに入れて、あなたは行くのが良いです。
  5. 負荷環境vars私たちのスクリプトが現在のバージョンのアプリケーションを知ることができるように、eb環境変数を読み込むことを選択しました。通常は/ var/app/currentにありますが、さまざまな要因によっては別の場所にある可能性があります。私たちは、環境変数を使用して人生を少し楽にします。
  6. 私たちの現在のアプリディレクトリに変更私たちは私たちがここで行うことができるように私たちは現在のアプリケーションディレクトリにcdするつもりです。
  7. 今、我々はに変更することができ、パッケージを展開したことを、我々は
  8. 開梱パッケージディレクトリにパッケージ自明
  9. 変更したいlibwebpを取得するために利用のwgetをしたいパッケージを入手パッケージディレクトリ。
  10. 私たちが行う必要があることを実行 ./configure、make、make installを実行できるようになりました。

これだけです。ステルス的なAppDeployPostHookを使用すると、必要なポストデプロイメントコマンドをほとんどすべて実行できます。スーパーは、パッケージをインストールしたり、サービスを再起動したり、展開後に他の作業を行う必要がある場合に便利です。

私はGithubにデプロイしたコードを追加しました。 https://github.com/hephalump/testphp

注:これは、少し異なる環境で正常に動作しました。私はElasticBeanstalkを使用して、64ビットのAmazon Linux 2016.03 v2.1.0でPHP 5.6の最新環境バージョンを使用して新しいPHPアプリケーションをデプロイしました。あなたが使用している環境タイプは、私のオプションとして利用できませんでした...実際には、これはPHP 5.6で利用可能だった唯一のバージョンで、私はそれに行きました。

+0

魅力的なように働いた。どうもありがとうございました! –