Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

【JAWS-UG関西女子会】#2 ELB+EC2+RDSでECサイトをつくろう ~EC-CUBEインストール編~

Last updated at Posted at 2015-07-28

はじめに

この記事はJAWS-UG関西女子会「はじめて女子応援企画!事例から学ぶもくもく&もぐもぐ会」で
もぐもぐ1 もくもくする際のテキストとなります。

本記事での目標

  • 構築済みのEC2+RDS(Postgresql9.3)環境にEC-CUBEをインストールする

ここまでにすませておくこと

そもそもEC-CUBEって何?

株式会社ロックオンが開発し、後にオープンソース化されたネットショップ構築パッケージです。
今回、EC2+RDS(Postgresql9.3)の環境を構築したので、実際にパッケージをインストールしてブラウザからアクセスをしてみましょう!

インストール前の準備

今回はEC-CUBE Version 2.13.3 を使用します。
パッケージをインストールする前に必要なソフトウェアの要件が書かれているので、まず各種ソフトウェアがインストールされているか、またバージョンが適切かを確認しましょう。
http://www.ec-cube.net/product/system.php

必要なソフトウェアのチェック

実は、OSがWindowsなのかLinuxなのかで、ソフトウェアの種類は異なります。
しかし今回インストールしたのは「Amazon Linux AMI 2015.03 (HVM)」でしたよね?
LinuxはUNIX系OSになりますので、「UNIX系OS」のソフトウェアの項目を確認する必要があります。

まず、必要なソフトウェアは大きく分けて以下の3つあります。

  • Apache
  • php
  • データベース(PostgreSQL/MySQL)

更に、ソフトウェアはバージョンが細かく分かれています。
下図を確認して頂くと、Apacheは2.0.x/2.2.x以上、 phpは5.2以降と書かれていることがわかると思います。
eccube_req.jpg

つまり、EC2で確認をする必要があるのは、

  • Apacheが2.0.x/2.2.x以上かどうか
  • phpが5.2以降かどうか

ということになります。

 ※ データベースに関しては、先ほどRDSを使って構築していますので、PostgreSQL9.3でインストールされていると思います。
 そのためデータベースのバージョン確認に関しては、今回の構成では省略します。

ソフトウェアのバージョン確認方法

まずEC2にec2-userでSSHでログインします。
バージョンの確認であれば、rootユーザーにならなくても、ec2-userのまま確認することが可能です。

Apacheのバージョン確認方法

-v オプションを付けることでバージョンの確認が可能です。
以下のように 2.2.29 と表示されていればOKです。

$ httpd -v
Server version: Apache/2.2.29 (Unix)
Server built:   Mar 12 2015 03:50:17

phpのバージョン確認方法

では同様に、phpのバージョンも確認してみましょう。
以下のように 5.3.29 と表示されていればOKです。

$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

phpのライブラリ確認方法

ここまで、EC-CUBEを利用するためのソフトウェアのバージョンの確認が出来ました!
次に、EC-CUBEを正常に動作させるために必要な、PHPのライブラリ(細かい部品のようなものと思って下さい)がEC2にインストールされているかを確認します。

これはいろいろな方法があるのですが、
ELB+EC2+RDSでECサイトをつくろう ~EC2作成編~
「4.5.Apache、phpのインストール確認をします」 で info.php が設置されている状態だと思いますので、こちらを利用してみましょう!

http://{EC2インスタンス(web01)のPublicIPアドレス}/info.php

上記URLでブラウザからアクセスすると、実は現在のEC2にインストールされているphpのライブラリがわかるのです!

しかし同時に、ブラウザからアクセス出来るということは、適切なセキュリティグループ設定を行わないと第三者からもEC2の環境が見えてしまうことになり、セキュリティ上のリスクを伴います。
ブラウザからソフトウェアのバージョン確認等を行う際には、今回のように自分のIPアドレスのみアクセスを許可する等、しっかり対策を行うようにして下さい。

下図がEC-CUBEをインストールする上で必要なライブラリになります。
ライブラリ一覧の一番上にある「pgsql 又は mysql」ですが、今回はPostgreSQL9.3を利用する関係上、必要なライブラリはpgsqlとなりますのでご注意下さい。
 ※ phpを利用してデータベースを操作するために必要なライブラリになります。
