Elastic Beanstalk の RDS を FuelPHP から利用

Elastic Beanstalk で構築したFuelPHPの環境から、RDSのMySQLに接続する簡単なアプリを作成します

FuelPHPの詳細は以下参照。
http://fuelphp.jp/

FuelPHPはデフォルトでdevelopment環境として設定。
配下のdb.phpを編集。

前2回の環境を引き継ぎ以下のファルを編集。

Z:¥work¥fuel¥app¥config¥development¥db.php

<?php
/**
* The development database settings. These get merged with the global settings.
*/

return array(
‘default’ => array(
‘connection’  => array(
‘dsn’      => ‘mysql:host=xxxxxxxxxxxx.cbnfywkcopki.ap-northeast-1.rds.amazonaws.com;dbname=ebdb’,
‘username’ => ‘userid’,
‘password’ => ‘passwd’,
),
),
);

前回テストで作成したテーブルのデータを取得するモデルを作成。
Model_Crudを利用。

Z:¥work¥fuel¥app¥classes¥model¥test.php

<?php
class Model_Test extends ¥Model_Crud
{
protected static $_table_name  = “test”;
}

つづいてコントローラを作成。

Z:¥work¥fuel¥app¥classes¥controller¥test.php

<?php

class Controller_Test extends Controller
{

public function action_index()
{
$data = array();
$data[‘rows’] = Model_test::find_all();
return View::forge(‘test/index’,$data);
}
}

最後にViewを作成。

Z:¥work¥fuel¥app¥views¥test¥index.php

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<title>FuelPHP AWS Beanstalk Teset</title>
</head>

<body>
<header>
<h2>FuelPHP AWS Beanstalk Teset</h2>
</header>
<div class=”container”>
<div class=”row”>
<table>
<tr><th>ID</th><th>TITLE</th><th>DETAILE</th></tr>

<?php foreach($rows as $row): ?>
<tr><td><?php echo $row[‘id’]; ?></td><td><?php echo $row[‘title’]; ?></td><td><?php echo $row[‘detail’]; ?></td></tr>
<?php endforeach; ?>

</table>
</div>
<hr/>
<footer>
<p>FuelPHP AWS Beanstalk Teset.</p>
</footer>
</div>
</body>
</html>

Gitに追加、コミットしてデプロイします。

変更を追加。

Z:¥work>git add fuel¥*

コミット。

Z:¥work>git commit -m “php test fuelphp 2”

デプロイ。

Z:¥work>git aws.push

以上で完了。
Elastic Beanstalk のURLをブラウザで参照。

http://**name***.elasticbeanstalk.com/public/index.php/test/

AWSElBe10

以上、開発としてはこのパターンの繰り返し。

Elastic Beanstalk でセキュアで、ロードバランサーでトラフィックを複数のEC2インスタンスで分散し、自動スケールアウト・インを行うサイトの開発・保守が簡単に可能。
一般的なWebサイトアプリ開発に専念するなら利用をお勧め。

但し、構成を変更して利用したい場合は面倒。
nginxへのWebサーバ変更や、その他PHPなどの細かな変更を設定し、デプロイを行う事はできるが設定の情報が少ないなどで、工数が必要。運用で試験しつつこの辺りの構成を変えたい場合などは対応工数を要確保。
カスタムAMIも調整してみたが、単純に稼働中のEC2インスタンスをAMIにして、少しだけ変更したうえで利用しても動かないトラブルに見舞われた。

基本構成から変えつつ運用するのであれば、Elastic Beanstalk に頼らず自身で構成を作成、ベースになるAMIを作成したうえで、別の手法を用いた方が良いと推測。

Elastic Beanstalk のデフォルトのEC2設定変更などについては以下参照。
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/Welcome.html

 

広告

Elastic Beanstalk で RDS(MySQL)を使う

Elastic Beanstalk で RDS(MySQL)を使うための設定です

管理コンソールの Elastic Beanstalk の Configuration 画面

AWSElBe05-s

最下部にある Data Tier に RDS の設定のリンクがある
これをクリック

AWSElBe06-s

