Symfoware

Symfowareについての考察blog

AWS Elastic BeanstalkでCodeIgniter 3を動作させる

Elastic BeanstalkでCodeIgniter 3を動かすまでのメモです。


AWS Elastic Beanstalk



管理コンソールから「Elastic Beanstalk」を選択。

604_01.png


「PHP」を選択して、「Launch Now」をクリック。

604_02.png


インスタンスを作成中...
ここでロードバランサーの設定や、EC2の起動が行われます。

604_03.png


しばらく待つと、インスタンスの生成が終了します。
「Default-Enviroment」のリンクをクリックすると、サンプルページが表示されます。
これはお手軽。

604_04.png

604_05.png



プログラムのデプロイ



こんなphpプログラムを作成しました。

・index.php


  1. <?php phpinfo();




phpinfoを表示するだけです。

「Upload and Deploy」ボタンをクリックします。

604_06.png


ファイルの選択で、作成したindex.phpを指定。
「Deploy」をクリックします。

604_07.png


デプロイ失敗です。
こんなエラーになりました。


[Instance: i-8a2e5379 Module: AWSEBAutoScalingGroup ConfigSet: null]
Command failed on instance. Return code: 1
Output: [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/01_unzip.sh] command failed with error code 9:




どうやら、アップロードするファイルはzip圧縮したものじゃないと
いけないようです。

1ファイルだけですが、index.phpをzip圧縮。
再度デプロイを実行すると、phpinfoが表示されました。


64bit Amazon Linux 2014.09 v1.2.0 running PHP 5.5
Apache 2.0な環境で動いているようですね。

MySQLやPostgreSQLへの接続ドライバ。
ImageMagickなんかもデフォルトでインストールされています。






CodeIgniterのデプロイ



なんとなく使い方はわかりました。
CodeIgniterの資産を用意。

Apacheで動いていることがわかったので、こちらを参考に
.htaccessを作成します。

CI: Simple .htaccess using mod_rewrite for CodeIgniter


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>




アップロードしたいフォルダをzipで圧縮します。

604_08.png


再度デプロイすると、あっさりCodeIgniterが動いてくれました。

604_09.png





アプリケーションの削除



アプリケーションを動作させていると課金されますので、
使い終わったら削除します。

[Actions] - [Terminate Enviroment]を選択。

604_10.png


警告が表示されます。
「Terminate」をクリック。

604_11.png


これでアプリケーションが削除出来ました。





ebコマンドによるデプロイ



毎回zipファイル作ってdeployは面倒だなと思い、コマンドによるデプロイを調べてみました。

「eb」というPython製のコマンドラインインターフェースが用意されています。
EB CLI 3.x 入門

easy_installでインストールします。
※使用しているOSはUbuntu 14.04です。


$ sudo easy_install awsebcli





この先、AWS Access Key IDなどを要求されるかもしれません。
こちらの設定を行っていたため、特に何も要求されませんでした。
はじめてのアマゾンウェブサービス(AWS) コマンドでEC2インスタンスを起動する


デプロイしたいソースのあるディレクトリに移動。


$ cd ~/dev/aws/beanstalk_sample/




初期化を行います。


$ eb init -p PHP




上記のコマンドを実行すると、「.elasticbeanstalk」というディレクトリが作成されました。
また、管理コンソール上ではフォルダ名と同じ名前でアプリケーションが作成されます。

604_12.png



以下のコマンド一行で「dev-env」というアプリケーションを作成。
デプロイを実行してくれます。


$ eb create dev-env



604_13.png



eb openで対象のアプリケーションのURLをブラウザで開いてくれます。


$ eb open




604_14.png


dev-envという名前でEC2インスタンスが起動していますね。

604_15.png




アプリケーションを更新してみます。
Sampleというコントローラーを作成。


・controller/Sample.php


  1. <?php
  2. class Sample extends CI_Controller {
  3.     public function index() {
  4.         echo 'hello world!';
  5.     }
  6. }




デプロイコマンドを実行します。


  1. $ eb deploy





変更内容が反映されました。

604_16.png


アプリケーションの削除は以下のコマンドです。


$ eb terminate

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2015/03/28(土) 18:56:07|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<AWS 課金発生時にアラートメールを送信する | ホーム | Ubuntu 14.40 + NativeScript Androidアプリケーションをエミュレーターで実行する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1699-52a9a4eb
この記事にトラックバックする(FC2ブログユーザー)