eccube_phplib.jpg

まず、ご利用のブラウザから以下にアクセスします。

http://{EC2インスタンス(web01)のPublicIPアドレス}/info.php

キーボードの Ctrl + F 同時押しでブラウザの検索画面を表示。
その検索画面に必要なライブラリ名を入力して検索をかけます。
検索がヒットし、ライブラリがインストールされている場合、下記のように「enabled」となります。
findphp.jpg

今回すでにインストールされているライブラリは下記でした。

phpライブラリ名 インストール済み
pgsql又はmysql ×
gd ×
freetype2
mbstring ×
zlib
ctype
spl (PHP 5.3.0 未満の場合) 〇(※php5.3以上なので不要)
session

phpのライブラリ追加方法

では、ここから不足しているライブラリをEC2に追加していきます。

EC2でインストールした、Amazon Linux AMIは、RedHat Enterprise Linuxをベースにしたディストリビューション(OS)となっており、パッケージ管理用にyumというコマンドを利用することが可能です。
このyumコマンドを利用することで、パッケージのインストールやアップデート、削除といった操作を行うことができます。

実際にどのようにライブラリを追加するか見ていきましょう。
まず、ひとつライブラリを検索してみます。
今回はpgsqlライブラリを検索してみようと思いますので、以下のように実行します。

$ yum list | grep -i php-pgsql

すると以下のように表示されました。

$ yum list | grep -i php-pgsql
php-pgsql.x86_64                    5.3.29-1.8.amzn1               amzn-updates

パッケージの情報を確認する時は、 "yum info (パッケージ名)" というようにコマンドを実行します。
すると、Available Packages(インストール可能なパッケージ)の文字が見えます。
つまりこのパッケージは「デフォルトではインストールされていないが、追加でインストールが可能」ということになります。

$ yum info php-pgsql.x86_64
Loaded plugins: priorities, update-motd, upgrade-helper
Available Packages
Name        : php-pgsql
Arch        : x86_64
Version     : 5.3.29
Release     : 1.8.amzn1
Size        : 143 k
Repo        : amzn-updates/latest
Summary     : A PostgreSQL database module for PHP
URL         : http://www.php.net/
License     : PHP
Description : The php-pgsql package includes a dynamic shared object (DSO) that can
            : be compiled in to the Apache Web server to add PostgreSQL database
            : support to PHP. PostgreSQL is an object-relational database management
            : system that supports almost all SQL constructs. PHP is an
            : HTML-embedded scripting language. If you need back-end support for
            : PostgreSQL, you should install this package in addition to the main
            : php package.

パッケージをインストールする時には、以下のコマンドを実行します。
ec2-userで実行する時にはsudoを前に付与する必要があります。
また、-yオプションを付与することで、インストールするかどうかを途中で聞かれず、「インストールすることに同意した」ものとしてウィザードが進みます。

$ sudo yum install -y php-pgsql

最後に以下のようにCompleteと表示されれば、インストールが正常に完了したことになります。

$ sudo yum install -y php-pgsql

--> Running transaction check
---> Package php-pgsql.x86_64 0:5.3.29-1.8.amzn1 will be installed
--> Processing Dependency: php-pdo(x86-64) = 5.3.29-1.8.amzn1 for package: php-pgsql-5.3.29-1.8.amzn1.x86_64
--> Running transaction check
---> Package php-pdo.x86_64 0:5.3.29-1.8.amzn1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================
 Package                            Arch                            Version                                    Repository                             Size
===========================================================================================================================================================
Installing:
 php-pgsql                          x86_64                          5.3.29-1.8.amzn1                           amzn-updates                          143 k
Installing for dependencies:
 php-pdo                            x86_64                          5.3.29-1.8.amzn1                           amzn-updates                          170 k

Transaction Summary
===========================================================================================================================================================
Install  1 Package (+1 Dependent package)


  ・・・ (中 略) ・・・


Installed:
  php-pgsql.x86_64 0:5.3.29-1.8.amzn1

Dependency Installed:
  php-pdo.x86_64 0:5.3.29-1.8.amzn1

Complete!

