ビギナーでもわかるEC-CUBE3 on AWS(インストール編)

記事タイトルとURLをコピーする
eccubeon

 こんにちは、新卒の田斉です。 今回の記事の題材はEC-CUBE。オープンソースのショッピングカートシステム(国産)で、現在180万ダウンロードを突破、推定30000店舗で稼働中の人気パッケージです。

そんなEC-CUBEが弊社ブログで取り上げられたのは、2012年。早4年もの年月が経ち、その間EC-CUBEは2系から3系へとメジャーアップグレードを遂げました。

2012年の記事執筆時点で、AWS上でのEC-CUBE2.0の構築手順に関する情報はあまりなかったようですが、そんな状況はEC-CUBE3.0になっても相変わらず。なので、「私と同じようなAWSを勉強中の身にもわかりやすい内容で、EC-CUBE3.0版のアップデート記事を書きたいなぁ」と思ったのが今回の執筆動機になります。

今回の記事では以下のような「ここまで実装できれば、実際にお店を公開できそう」という基本的な実装内容を全3回くらいで紹介します。

  • EC2へのEC-CUBE3.0.12インストール
  • 冗長性に配慮した構成をつくる(サーバー複数台間のデータ同期の工夫など)
  • DNS設定・SSL証明書導入をしてECサイトを公開する

本稿ではシングル構成でEC-CUBEを稼働できた!というところまでを扱います。※

※EC2・RDSのインスタンス起動手順およびIAMロールの作成手順は今回詳述しないので、別記事でご確認ください。

1. IAMロールの作成

後述のRDSのパラメータグループ変更がCLIで行えると手早く済むので EC2用のIAMロールを作成しておきます。作業用に”rds:ModifyDBParameterGroup”に相当する権限をつけておいてください。


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

今回は『Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type - ami-0c11b26d』を利用して、EC2インスタンスを起動します。このとき、先ほど作ったIAMロールを割り当てておくことをお忘れなく。以後は起動したEC2にssh接続した後の処理を記載します。


3. タイムゾーンの設定

OSのタイムゾーンを日本時間に直します。

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

↑で即時反映されますが、この設定だけだと、glibcの変更時(アップデート時など)に協定世界時間(UTC)にタイムゾーンが戻る恐れがあるので、もう一箇所変更を加えます。

$ sudo vim /etc/sysconfig/clock 

【編集前】

ZONE="UTC"
UTC=true

【編集後】

ZONE="Asia/Tokyo"
UTC=true

4. 必要なミドルウェアのインストール

ECCUBE-3を稼働させるためのミドルウェアをインストールします。 必要なミドルウェア一覧はこちらです。

PHPのバージョンは5.3.9以降が推奨されています。今回はphp5.6を使用します。下記内容で必要なミドルウェアを全て網羅できるはずです。

$ sudo yum install httpd24 php56 mysql56 php56-pdo php56-mbstring php56-pecl-apc php56-opcache php56-mcrypt php56-mysqlnd zlib

なお、インストールするPHPは別バージョンでも構いませんが、その場合は依存関係のあるパッケージがphp5.6と異なる可能性があります。その場合インストール対象として明記すべきパッケージに違いが生じる(=↑のコマンドをそのまま使いまわせない)ことに注意してください。※ ※特にphp-xmlは要注意です。EC-CUBE 3.0はインストールの初期設定画面で不足パッケージがあると警告してくれますが、php-xml(に含まれるDOMDocumentクラス)がないとその警告内容が表示されない仕様になっています。特に今回のAMIの初期状態で

$ sudo yum install php

とすると、PHP5.3.29が落ちてきますが、php56と異なりphp-xmlは依存性関連で自動インストールされません。


5. PHPの設定

$ sudo vim /etc/php.ini

Linuxのタイムゾーンだけではなく、PHPのタイムゾーンも日本時間に合わせます。

【編集前】


