2010/09/20

Amazon EC2でLAMP(Linux/apache/MySQL/php)環境を構築する

Amazon Web Services

amazon EC2に新しくMicro instanceが登場した。



Announcing Micro Instances for Amazon EC2


AWS Management Console  Micro Instance

料金は$0.02/1時間~と個人であれこれやるには超オススメ!
個人的にFacebookアプリを作ろうと思っていたので、使ってみることにしました。
環境は、Linux+apache+MySQL+PHP(+symfony)で作ってみます。
しかも、インスタンスが落ちても大丈夫なようにEBSも使ってみる。


EC2インスタンスを立ち上げる

amazon web serviceのページから
AWS Management Consoleを使って、インスタンスを立ち上げます。


なにやらAmazon Linuxなる余計なプレインストールパッケージをstripしたAMIがあったのでそれを使うことにしてみます。
Getting Started on Fedora Core 8 (AMI Id: ami-99f58acb)を使います。


Fedoraはrootユーザで入れた。
この前つかったAmazon Linuxではrootではなくec2-userでログインする仕様になっていた。


  • Apache,MySQL,phpをインストールする
  • yum -y install httpd php mysql mysql-server php-mysql
  • インスタンス起動時にapacheとMySQLも起動するようにする
  • /sbin/chkconfig httpd on
    /sbin/chkconfig mysqld on
    
  • apacheとMySQLを起動する
  • /sbin/service httpd start
    /sbin/service mysqld start
    
  • phpinfoで動作確認する。DocumentRootにphpファイルを作成。
  • echo "<?php phpinfo(); ?>" > /var/www/html/index.php
    

    ブラウザから、アクセスして動作確認する

    (e.g.) http://ec2-xxx-xx-xx-xxx.ap-southeast-1.compute.amazonaws.com/index.php

    うん、きちんとphpinfoが表示されている。 動作確認.........ok

    停止するときは、こんな感じ

    /sbin/service httpd stop
    /sbin/service mysqld stop
    

MySQLのセキュリティ関連の設定をする

  • まずはrootユーザのパスワード変更
  • * 'new-password'部分は自分の好きなパスワードに変更してください。
    mysqladmin -u root password 'new-password' 
    
  • 先ほど設定したパスワードでログインできることを確認する
  • mysql -u root -pnew-password
    
  • testデータベースの削除
  • mysql> DROP DATABASE test;
    
  • 匿名ユーザのアクセスを不可にする
  • mysql> DELETE FROM mysql.user WHERE user = '';
    FLUSH PRIVILEGES;
    

    これで終わり。

    mysql> exit
    Bye
    
  • EBSに大事そうなデータを移動する
  • AWS Management ConsoleからEBSを作成。10GBくらいでいいか。 ELASTIC BLOCK STORE(EBS)は EC2のインスタンスにマウントできる仮想ストレージデバイスのことです。 Amazon EBSを活用してデータをバックアップしてみよう ~Amazon EC2/S3環境構築のすべて~ /dev/sdpにAttachしてみる。 待つこと1分弱。コンソールでマウントされていることを確認する。

    ls /dev/sdp
    

  • 立ち上げたインスタンスにEBSをマウントする
  • /ebs1というディレクトをつくり、そこにEBSをマウントします。

    mkfs.ext3 /dev/sdp
    
    mkdir /ebs1
    
    mount -t ext3 /dev/sdp /ebs1
    
    マウントされていることを確認..........ok
    df -h
    

  • 大事そうなデータの移動
  • まずは、apacheとmysqlを停止しておく。

    /sbin/service httpd stop
    /sbin/service mysqld stop
    
    ディレクトリをごっそり移動。
    mv /etc/httpd /ebs1/httpd
    
    替わりにシンボリックリンクを作成
    ln -s /ebs1/httpd /etc
    
    ドキュメントルートも同じく移動。
    mv /var/www /ebs1/www
    ln -s /ebs1/www /var/
    
    httpdを起動する。
    /sbin/service httpd start
    

    このインスタンスをつぶして、 新しいインスタンスを起動したときには ディレクトリを削除し、リンクをはるだけ。

    rm -rf /var/www
    ln -s /ebs1/www /var/
    

    MySQLも同様にする

    # MySQLの停止
    /sbin/service mysqld stop
    
    mv /var/lib/mysql /ebs1/mysql
    ln -s /ebs1/mysql /var/lib
    
    # 起動
    /sbin/service mysqld start
    
    新しいインスタンスにした場合は 上記同様にディレクトリを削除し、リンクをはりなおす。
    rm -rf /var/lib/mysql
    ln -s /ebs1/mysql /var/lib
    

  • ユーザディレクトリなどもEBSに保存しておく
  • groupadd contentsuser
    useradd mikitimo -d /ebs1/home/mikitimo -g contentsuser -p'mypassword'
    

参照: Tutorial: Running a php/mySQL server on EC2 with EBS



さて、次はSymfony+sfFacebookPluginでfacebookアプリを構築してみるよ!

0 件のコメント:

コメントを投稿