同じように他のライブラリもインストールを試してみて下さい。
またphpのライブラリなので、 "php-{ライブラリ名}" という名称になっているものが多いです。
インストールの際はその点も注意しましょう。

インストールが完了したら、先ほどと同様に以下のURLでブラウザからアクセスして、検索にヒットしなかったライブラリが検索できるようになっていることを確認してみて下さい。

http://{EC2インスタンス(web01)のPublicIPアドレス}/info.php

phpの環境設定

EC-CUBEをインストールするためには、phpの設定を少し変更しておく必要があります。
変更するファイルはphp.iniという名前のファイルです。

まず作業を行うために、rootユーザーに切り替えます。

$ sudo su -

ファイルを確認するために ll("ls -l" の省略形です)コマンドを実行してみましょう。
ファイルがあることが確認できましたね?

# ll /etc/php.ini
-rw-r--r-- 1 root root 69379 May 13 07:45 /etc/php.ini

ここから実際に作業に移るのですが、万が一のことを考えて、オリジナルのファイルを残した上で設定を変更します。
オリジナルのファイルを残す時は、ファイルをコピーして異なる名前に変更しておきます。
ここではphp.ini.orgという名前に変更しました。

# cp -a /etc/php.ini /etc/php.ini.org

変更すると、下記のように同じような名前のファイルが2つ出来上がります。

# ll /etc/php.ini*
-rw-r--r-- 1 root root 69379 May 13 07:45 /etc/php.ini
-rw-r--r-- 1 root root 69379 May 13 07:45 /etc/php.ini.org

php.iniファイルの編集

では、実際にファイルを編集していきましょう。
今回は少し応用で、特定の文字列を置換するコマンドを利用してみます。
文字列を置換する時にはsedというコマンドを使います。
(以下の3行を1行ずつコピペして下さい)

# sed -i "s/^;date.timezone =$/date.timezone = \"Asia\/Tokyo\"/" /etc/php.ini
# sed -i "s/^;mbstring.language/mbstring.language/" /etc/php.ini
# sed -i "s/^;mbstring.internal_encoding = EUC-JP/mbstring.internal_encoding = UTF-8/" /etc/php.ini

コピペ後、オリジナルのファイルとの差分を確認します。
差分というのは、変更前(オリジナル)と変更後のファイルで変更がかかった部分です。
その変更がかかった部分を確認するために、diffというコマンドを利用します。
以下のように実行することで、ファイルの変更部分を比較することができます。

diff -u (変更前のファイル) (変更後のファイル)

-で表示されている箇所がもともとの設定(php.ini.org)
+で表示されている箇所が、今回変更した設定(php.ini)です。
緑色のラインのように設定が変更できましたか?

ここでは、タイムゾーンを設定し、文字コードをUTF-8に変更しています。

# diff -u /etc/php.ini.org /etc/php.ini
--- /etc/php.ini.org    2015-05-13 07:45:47.000000000 +0900
+++ /etc/php.ini        2015-07-28 21:08:52.638706682 +0900
@@ -953,7 +953,7 @@
 [Date]
 ; Defines the default timezone used by the date functions
 ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
-;date.timezone =
+date.timezone = "Asia/Tokyo"

 ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.default-latitude
 ;date.default_latitude = 31.7667
@@ -1549,13 +1549,13 @@
 [mbstring]
 ; language for internal character representation.
 ; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.language
-;mbstring.language = Japanese
+mbstring.language = Japanese

 ; internal/script encoding.
 ; Some encoding cannot work as internal encoding.
 ; (e.g. SJIS, BIG5, ISO-2022-*)
 ; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.internal-encoding
-;mbstring.internal_encoding = EUC-JP
+mbstring.internal_encoding = UTF-8

 ; http input encoding.
 ; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.http-input

Apacheのリロード

無事設定変更が完了したら、phpの設定を反映させるためにApacheを再読み込み(reload)します。

# service httpd reload
Reloading httpd:

EC-CUBEのインストール

それではいよいよEC-CUBEのインストールにうつります。

EC-CUBEをサイトからダウンロードする

まずは、EC-CUBEのパッケージを下記のURLからダウンロードします。
http://downloads.ec-cube.net/src/eccube-2.13.3.tar.gz

