はじめに
この記事は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以降と書かれていることがわかると思います。
つまり、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を利用してデータベースを操作するために必要なライブラリになります。
まず、ご利用のブラウザから以下にアクセスします。
http://{EC2インスタンス(web01)のPublicIPアドレス}/info.php
キーボードの Ctrl + F 同時押しでブラウザの検索画面を表示。
その検索画面に必要なライブラリ名を入力して検索をかけます。
検索がヒットし、ライブラリがインストールされている場合、下記のように「enabled」となります。
今回すでにインストールされているライブラリは下記でした。
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です。「次へ進む」をクリックします。
パーミッションが適切に設定されているかをチェックします。
※ ここでもしパーミッションに不備があれば、どのファイルのパーミッションに不備があるのか表示されます。
チェックでエラーが出た方は教えて下さい。
ECサイトの設定
ここからが実際にEC-CUBEで構築するショップ情報の設定となります。
今回はテストですので、店名は下記のように設定しました!
また、以下は各自任意の情報を入力して下さい。
- ログインID
- パスワード
- ディレクトリ
セキュリティの観点から、パスワードはアカウントと同一のもの、推測しやすいものにはしないで下さい。
データベースの設定
ELB+EC2+RDSでECサイトをつくろう ~RDS作成編~
で作成したデータベースの情報を入力します。
データベースの初期化
「データベースの初期化処理を行わない」にチェックを入れずに進みます。
ここで、データベースにEC-CUBE関連のテーブルが自動で生成されます。
ついにインストールが完了しました!
各自設定した認証情報で管理画面にログインしてみましょう。
EC-CUBE管理画面へのログイン
以下のURLで管理画面へアクセスすることが可能です。
http://{EC2インスタンス(web01)のPublicIPアドレス}/eccube/html/{先ほど設定したディレクトリ}/
アクセスする時ブラウザ上に下図のような警告が出ますが、このファイルは後ほど削除します。
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の管理画面にアクセスしてみましょう。
先ほどまで画面上部に出ていた警告が出なくなっています。
サイトの表示確認
EC-CUBEをインストールすると、あらかじめいくつか製品が登録されていて、デモ画面が表示されるようになっています。
ECサイトの画面は下記のURLからアクセスができます。
http://{EC2インスタンス(web01)のPublicIPアドレス}/eccube/html/
ここから実際に製品サンプルをたくさん登録したりすることも可能です。そのような方法を知りたい方は、個別にご相談下さい!
-
節子!それは懇親会や!! ↩