aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

訳:PHPの Webサイトパフォーマンス

これはひと通り押さえておく必要あるな。

Website Performance: PHP at Monitor Everything IT: Website, Server, Application, Network. 100% Free!

====

ボトルネックの検出

キャッシュを使う

コンパイルするか、インタプリタを使うか

コンテンツを削減する

マルチスレッドとマルチプロセス

文字列

正規表現

イテレーションの構築(for, while)

セレクションの構築(if, switch)

関数と引数

オブジェクト指向の構築

セッションの取り扱い

型のキャスト

圧縮

エラーハンドリング

定義、スコープ

メモリリーク

車輪の再発明をするな

コードの最適化

DASDの替わりにRAMを使う

サービスを使う

インストールと設定

その他

Amazon DynamoDB : PHPから使う

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/GettingStartedBeforeYouBegin.html

まずは、AWS SDK for PHPをセットアップ 

注意: 以下、AWS SDK for PHP 1.x の説明。 2013.10時点では2.xなので、気休め程度に。( SDK for PHP1.xから2.xへのマイグレーションガイドはこちら )

パッケージインストール

$ sudo yum install php httpd mysql mysql-server php-mysql php-pear php-xml
$ sudo pear channel-discover pear.amazonwebservices.com
$ sudo pear install aws/sdk

セキュリティ設定

$ sudo cp /usr/share/pear/AWSSDKforPHP/config-sample.inc.php /usr/share/pear/AWSSDKforPHP/config.inc.php
$ sudo vi /usr/share/pear/AWSSDKforPHP/config.inc.php
$ sudo diff /usr/share/pear/AWSSDKforPHP/config-sample.inc.php /usr/share/pear/AWSSDKforPHP/config.inc.php
57c57
<               'key' => 'development-key',
---
>               'key' => 'xxxxx',
61c61
<               'secret' => 'development-secret',
---
>               'secret' => 'xxxxx',
68c68
<               'default_cache_config' => '/tmp/cache/',
---
>               'default_cache_config' => '',

キャッシュディレクトリ作成

$ sudo mkdir /tmp/cache
$ sudo chmod -R 777 /tmp/cache

次に、exampleのテーブルを作成する。

  • テーブル名:ProductCatalog (Id,....)
  • Primary Keyタイプ:Hash
  • Hash属性名・タイプ: Id (Number)
  • Range 属性名・タイプ:N/A
  • スループット: R=10, W=5

APIはここ AWS SDK for PHP 1.5.2 

EclipseVisual StudioのAWS Explorerでテーブル内のデータをビジュアルに視ることができる。( http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/LoadData.html )

とりあえず接続するにはエンドポイントにつなぐ。2012.2.10時点では、US-EASTのみなので、https://dynamodb.us-east-1.amazonaws.com を set_hostnameする。

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/SettingUpTestingSDKPHP.html

 

とりあえず、サンプルのデータを流し込む。

 

AWSデモ チートシート

1. インスタンス起動 (セキュリティグループは default)

2. インスタンス起動待ちの間にRDS起動

  small, 100G, samurai: samurai/samurai

3.インスタンスSSH接続

 $ sudo yum install httpd php mysql php-mysql

  $ sudo service httpd start

  $ sudo chmod 777 /var/www/html

4. サンプルアプリをデプロイ

  $ wget http://ec2-175-41-201-96.ap-northeast-1.compute.amazonaws.com/sample.tgz

  $ tar zxvf 

 $ cp sample/* /var/www/html/html/ 

  $ vi /var/www/html/index.html

  $ vi /var/www/html/index.php

  ブラウザで確認

5. RDSに接続

 $ mysql -usamurai -psamurai -h xxx samurai

  mysql> status;

  mysql> quit;

6. サンプルアプリを実行

  vi sample/sample.sql

  $ mysql  -x s x s < sample.sql

  $ mysql  -x s x s

  mysql> desc comment;

  mysql> select * from comment;

  mysql> quit;

  $ vi /var/www/html/sample.php

  ブラウザで確認

7. 間に、RDSのスナップショットを作っておく

8. 間に、ロードバランサーを作っておく(samurai-lb)

9. インスタンスstop & AMI作成(samurai-ami) 

10. インスタンスを2個起動する(web1,web2)

11. ロードバランサーに2このインスタンス(web1,web2)を加える

12. Route53でEBLにCNAMEを与える (samurai.demo-a.ws)

12. インスタンスを起動する(dev1)

13. RDSを起動する(dev)