Log in




LAMP環境セットアップメモ PHP5.4編

October 16th, 2012 by

使ったAMIは、amzn-ami-pv-2012.09.0.x86_64-ebs (ami-4e6cd34f)

sudo su
    1  yum update
    2  yum install mysql mysql-server php54 php54-mysql php54-mcrypt php54-mbstring
    3  /etc/init.d/httpd start
    4  /etc/init.d/mysqld start

LAMP環境セットアップメモ PHP5.3編

October 16th, 2012 by

使ったAMIは、amzn-ami-pv-2012.09.0.x86_64-ebs (ami-4e6cd34f)

1  yum update
2  yum install mysql mysql-server httpd php php-mysql php-mcrypt php-mbstring
3  vi /etc/php.ini
4  /etc/init.d/mysqld start
5  /etc/init.d/httpd start
6  wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.5.3/phpMyAdmin-3.5.3-all-languages.zip
7  unzip phpMyAdmin-3.5.3-all-languages.zip
8  mysql -u root mysql

rsyncで公開鍵認証

October 16th, 2012 by

rsyncで、公開鍵認証を指定する方法。ソース側のサーバに、公開鍵認証で接続しています。

コピー元の指定の最後のスラッシュを忘れると、ディレクトリabcが/var/www/html/abcの中に作成されてしまうのでご注意下さい。

rsync -av -e "ssh -i /root/hogehoge.pem" [email protected]:/var/www/html/abc/ /var/www/html/abc/

receiving incremental file list
8bc32d2b0a/
8bc32d2b0a/821985286d/
8bc32d2b0a/821985286d/abc.html

sent 714 bytes  received 704554 bytes  1410536.00 bytes/sec
total size is 97557392  speedup is 138.33

Memcachedのステータス確認

October 14th, 2012 by

Memcachedのステータス確認はphpMemcachedAdminがお手軽そう。

詳細表示

リアルタイム表示(5秒間隔で更新)

このサイトのMemcachedのステータスはこちら

MemcachedでPHPのセッション管理 on AmazonEC2

October 13th, 2012 by

複数のWebサーバでロードバランス環境を構築する際には、セッション情報の保持を考慮しなければならない。初期設定のPHPは、セッション情報をファイルとして保持しているため、異なるWebサーバに処理が割り振られるとセッション情報が消失してしまうからだ。こういった環境においてセッションを維持する方法は2つある。

セッション維持方法

  1. 同じユーザは同じサーバに割り振る
  2. セッション情報をサーバ間で共有する

1の手法は、Webサーバに手を加えなくて良い反面、Webサーバが故障した場合はセッション情報が失われる。2の方法はセッション情報の共有コストが発生するが、サーバ故障による障害を防げるし、負荷状況に応じて動的にWebサーバの数を増減させることもできる。そこで、2の方法をつかってセッション情報の共有を試してみた。幸い、PHPにはmemcachedを用いたセッション管理機能がある。この機能を適切に設定するだけで、2の方式のセッションを実現できる。

0. 前提知識

  • Linuxの操作に習熟していること。
  • 自力でLAMP環境をそれっぽく構築できること。
  • AmazonEC2のアカウントを所有していること。
  • 数十円程度の課金に我慢できること。

1.セキュリティーグループの設定作成
外部から22(SSH)と、80(HTTP)への接続を許可、セキュリティーグループ内で11211(Memcached)の通信を許可。実験にしか使わないなら、22と80は自分のIPだけ許可すると安全。

11211       sg-12345678 (quick-start-1)
22 (SSH)    0.0.0.0/0
80 (HTTP)   0.0.0.0/0

2. インスタンスを起動
EC2 DashboardAmazon Linux AMI 2012.09を2台起動。実験だけならt1.microがお手軽。1時間2円程度。この2台は1で作成したセキュリティーグループに所属させておく。

3. セットアップし単独サーバでの動作確認
php, memcached, 接続モジュールをインストール

sudo yum install php memcached php-pecl-memcache

/etc/php.iniを編集

sudo vi /etc/php.ini
#以下の2行をコメントアウト(先頭に;を付与)
session.save_handler = files
session.save_path = "/var/lib/php/session"

/etc/php.d/memcache.iniを編集

sudo vi /etc/php.d/memcache.ini
#以下の行のコメントアウトを外す(先頭の;を除去)
;session.save_handler=memcache
#以下の行のコメントアウトを外す。?以下は除去
;session.save_path="tcp://localhost:11211?*******"
#こんな感じになる。,以降にもう一台のサーバのアドレスを指定する
session.save_path="tcp://localhost:11211"

Apacheを起動

sudo /etc/init.d/httpd start

memcachedを起動

sudo /etc/init.d/memcached start

動作確認用のスクリプトを作成

sudo vi /var/www/html/index.php
<?php
session_start();
echo @++$_SESSION["counter"]."<br>";
echo $_SERVER['SERVER_ADDR'];

ブラウザからアクセスし、カウントアップすることを確認

memcachedを停止

sudo /etc/init.d/memcached stop