設定画面が表示される
とりあえず試しなので、最小、最低限の構成でMySQLのDBを構築

AWSElBe07-s

Configuration 画面に戻るが、構築まで以下が表示
しばらく待ち状態

AWSElBe08-s

上記が消えて構築完了

しかし、そのままではVPC内のEC2からしかアクセスできない
VPCの設定画面で、Security group の ecurity group for RDS DB… の Inbound を解放

AWSElBe09-s

本来は接続を許可はIPを指定すべき

WindowやMacからMySQLへ接続し操作可能なツールをインストール、設定

MySQL Workbench
https://www-jp.mysql.com/products/workbench/

スクリーンショット 2014-04-17 0.05.08

管理コンソールの RDS の Instance 画面で MySQL の設定を確認し接続

接続後、デフォルトで作成されている ebdb にSQLで以下のテーブルとデータの作成

create table test(
id int,
title varchar(64),
detail text
);
insert into test values(1,’TEST01′,’Test01 detaile.’);
insert into test values(2,’TEST02′,’Test02 detaile.’);
insert into test values(3,’TEST03′,’Test03 detaile.’);

データをSQLで確認

スクリーンショット 2014-04-17 0.07.30

遠隔からElastic Beanstalk で作成したRDSのMySQLサーバにアクセスして操作ができた

 

Elastic Beanstalk でFuel PHPをデプロイ

Elastic Beanstalk でFuel PHPをデプロイしてみます

¥の半角は\で表示

先ず以下のサイトから FuelPHP 1.7.1(現時点最新)をダウンロード
http://fuelphp.com/downloads

FuelPHP については以下のドキュメントを参照
http://fuelphp.jp/docs/1.7/

ダウンロードした fuelphp-1.7.1.zip を解凍
Z:¥work に解凍したフォルダ内の
docs
fuel
public
をフォルダ毎コピー

上記をGitのリポジトリに追加
Z:¥work>git add docs¥*
Z:¥work>git add fuel¥*
Z:¥work>git add public¥*

Z:¥work¥index.php を以下に変更
<?php
header(“Location: /public/”)
//echo “Hello Beanstalk!¥n”;
?>

コミット
Z:¥work>git commit -m “php test fuelphp”

デプロイ
Z:¥work>git aws.push

Elastic Beanstalk のイベントを確認
デプロイを確認

AWSElBe01-s

トップページにアクセスするとFuelPHPのデフォルトのトップおエージが表示
AWSElBe02-s

ドキュメントページにもアクセスして無事デプロイされている事を確認
AWSElBe03-s

FuelPHPをダウンロードしてから、特段にトラブルもなく簡単にデプロイを完了!

 

Windows環境で Elastic Beanstalk を使ってデプロイ(アプリ更新)

Windows環境で Elastic Beanstalk を使ってデプロイ(アプリ更新)

¥の半角は\で表示

・参考サイト

http://www.ninton.co.jp/?p=1060
http://d.hatena.ne.jp/j3tm0t0/20120404/1333531368
http://msysgit.github.io/
http://aws.amazon.com/code/6752709412171743
*貴重な情報に多謝

・Elastic Beanstalk について

以下参考
http://www.atmarkit.co.jp/ait/articles/1106/15/news128.html
http://www.slideshare.net/shimy_net/aws-elastic-beanstalk-23314834
特にJAWS-UG大阪の清水さんの資料はお勧め

・Gitの導入

以下からセットアップファイルをダウンロード
http://msysgit.github.io/

デフォルトのままインストール

PATHの設定

コントロール パネル\すべてのコントロール パネル項目\システム
=> システムの詳細設計 => 環境変数(N) => システム環境変数(S)
Path を 編集し 末尾に C:\Program Files (x86)\Git\bin; の記述を追加。

PCを再起動

・AWS Elastic Beanstalk Command Line Tool の導入

PowerShellが必須
http://ja.wikipedia.org/wiki/Windows_PowerShell

以下からToolをダウンロード
http://aws.amazon.com/code/6752709412171743