[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php
;date.timezone =

; http://www.php.net/manual/en/datetime.configuration.php

【編集後】


[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php
date.timezone = Asia/Tokyo

; http://www.php.net/manual/en/datetime.configuration.php

6. RDSの設定

RDSでDBインスタンスを作成してください。 ここまでの手順でOSとPHPと2つのタイムゾーンを編集してきました。RDSのタイムゾーンもこれに合わせて変更しておきたいところです。

EC-CUBE2.0版記事の執筆時点では、RDSで日本時間の設定がサポートされておらず、ちょっとした細工(「11.RDS:MySQLのタイムゾーンについて」という章の作業がそれにあたります)が必要でした。

が、今日 RDS(MySQL)では、日本時間でタイムゾーンを設定できるようになっています。こうやって過去記事のアップデート記事を書いているとAWSの着実な進歩が確認できていいものですね。

さて、具体的な手順としては ACLコマンドの使用時等に、いちいちリージョン名をオプションで記載しなくても済むようにaws configureコマンドでregionを東京にセットしたあとに

$ aws configure
AWS Access Key ID [None]: 入力しないでenter
AWS Secret Access Key [None]: 入力しないでenter
Default region name [None]: ap-northeast-1
Default output format [None]: 入力しないでenter

以下コマンドのコピペで、作成済みRDSのパラメーターグループの変更(タイムゾーン設定 & 日本語の文字コード設定)を済ませましょう※。 ※{}内は、作成済みRDSに用いているパラメーターグループ名を入力してください。 ※CLIに慣れていない方は、コンソール上で該当するパラメーター変更を行っていただいても構いません。

$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=time_zone, ParameterValue=Asia/Tokyo, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_client, ParameterValue=utf8, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_connection, ParameterValue=utf8, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_database, ParameterValue=utf8, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_filesystem, ParameterValue=utf8, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_results, ParameterValue=utf8, ApplyMethod=immediate”
$ aws rds modify-db-parameter-group --db-parameter-group-name {DB Parameter Group} --parameters “ParameterName=character_set_server, ParameterValue=utf8, ApplyMethod=immediate"

7. EC-CUBE用のデータベースの作成

EC-CUBEで用いるデータベースを作成します。RDS起動時に作成したデータベースをそのまま利用するのであれば、-e以下は不要です。EC2とRDSが接続可能かだけは念のため確かめてください。

$ mysql -h {作成したRDSのエンドポイント} -u {作成したRDSのユーザー名} -p -e "create database {任意のDB名} default character set utf8;"

8. EC-CUBEの設置

ECCUBE3のパッケージをダウンロード→解凍→わかりやすいディレクトリ名に変更&わかりやすい置き場(/home/のすぐ下)にディレクトリをごそっと移動します。

$ sudo wget http://downloads.ec-cube.net/src/eccube-3.0.12.zip
$ unzip eccube-3.0.12.zip
$ sudo mv eccube-3.0.12 /home/eccube 

その後、httpd.confに以下2つの変更を加えます。

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

I.ドキュメントルートに、先ほど名称・ディレクトリ変更を行った/home/eccubeを指定します。

【編集前】

# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#

(中略)
# Further relax access to the default document root:

【編集後】

# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/eccube/html"


#
# Relax access to content within /home/eccube.
#

(中略)
# Further relax access to the default document root:

II./home/eccube以下のディレクトリのhtaccessを有効にして、ユーザ(管理者)認証などを可能な状態にしておきます。※ ※これをやっておかないとインストール設定が完了したと思いきや、400番台エラー(管理者画面が表示できない)が出て悲しい気持ちになります。

【編集前】

# Further relax access to the default document root:

(中略)
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
(中略)

【編集後】

# Further relax access to the default document root:

(中略)
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All
(中略)

その後、httpdを起動して、EC2にHTTPアクセス(して、そのあとGUIでEC-CUBEのインストール設定)ができるようにします。

$ sudo chkconfig httpd on
$ sudo /etc/init.d/httpd restart

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

http://{EC2のPublic DNS名またはグローバルIP}/install/ にアクセスし、インストール画面を表示します。

10. 接続してみる

下記のURLに支障なくアクセスできるか確認しましょう。管理サイトに関しては、「9. EC-CUBEのインストール」のステップ3で設定したIDとパスワードでログインできるかまで確かめてください

  • 管理サイト
  • http://{EC2のPublic DNS名またはグローバルIP}/{「9. EC-CUBEのインストール」のステップ3の設定ディレクトリ}/

  • ECサイト
  • http://{EC2のPublic DNS名またはグローバルIP}/


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

    /home/eccube/htmll/install.phpを残しっぱなしにしておくと管理画面で注意されます。放置しておくと、第三者に初期設定をおこなわれてしまう(現環境をリセットされる)恐れがあるので、忘れずに削除しましょう。

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

    ただし、再設定をおこなう余地を残しておきたい場合は、読み取り権限をなくしておく(あるいは別ディレクトリに移動する)などの処置をとってもよいと思います。

    最後に

    以上で、EC-CUBE3のインストールは完了です。お疲れさまでした。 次回は『冗長構成を組んでみる』編を書きたいと思います。