ブラウザから開いてダウンロード、でも良いのですが、今回はコマンドの勉強も兼ねて、EC2にログインした状態でダウンロードしてみましょう。

/usr/local/src というディレクトリに移動します。
 ※ このディレクトリ配下にEC-CUBEをダウンロードします。

# cd /usr/local/src

wgetコマンドを利用して、サイトからパッケージをダウンロードします。
最後に "saved" と出れば無事保存されています。

# wget http://downloads.ec-cube.net/src/eccube-2.13.3.tar.gz
--2015-07-28 19:26:04--  http://downloads.ec-cube.net/src/eccube-2.13.3.tar.gz
Resolving downloads.ec-cube.net (downloads.ec-cube.net)... 112.78.219.13
Connecting to downloads.ec-cube.net (downloads.ec-cube.net)|112.78.219.13|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10662203 (10M) [application/x-gzip]
Saving to: ‘eccube-2.13.3.tar.gz’

eccube-2.13.3.tar.gz           100%[===================================================>]  10.17M  6.87MB/s   in 1.5s

2015-07-28 19:26:05 (6.87 MB/s) - ‘eccube-2.13.3.tar.gz’ saved [10662203/10662203]

今現在自分がいるディレクトリを確認した上で、llコマンドでパッケージが保存されているか確認します。

# pwd
/usr/local/src

# ll
total 10416
-rw-r--r-- 1 root root 10662203 Nov  5  2014 eccube-2.13.3.tar.gz  // 保存されている!

パッケージの解凍→移動

まず /usr/local/src 内でパッケージを解凍します。

# tar zxf eccube-2.13.3.tar.gz

解凍すると、下記のようにディレクトリが生成されます。

# ll -tr
total 10420
drwxr-xr-x 7 ec2-user wheel     4096 Nov  5  2014 eccube-2.13.3
-rw-r--r-- 1 root     root  10662203 Nov  5  2014 eccube-2.13.3.tar.gz

今回は、アーカイブ(tar.gz)は残したままで、解凍したディレクトリのみwebの公開ディレクトリ(/var/www/html)に移動します。

# mv eccube-2.13.3 /var/www/html/

EC-CUBEを移動した後は、自分自身も移動しましょう。

# cd /var/www/html/

EC-CUBEのインストール

さて、ここからが本番。EC-CUBEのインストールになります。
まずwebの公開ディレクトリ(/var/www/html)へ移動後、以下のような状態になっているか確認します。

# ll
total 8
drwxr-xr-x 7 ec2-user wheel 4096 Nov  5  2014 eccube-2.13.3
-rw-r--r-- 1 root     root    20 Jul 27 20:23 info.php

まずはEC-CUBEのディレクトリのオーナー(所有者)を変更します。
今回はテストですので、オーナーはrootとします。

# chown -R root. eccube-2.13.3

これでディレクトリ及び、その配下のコンテンツのオーナーがすべてrootに変更されました。

# ll -d eccube-2.13.3
drwxr-xr-x 7 root root 4096 Nov  5  2014 eccube-2.13.3

# ll -tr eccube-2.13.3
total 64
-rw-r--r--  1 root root 17987 Feb  9  2011 COPYING
-rw-r--r--  1 root root   555 Apr 29  2014 package.json
-rw-r--r--  1 root root   667 Apr 29  2014 Gruntfile.js
-rw-r--r--  1 root root   114 Aug 13  2014 composer.json
-rw-r--r--  1 root root  1396 Aug 15  2014 phpunit.xml.dist
-rw-r--r--  1 root root  1825 Aug 15  2014 appveyor.yml
-rw-r--r--  1 root root  1238 Aug 15  2014 build.xml
drwxr-xr-x  4 root root  4096 Nov  5  2014 test
drwxr-xr-x  2 root root  4096 Nov  5  2014 docs
drwxr-xr-x  3 root root  4096 Nov  5  2014 tests
drwxrwxrwx 25 root root  4096 Nov  5  2014 html
drwxr-xr-x 15 root root  4096 Nov  5  2014 data

EC-CUBEのディレクトリも、デフォルトのままだとハイフンやドットが入っていて見栄えがあまり良くないので、以下のコマンドで "eccube" というディレクトリ名に変更します。