Zipファイルを解凍し任意の場所に置く(以下 c:\bin に解凍ファイルを置いた例)

以下のセットアップの実行
C:\bin\AWS-ElasticBeanstalk-CLI-2.6.0\AWSDevTools\Windows\AWSDevTools-OneTimeSetup.bat
コマンドプロンプトが表示されてそのまま閉じたら終わり

PATHの設定
コントロール パネル\すべてのコントロール パネル項目\システム
=> システムの詳細設計 => 環境変数(N) => システム環境変数(S)
Path を 編集し 末尾に C:\bin\AWS-ElasticBeanstalk-CLI-2.6.0\eb\windows; の記述を追加。

PCを再起動

・環境の構築(Z:\work で作業する例)

C:\bin\AWS-ElasticBeanstalk-CLI-2.6.0\AWSDevTools\Windows\AWSDevTools-RepositorySetup.bat
を Z:\work にコピー、実行

コマンドプロンプトで以下作業

Z:\work>git init

Initialized empty Git repository in Z:/work/.git/

Z:\work>AWSDevTools-RepositorySetup.bat

Z:\work>git aws.config
Reading Credentials from C:\Users\kataoka\.elasticbeanstalk\aws_credential_file.
The file does not exist. You can supply credentials by creating the file or edi
ting .elasticbeanstalk/config to reference a different file.
The credential file should have the following format:

AWSAccessKeyId=your key
AWSSecretKey=your secret

AWS Access Key: *** KEY ID ***
AWS Secret Key: *** SELECT KEY ***
AWS Region [default to us-east-1]: ap-northeast-1
AWS Elastic Beanstalk Application: *** Appli Name ***
AWS Elastic Beanstalk Environment: *** Envi Name ***

Z:\work>dir
ドライブ Z のボリューム ラベルは OS です
ボリューム シリアル番号は 0475-7E6F です

Z:\work のディレクトリ

2014/04/11 16:28 <DIR> .
2014/04/11 16:28 <DIR> ..
2014/04/11 16:31 <DIR> .elasticbeanstalk
2014/04/11 16:24 140 AWSDevTools-RepositorySetup.bat
2014/04/11 16:20 35 index.php
実際の定義ファイルは以下
記載ミスはテキストエディタで直接直すのが楽

C:\Users\ログインユーザID\.elasticbeanstalk\aws_credential_file
Z:\work\.elasticbeanstalk\config

・phpの試験ファイルを作成

index.php 定版の例
<?php echo “Hello Beanstalk!\n”; ?>

・gitを使ってDeploy

Z:\work>git add index.php

Z:\work>git commit -m “php test 01″
[master (root-commit) 34b90c4] php test 01
1 file changed, 1 insertion(+)
create mode 100644 index.php

Z:\work>git aws.push
Pushing to environment: php5-env
Counting objects: 3, done.
Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
To https://…………………………………………………&#8230;
…………………………………………………………….
+ ……. -> master (forced
update)

…. は環境で表示が異なる

Z:\work>

・結果

Deploy実施前

before

Deploy実施後

 

after

デプロイのログも残されています

result

Eclips で Amazon AWS Toolkit を使う設定

Eclips で Amazon AWS Toolkit を使う設定です

AWS Toolkit for Eclipse を参考に設定します
https://aws.amazon.com/jp/eclipse/

Eclips を起動して、[ヘルプ] > [新しいソフトウェアをインストール] を開く

AWSEclips01
上記のように入力するとAmazon AWS Toolkit  を表示

AWSEclips02
全て選択して設定してみます

が、途中で以下のエラーで停止します

1 つ以上の必須項目が見つからないため、インストールを完了できません。
Software currently installed: Amazon SimpleDB Management 1.0.0.v201402141427 (com.amazonaws.eclipse.datatools.enablement.simpledb.feature.feature.group 1.0.0.v201402141427)
Missing requirement: Eclipse Data Tools Platform Amazon SimpleDB UI Plug-in 1.0.0.v201402141427 (com.amazonaws.eclipse.datatools.enablement.simpledb.ui 1.0.0.v201402141427) requires ‘bundle org.eclipse.datatools.sqltools.sqlscrapbook 1.0.0′ but it could not be found
Cannot satisfy dependency:
From: Amazon SimpleDB Management 1.0.0.v201402141427 (com.amazonaws.eclipse.datatools.enablement.simpledb.feature.feature.group 1.0.0.v201402141427)
To: com.amazonaws.eclipse.datatools.enablement.simpledb.ui [1.0.0.v201402141427]