ブラウザからアクセスし、カウントアップしないことを確認

全てOKなら、同様にしてもう一台もセットアップする。

4.ロードバランサの設定
Load Balancersで、Create Load Balancerから、ロードバランサを作成する。ロードバランサ名は英語で指定する。ADD EC2 Instanceで、先ほどセットアップした2台のインスタンスを指定する。

5.memcachedの接続先を指定

/etc/php.d/memcache.iniを書き換え
変更前
session.save_path=”tcp://localhost:11211″
変更後(カンマ区切りで自分以外のサーバを指定する)
session.save_path=”tcp://localhost:11211,tcp://111.222.111.222″

6.動作確認
ロードバランサのDNS Nameに表示されているアドレス(例:testing-1212930340.ap-northeast-1.elb.amazonaws.com)にWebブラウザでアクセスし、数字が正常にカウントアップされることを確認する。

サーバを交互に停止させても、数字のカウントアップが継続することを確認する。

注意:サーバ停止を検知するまで、デフォルトの設定では最大30秒かかります。ロードバランサのHealth CheckのIntervalを短くすることで切り替えの時間を短縮できます。

7.注意
リソースを確保しっぱなしだと、継続的に費用が発生するので注意!

  • 不要になったインスタンスは必ず削除すること。
  • 不要になったロードバランサは必ず削除すること。

参考
memcachedをインストールする

Elastic Load Balancing

lsコマンドでソート

September 7th, 2012 by

-t 修正時刻でソートする
-u アクセス時刻でソートする
-v ファイル名をバージョン順でソートする
-x 拡張子でソートする
-r 逆順にソートする
-U ソートしない

node.jsのインストール

April 12th, 2012 by

EC2のLinuxサーバにnode.jsをインストールしてみた。

$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/amzn1/nodejs-stable-release.noarch.rpm
$ sudo yum install nodejs-compat-symlinks npm
$ nodejs -v
v0.6.15
$ which nodejs
/usr/bin/nodejs

引数なしでnodejsを実行するとインタラクティブモードになる。

$ nodejs
> console.log("Hello" + " " + "World");
Hello World
undefined

引数にファイル名を指定して実行すると、そのファイルの内容が実行される。

$ cat hello.js
console.log("Hello World!!!");
$ nodejs hello.js
Hello World!!!

参考
Installing Node.js via package manager

yumでlocateをインストール

April 12th, 2012 by

パッケージ名がlocateではなく、mlocateなので注意。

yum install mlocate

インストール後、updatedbを実行するとlocateが使えるようになる。

AWS Elastic BeanstalkのPHPを使ってみた

March 22nd, 2012 by

【AWS発表】 AWS Elastic BeanstalkにてPHPのサポート開始、Gitを用いたデプロイも可能に
との記事が公式ブログにでてたので使ってみた。使ってみた感想は以下のとおり。

致命的な問題

US Eastしか使えません。レスポンスが重要なアプリケーションには使えないです。

インスタンス種別

インスタンスの種類はt1.microからm2.4xlargeまで選択可能。スケールアップを考えると64bitを選んでおいたほうが無難だと思う。

PHPのバージョン

PHPのバージョンは5.3しか選べない。起動して確認してみたところ5.3.10だった。メモリ使用量の上限などはElasticBeanstalkの管理画面から一括で変更可能。

スケールアウト

台数の下限上限、スケールアウト、スケールインの条件設定が出来る。ロードバランスはCookieを使った固定割当に対応しており、セッション情報の維持は大丈夫。スケールアウトした状態でも、ソースの一括更新可能。

データベースなど

データベースなどの永続性が求められる部分は、RDSやS3を使うしかなさそう。Wordpressなど、ファイルを直接アップロードしてしまうタイプのアプリケーションは、一工夫しないと正常に動作しない。

【激安】さくらのVPS リニューアル

March 21st, 2012 by

リニューアル後の価格表
メモリ2GBのプランがお買い得な印象ですね。2GBプランの初期費用が0円になるリニュアルキャンペーン開催中なので更にお買い得感があります。ディスク容量が3倍~5倍程度に増えているので、多量のコンテンツを扱うWebサイトにも安心して使えますし、このコスト感なら、データのバックアップ用として使うのも有りではないでしょうか。

RAM コア数 HDD 月額費用 初期費用
1GB 仮想2コア 100GB 980円 0円
2GB 仮想3コア 200GB 1,480円 1,980円
4GB 仮想4コア 400GB 3,980円 5,980円
8GB 仮想6コア 800GB 7,980円 9,980円

リニューアル前の価格表
512MBの手軽さに惹かれて使い始めたもののメモリ不足に悩まされている方も多いのではないでしょうか。上位プランは初期費用が気になりますね。

RAM コア数 HDD 月額費用 初期費用
512MB - 20GB 980円 0円
1GB - 30GB 1,480円 2,980円
1.5GB - 50GB 1,980円 4,980円
4GB - 120GB 3,980円 9,980円
8GB - 240GB 7,980円 19,980円