技術ブログ - 毎日が成長!

‘EC2’ タグのついている投稿

EC-CUBE on AWS (インストール編)

2012年3月14日 by chiba

on

こんにちは、開発部の千葉です。
さっそくですが、EC-CUBEはご存知ですか?

PHPで開発された、国産のオープンソースECサイト用CMSで、2006年に正式版をリリースされてから
3,500以上のECサイトで利用されている、とても便利なパッケージです。

今回、私が参加しているプロジェクトで、EC-CUBEを構築・カスタマイズすることとなりました。
AWS+EC-CUBEの環境は、セミナー等で良く事例として紹介されていたので
勝手ながら環境構築手順的な情報は多々あるものだと思っていました。

しかし、実際のところは私が求めていた様な情報は多くはなく
存在しても、実運用までは想定されておらず『インストールした』で終わってしまっていました。

そこで、無いなら作ろうと思い立ち、本投稿に至りました。
AWSを上手に活用して、以下の様な環境を構築したいと考えています。

    • ELB+CloudWatch+AutoScalingによる、負荷分散+冗長化
    • RDS+MultiAZによる、データベース可用性の確保
    • S3に画像ファイルを設置することによる、スケールアウトの簡易化
    • SESの利用による、メール配信の信頼性を確保

全部やろうとすると、とても長い記事になってしまうので数回に分けてポストしようと思います。
(何回になるかな。。。)
第1回目の今回は『インストール編』とし、以下のシングル構成でEC-CUBEを動作させてみます。

1. EC2インスタンスの起動

今回は『Basic Amazon Linux AMI 2011.09(64bit)』を利用しました。
EC2インスタンス起動の手順については、割愛させて頂きます。

以降のステップでは、ec2-userにてssh接続した後の処理を記載します。


2. タイムゾーンの設定

$ sudo cp -i /usr/share/zoneinfo/Japan /etc/localtime 

3. RPMパッケージのインストール

$ sudo yum install -y php httpd php-mbstring mysql php-mysql php-gd

4. PHPの設定

$ sudo vim /etc/php.ini