AWS Toolkit for Eclipseのインストールエラー
http://devdev.hatenadiary.jp/

上記を参照すると、事前にDB関連のツールを入れておかなければならない様子
再度[ヘルプ] > [新しいソフトウェアをインストール] を開き

AWSEclips03
上記を選択し設定します

再会します
AWSEclips04

AWSEclips05
途中このメッセージが出てきますがOKで進みます

以上であっさり設定が完了して、Eclips を再起動します
再起動したらすぐ AWS の Access Key を聞いてきます

AWSEclips06
すでにアカウントは作っていますので、existing credentials のリンクをクリックしてキーを作成

AWSEclips07
ページがかわったとの事、新しい、、、のリンクをクリック

AWSEclips08
キーを作成します

AWSEclips10
作ったキーはファイルでダウンロードし、必ず非公開な場所で保管
Eclipsの画面に戻ってキーを登録

AWSEclips11
下にAWS Exproler が表示されていて、直感的に操作できます

AWSEclips12
EC2のインスタンスも覗けます!

その他、DynamoDBやS3なんかも直感的に操作しやすくて良い!

で、一番確認してみたかった Elastic Beanstalk のPHPを試すと

AWSEclips13
あらら、、、未対応ですね。(^^;;

Mac で OpneCV を試すための情報源

OpenCV を MAC で試すための情報源です

「キリンを召還するブログ。」の記事を参考にしました。

【OpenCV】OpenCV2.4.7をMacにインストールしてサンプルを動かしてみる
http://makers.hatenablog.com/entry/2014/01/05/172601

特段追記するような事もなく、この内容どおり操作します。

スクリーンショット 2014-04-09 1.54.08

実行結果は以下です。

スクリーンショット 2014-04-09 1.36.56

短時間で手順を掴めました。
ブロッグ作者に感謝!

以下の本を購入する事にしました。
http://www.amazon.co.jp/gp/product/4839941262/

OpenCVはレファレンスも充実しています
http://opencv.jp/reference_manual

なかでも逆引きは助かります(C++のみでCがないのが残念ですが)
http://opencv.jp/cookbook/

 

Arche Linux を NOOBS でインストール

Raspberry Pi に Arche Linux を  NOOBS を使ってインストールする手順です

・メリット

windowsmac PC があれば、簡単に綺麗な画面を見ながらインストールできます。
具体的には、ツールを使ってOSイメージファイルをコピーしなくて良い
コマンドラインで複雑なパーティション操作をしなくて済む、などです。

・必要なもの

Raspberry Pi 本体 USB電源ほか一式
Class10 のSDカード(用途に応じて容量を選択するが、大きい方が良い)
HDMI端子のあるモニタ(最近の液晶TVで代用可)
USBキーボード、マウス
ネット接続環境(必須ではないが必要なら)

・事前準備

最初にRaspberry Pi サイトから NOOBS Offline and network install をダウンロード
http://www.raspberrypi.org/downloads/
上記から、NOOBS の Download ZIP でZipファイルをダウンロード。

解凍したファイルを全てSDカードにコピー

NOOB
SDカードにコピーするNOOBSのZipファイル中身

これで準備が終了

・インストール

SDカードを差し込んで、その他各配線をして以下の写真の手順で実施してください。

P1020139
日本語にします

P1020140
Arche Linux を選択

P1020141
インストールを開始します

P1020142P1020143

P1020144
完了したら再起動

P1020146
起動しています

P1020147
起動したらユーザ root パスワード root でログイン
passwd コマンドで速やかにパスワードを変更

P1020148
ログインした画面

P1020149
df -h コマンドでHDの構成が確認できます

以上で終わりです。