# mv eccube-2.13.3 eccube

パーミッションの変更

また、セキュリティの観点から、ディレクトリ及びファイルのパーミッション(アクセス権)を以下のように変更します。

必ずwebの公開ディレクトリにいる状態で作業をして下さい。

# pwd
/var/www/html

ここではeccube配下のディレクトリのパーミッションをすべて755に、ファイルをすべて644に変更しています。

# find ./eccube -type d | xargs chmod 755
# find ./eccube -type f | xargs chmod 644

また、EC-CUBEのインストールの都合上、以下のディレクトリのパーミッションを707に設定します。

# chmod -R 707 eccube/data/class
# chmod -R 707 eccube/data/upload
# chmod -R 707 eccube/html
# chmod -R 707 eccube/data/cache
# chmod -R 707 eccube/data/Smarty
# chmod -R 707 eccube/data/downloads
# chmod -R 707 eccube/data/config

インストーラーの実行

さあ!ここまでできたらいよいよ実際のインストールです。
(長い道のりでした・・・)

インストールはブラウザ上から行います。
ブラウザより以下のURLでアクセスします。

http://{EC2インスタンス(web01)のPublicIPアドレス}/eccube/html/install/index.php

以下のように表示されればOKです。「次へ進む」をクリックします。
eccube1.jpg

パーミッションが適切に設定されているかをチェックします。
 ※ ここでもしパーミッションに不備があれば、どのファイルのパーミッションに不備があるのか表示されます。

チェックでエラーが出た方は教えて下さい。

eccube2.jpg

エラーが出なければどんどん進みます。
eccube3.jpg

ECサイトの設定

ここからが実際にEC-CUBEで構築するショップ情報の設定となります。
今回はテストですので、店名は下記のように設定しました!
また、以下は各自任意の情報を入力して下さい。

  • ログインID
  • パスワード
  • ディレクトリ

セキュリティの観点から、パスワードはアカウントと同一のもの、推測しやすいものにはしないで下さい。

eccube4.jpg

データベースの設定

ELB+EC2+RDSでECサイトをつくろう ~RDS作成編~
で作成したデータベースの情報を入力します。
eccube5.jpg

データベースの初期化

「データベースの初期化処理を行わない」にチェックを入れずに進みます。
eccube6.jpg

ここで、データベースにEC-CUBE関連のテーブルが自動で生成されます。
eccube7.jpg

インストール完了まであと少しです!
eccube8.jpg

ついにインストールが完了しました!
各自設定した認証情報で管理画面にログインしてみましょう。
eccube9.jpg

EC-CUBE管理画面へのログイン

以下のURLで管理画面へアクセスすることが可能です。

http://{EC2インスタンス(web01)のPublicIPアドレス}/eccube/html/{先ほど設定したディレクトリ}/

アクセスする時ブラウザ上に下図のような警告が出ますが、このファイルは後ほど削除します。
eccube10.jpg

無事ログインができました!
eccube11.jpg

EC-CUBEインストール後の作業

インストール後は、 インストーラーであるindex.phpを削除する必要があります。

ec2-userでログインし、rootユーザーに切り替えます。

$ sudo su -

index.php のあるディレクトリまで移動して・・・

# cd /var/www/html/eccube/html/install/

ファイルを削除します。
削除する時にはrmコマンドを利用します。

削除すると、管理画面にアクセスしてもこれまでのような警告は発生しなくなります。

# rm -f index.php

再度EC-CUBEの管理画面にアクセスしてみましょう。
先ほどまで画面上部に出ていた警告が出なくなっています。
eccube12.jpg

サイトの表示確認

EC-CUBEをインストールすると、あらかじめいくつか製品が登録されていて、デモ画面が表示されるようになっています。
ECサイトの画面は下記のURLからアクセスができます。

http://{EC2インスタンス(web01)のPublicIPアドレス}/eccube/html/

アクセスし、下図のような画面が表示されればOKです!
eccube13.jpg

ここから実際に製品サンプルをたくさん登録したりすることも可能です。そのような方法を知りたい方は、個別にご相談下さい!


  1. 節子!それは懇親会や!!

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?