『date.timezone』の設定値を変更します。

  • 編集前
  • 編集後

  • 5. RDSの設定

    ※{}内は、適切な値を入力してください。
    RDSインスタンス起動の手順については、割愛させて頂きます。
    (RDS:DB Security Groups:Descriptionにて、対象EC2インスタンスからの接続を許可してください)

    AWSアカウント認証設定ファイルの作成・編集

    $ sudo cp /opt/aws/credential-file-path.template /opt/aws/credential-file-path
    $ sudo vim /opt/aws/credential-file-path

    環境変数の追加・読込

    $ vim ~/.bashrc
    $ source ~/.bashrc

    RDSパラメータの変更
    ※{}内は、RDS:DB Parameter Groupを指定してください。

    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_client, value=utf8, method=immediate"
    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_connection, value=utf8, method=immediate"
    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_database, value=utf8, method=immediate"
    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_filesystem, value=utf8, method=immediate"
    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_results, value=utf8, method=immediate"
    $ rds-modify-db-parameter-group {DB Parameter Group} -p "name=character_set_server, value=utf8, method=immediate"
    

    6. データベースの作成

    ※{}内は、適切な値を入力してください。

    $ mysql -h eccube_db.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -u {db_user} -p
    mysql> create database eccube_db default character set utf8;

    7. EC-CUBEの設置

    $ sudo wget http://downloads.ec-cube.net/src/eccube-2.11.5.tar.gz
    $ sudo tar xvaf eccube-2.11.5.tar.gz 
    $ sudo mv eccube-2.11.5 /home/eccube

    httpd.confの編集・起動

    $ sudo vim /etc/httpd/conf/httpd.conf

  • 編集前
  • 編集後
  • $ sudo chkconfig httpd on
    $ sudo /etc/init.d/httpd restart

    8. EC-CUBEのインストール

    ※{}内は、適切な値を入力してください。
    http://{ec2:Public DNS}/install/ にアクセスし、インストール画面を表示します。

    以下、画面キャプチャを記載します。

    step1step2
    step3step4
    step5step6
    step7step8
    step9step10


    9. 接続してみる

    ※{}内は、適切な値を入力してください。

  • 管理サイト
  • http://{ec2:Public DNS}/admin/
  • ECサイト
  • http://{ec2:Public DNS}/


    10. installディレクトリの削除

    installディレクトリの削除

    $ sudo rm -rf /home/eccube/html/install

    11. RDS:MySQLのタイムゾーンについて

    RDSでは、MySQLのタイムゾーンがUTCとなっており、変更不可パラメータとなっています。
    Webサーバのタイムスタンプを利用する様に実装していれば問題ないのですが
    EC-CUBEでの実装の多くは、タイムスタンプにMySQLの『CURRENT_TIMESTAMP』を利用しています。

    この問題の解決策として、少し面倒ですがセッション確立時に『SET time_zone = ‘+9:00′;』を発行することとしました。
    具体的な修正箇所は以下のとおりです。

    $ vim /home/eccube/data/module/MDB2/Driver/mysql.php

  • 編集前
  • 編集後

  • 最後に

    以上で、EC-CUBEの動作環境は構築できました。
    RDS:MySQLのパラメータ設定、タイムゾーンの設定箇所を除けば、AWS以外の環境で構築するのと変わりはなさそうです。

    次回は『S3に画像ファイルを設置する』を書きたいと思います。

     

    JAWS SUMMIT 2012「AWSクラウドデザインパターン」コンテンツ配信編

    2012年3月9日 by sakamoto

    こんにちは、CSチームの坂本です。

    3月3日(土)に開催されたJAWS SUMMIT 2012へいってきました。JAWS SUMMITの中の「AWSクラウドデザインパターン(CDP)」の概要とその中の「コンテンツ配信編」の内容を簡単にまとめたいと思います。

    「AWSクラウドデザインパターン(CDP)」とは

    まず、今回初めて披露された「AWSクラウドデザインパターン(CDP)」とはどういったものなのでしょうか。


    『AWSを利用する場合の典型的な問題や解決方法をテンプレート化したもの』

    あらかじめAWSを利用する際の設計・運用のノウハウをまとめて、『知っている人なら暗黙知である利用方法をわかりやすく形式知化してもっとAWSを普及していこう』、という目的で制作が始まったそうです。

    「こういった場合はAWSでどういった設計・運用を行うのがよいのだろう? どういった注意点があるのだろう?」といった悩みに対して、今後助けとなるのではないでしょうか。

    「AWSクラウドデザインパターン(CDP)」はまだbeta版であり、CDPの制作者の方々のみが制作するものではなく、一般の方々にも広くパターンを募集しているそうです。

    パターンの中にはAWS特有のものではないパターンも含まれているとのことですが、既に45パターンが以下のWikiで公開されています。

    クラウドデザインパターン(CDP) Wikiページ


    クラウドデザインパターン(CDP) Facebookファンページ


    コンテンツ配信編のシナリオ

    MovableTypeを利用したブログをAWSのEC2インスタンス1台を利用してスモールスタートさせたが、まさかの大人気。その後、どう対応していくのか?といった内容です。

    規模に合わせて適用パターンを変更することでインフラ面をカイゼンしていく流れとなっています。 詳細は資料をご確認ください。以下は簡単に流れをまとめたものです。

    「AWSクラウドデザインパターン」コンテンツ配信編 資料

    コンテンツ配信編のCDP適用の流れ

    1. EC2インスタンス1台を利用
    2. Web Strageパターンを適用
    3. Direct Hostingパターンを適用
    4. Cache Distributionパターンを適用

    1. EC2インスタンス1台を利用

    • まずは仮想サーバー1台を利用するだけの一番シンプルな状態でスモールスタート。
    • その後重い動画を公開しなければならないという課題が発生。

    【課題】動画を公開することになったが、EC2のスケールアップ・スケールアウトは費用がかさむ。


    2. Web Strageパターンを適用

    • 静的コンテンツをS3上に移動していく。※S3はEC2に比べて安価。
    • まずは、動画や画像のみS3に移動。

    CDP:Web Strageパターン

    • その後、更にアクセスが増加。
    • 動画と画像以外も何か手を打ちたい。

    【課題】更にアクセスが増加。


    3. Direct Hostingパターンを適用

    • その他の静的なコンテンツ(HTML, CSS)をS3上に移動。

    MovableTypeの「スタティックパブリッシング」という機能を利用すれば、MovableTypeから静的なHTMLが生成できるので、公開する部分を全てS3に移動します。

    MovableTypeで生成されたファイルをS3に定期的にコピーする仕組みにします。

    CDP:Direct Hostingパターン

    • その後、海外のメディアでブログが話題になり、海外展開をすることになる。せっかくなので機会損失をしたくない。

    【課題】まさかの海外展開をすることに。ユーザーに近い場所からの配信を可能にしたい。


    4. Cache Distributionパターンを適用

    • CDNサービスを利用する。

    このパターンは一言でいうとAWSのCDNサービス、CloudFrontを利用するパターンです。

    CDP:Cache Distributionパターン

    資料では上記の構成に手が加えられ、3つのサブドメイン(www, data, mt)を使用してまずはwww, dataの2台のS3でCloudFrontを利用しています。CloudFrontはキャッシュが1時間消えないという問題があり、コンテンツがリアルタイムで切り替わらないので、最終形は『動画と画像のdata(S3)のみCloudFrontを利用する』、という流れになっています。

    最終形

    1. メインのブログコンテンツ:www S3(Direct Hosting)
    2. 動画・画像:data S3+CloudFront(Cache Distribution)
    3. コンテンツ管理、コメント投稿:mt EC2

    以上、かけ足で簡単に内容をまとめてみました。詳しくは以下の資料で詳細が説明されていますので、ご確認ください。

    「AWSクラウドデザインパターン」コンテンツ配信編 資料



     

    EC2 API Tools for Windows

    2012年2月24日 by miyazawa

    みなさん、こんにちは
    AWSチームの宮澤です。
    ここ最近、社内では林檎帝国のマシンが増え始めているのですが、
    そんな中、あえてWindowsに”API Tools”を導入して、API Toolsを使ってインスタンスを立ち上げて、
    使えるようにしたいと思います。

    Amazon EC2 API Toolsとは?

    Amazon Web ServicesのAmazon EC2をAPIで操作するためのコマンドラインツールです。
    私達がよく使っているManagement Consoleは、裏でAPIを実行して動作をしています。

    1.準備

    Amazon EC2 API Tools(以下API Tools)をインストールし、実行する為に必要な以下のものを事前に用意します。
    • AWSアカウントID
    • アクセスキーID
    • シークレットアクセスキー
    • X509証明書
    • 秘密鍵ファイル
    Management Consoleを利用している場合、右上のプルダウンメニューから、”Security Credential”を選択することで、
    必要な情報が取得できます。

    2.インストール

    Ⅰ.ダウンロード
    API ToolsをAWSの公式ページからダウンロードします。
    また、API ToolsはJavaにより動作しているためJavaをインストールする必要があります。
    こちらのリンクをたどると以下のサイトに移動しますので、そこからJavaをインストールしてください。

    Ⅱ.インストール

  • ダウンロードしたAPI Toolsを”C:\”に展開します。
  • 展開したフォルダにアクセスキーとシークレットアクセスキーを配置しておきます。
  • 環境変数の設定
  • ファイルを展開しただけではWindowsのコマンドプロンプトではコマンドを利用することができません。
    そのため、以下のように環境変数を設定してコマンドを実行できるようにします。
    Javaのインストールされているフォルダを指定
    ※環境によって異なる場合があります。
    C:\>set JAVA_HOME=C:\"Program Files\Java\jre6"
    
    API Toolsのフォルダを指定
    C:\>set EC2_HOME=C:\ec2-api-tools
    
    API Toolsのコマンドが格納されているフォルダを指定
    C:\>set PATH=%PATH%;ec2-api-tools\bin
    
    使用するリージョンを指定
    C:\>set EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
    
    利用するアカウントのアクセスキーとシークレットアクセスキーを指定
    C:\ec2-api-tools>set EC2_PRIVATE_KEY=%EC2_HOME%pk-***********.pem
    C:\ec2-api-tools>set EC2_CERT=%EC2_HOME%cert-**************.pem
    

  • バッチファイルの作成
  • 環境変数をコマンドプロンプトで実行した場合、閉じてしまうと再度環境変数を設定しなければなりません。
    その手間を省くために、環境変数設定のバッチファイルを作成します。
    複数のAWSアカウント、リージョンを使っている場合は、個別に用意しておくと非常に便利です。
    ファイル名は”.bat”形式で作成します。

    ※リージョンは使用したいリージョンを記述してください。
    ※作成したバッチファイルはコマンドプロンプトのホームディレクトリに配置してください。

    3.API Toolsの実行

  • バッチファイルの実行
  • コマンドプロンプトから、先ほど作成したバッチファイルを実行します。
    バッチファイルを実行することで、環境変数が設定されます。

    PowerShellを利用する場合は、以下のようにコマンドプロンプトに切り替えて実行してください。

  • 動作確認
  • ”ec2ver”とコマンドを実行し、以下のようにバージョンが表示されればAPI Toolsが動いていると確認できます。

    4.インスタンスの起動

    ここからは実際にインスタンスを起動して使えるようにしたいと思います。

    Ⅰ.キーペアの作成

  • キーペアの一覧を表示
  • キーペアを作成する際に同じ名前のキーは作成できないので、現在のキーペア一覧を取得し、確認します。

    C:\Users\kei_miyazawa>ec2-describe-keypairs
    

  • キーペアの作成
  • 今回はdemo_keyというキーペアを作成したいと思います。キーペアを作成する際にオプションを付けて、キーペアをローカルマシンに保存します。

    C:\Users\kei_miyazawa>ec2-add-keypair demo_key | find /V "KEYPAIR" > %EC2_HOME%\demo_key.pem
    

    ※ローカルに保存したキーはインスタンスにログインする際に利用しますので大切に保管してください。


    Ⅱ.セキュリティーグループの作成

  • セキュリティーグループの一覧を表示
  • ec2-describe-group

  • セキュリティーグループの作成
  • セキュリティーグループはdemo_sgを作成します。

    ec2-add-group demo_sg 

  • セキュリティーグループの設定
  • セキュリティーグループで接続を許可するポートを指定します。
    今回はICMPとHTTP、RDPを許可します。
    ec2-authorize demo_sg -P icmp -t -1:-1 -s 0.0.0.0/0
    ec2-authorize demo_sg -P tcp -p 80
    ec2-authorize demo_sg -P tcp -p 3389 -s 202.215.74.59/32
    
    Ⅲ.インスタンスの起動

  • 起動に利用するAMIを探す
  • 以下のコマンドでAWS上にあるAMIの一覧を表示します。

    ec2-describe-images
    これではAMIが大量に表示され、見つけることが難しいので、以下のようにオプションやパイプコマンドで”find”を使い条件を絞って表示させることできます。

    例1:Amazonの提供しているイメージからFedora8の32bitのイメージを探す。

    ec2-describe-images --owner amazon | find "fedora-8-i386"

    例2:自分のアカウントで作成したAMIを探すときは以下のようにします。

    ec2-describe-images --owner アカウントナンバー | find "キーワード"

  • AMIからインスタンスを起動
  • 先程探したWindowsAMI(ami-2ae95f2b)を利用して、インスタンスを起動したいと思います。
    インスタンスを起動するために以下のコマンドを実行します。
    ec2-run-instances ami-2ae95f2b
    このようにオプション無しで起動すると、デフォルトのセキュリティーグループ、キーペアなし、smallインスタンスで起動してしまいます。
    以下のように詳細を指定して起動することもできます。
    ec2-run-instances AMI名 -g セキュリティーグループ -k キーペア -n 個数 -t インスタンスタイプ

    Ⅳ.Elastic IPの割り当て

  • ElasticIPの一覧を表示
  • ec2-describe-addresses

  • Elastic IPの割り当て
  • ec2-associate-address -i インスタンスID Elastic IP

  • Elastic IPの取り外し
  • ec2-disassosiate-address Elastic IP


    Ⅴ.インスタンスの停止、削除

  • インスタンスを停止する
  • ec2-stop-instances インスタンスID

  • インスタンスを削除する
  • ec2-terminale-instances インスタンスID

    5.まとめ

    実際にインストールを行い、利用してみると、Linuxと同様に動作をしました。
    しかし、Tabの補完機能などが使えないところが残念な所です。
    Windowsを使っていると、ついManagement Consoleを使ってしまいがちですが、ELB(Elastic Load Balancing)のSSL証明書の更新はELBのAPI Toolsを使わないと作業ができません。
    このように、API Toolsを使う場面は必ず現れるので、入れておくに越したことはないと思います。
    Amazonのクラウドを利用しているなら、この機会に”Windows”にAPI Toolsをインストールしてみてはいかがでしょうか。

    ご参考までに、関連するコマンドをまとめた表を作成致しました。

    内容コマンド
    リージョン一覧ec2-describe-regions
    キーペア一覧ec2-describe-keypairs
    キーペア作成ec2-add-keypair KeyPair名
    キーペア削除ec2-delete-keypair KeyPair名
    セキュリティーグループ一覧ec2-describe-group
    セキュリティーグループ作成ec2-add-group セキュリティーグループ名
    セキュリティーグループ削除ec2-delete-group セキュリティーグループ名
    AMIの一覧ec2-describe-images
    インスタンスの一覧ec2-describe-instances
    インスタンスの起動ec2-run-instances AMI名
    インスタンスStartec2-start-instances インスタンスID
    インスタンスStopec2-stop-instances インスタンスID
    インスタンスTerminateec2-terminate-instances インスタンスID
    Elastic IP一覧ec2-describe-addresses
    Elastic IP取り付けec2-associate-address -i インスタンスID Elastic IP
    Elastic IP取り外しec2-disassosiate-address Elastic IP

    /td

     

    PAGE TOP