Amazon LightsailでEC-CUBE構築

Amazon LightsailでEC-CUBE構築

2022年11月16日
知恵
Pocket

今回は、Amazon Lightsail上で、EC-CUBE4.2を動かしてみたいと思います。

インスタンスを生成する

AWSのコンソールにログインして、Lightsailメニューを表示します。

Amazon LightsailでEC-CUBE構築

Create instanceをクリックして、作成していきます。

platformLinux/Unix
blueprintLAMP(PHP 8)
Amazon LightsailでEC-CUBE構築
Amazon LightsailでEC-CUBE構築

プランは、最小の$3.5のものを選択。

Amazon LightsailでEC-CUBE構築

Identify your instanceには、わかりやすい名前をつけておきます。

Amazon LightsailでEC-CUBE構築

その他は特に指定せず、「Create Instance」をクリックします。

Amazon LightsailでEC-CUBE構築

作成されるとこちらの画面に遷移し、pending状態になります。

Amazon LightsailでEC-CUBE構築

Runningになるまで待ちます。

Amazon LightsailでEC-CUBE構築

Runningに変わったら、インスタンスを選択します。

Amazon LightsailでEC-CUBE構築

まずは、固定IPを付与します。

Networkingタブを表示します。

Amazon LightsailでEC-CUBE構築

Attach static IPをクリックし生成します。

適当な名前をつけてインスタンスにつかていきます。

Amazon LightsailでEC-CUBE構築

追加されるとIPが変わります。

Amazon LightsailでEC-CUBE構築

ここに表示されたIPアドレスでブラウザからアクセスするとページが表示されます。

Amazon LightsailでEC-CUBE構築

SSH接続できるようにする

connectタブを開いた状態で、以下より、IPアドレス、ユーザ名を確認します。

青枠のDownload default keyをクリックして、keyファイルをダウンロードします。

Amazon LightsailでEC-CUBE構築

LightsailDefaultKey-ap-northeast-1.pemという名前になっています。管理しやすいように名前を変更しても構いません。

こちらのファイルをホームディレクトリの.sshフォルダの中に移動し、権限を600にしておきます。

.sshフォルダの中に、configファイルがあれば、以下を追記します。ない場合は作成して、追記ください。

Host lightsail   # ここは自分が覚えやすい名前に変更してください
   HostName 35.xxx.xxx.xxx # 上記画像のCONNECT TOのIPアドレス
   User bitnami # 上記画像のUSER NAME
   IdentityFile ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem # DLしたファイル名
   ServerAliveInterval 60

記載して保存します。

以下コマンドで、サーバに接続できることを確認します。

> ssh lightsail
The authenticity of host '35.XX.XX.XX (35.XX.XX.XX)' can't be established.
ECDSA key fingerprint is SHA256:G+6trv5wy/IMVDAFFXXXXXXXXXXXHrenaJgy0.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

これでサーバにログインして作業が可能となります。

EC-CUBEをセットアップする

EC-CUBE4.2をサーバにコピーしていきます。

以下サイトから、ダウンロードします。

eccube-4.2.0.zip

ローカルにDLしたファイルをサーバ上にSCPでコピーします。

% scp eccube-4.2.0.zip bitnami@lightsail:~/

こちらのファイルを以下に展開していきます。

/home/bitnami/htdocs/ec-cube

デフォルトでは、/home/bitnami/htdocs/がドキュメントルートになっています。

% cd /home/bitnami/htdocs
% cp ~/eccube-4.2.0.zip .
% unzip eccube-4.2.0.zip # ec-cubeというフォルダに展開されます

ドキュメントルートを上記のディレクトリに変更します。

% vi /opt/bitnami/apache/conf/bitnami/bitnami.conf

DocumentRoot "/opt/bitnami/apache/htdocs"
<Directory "/opt/bitnami/apache/htdocs">
↓
DocumentRoot "/opt/bitnami/apache/htdocs/ec-cube"
<Directory "/opt/bitnami/apache/htdocs/ec-cube">

設定を反映させるために、Webサーバを再起動します。

% sudo /opt/bitnami/ctlscript.sh restart apache

再起動して、ブラウザからIPアドレスでアクセスすると以下の画面に切り替わっています。

Amazon LightsailでEC-CUBE構築

DBの作成を行う

EC-CUBEで利用するDBを作成しておきます。

MySQLのrootユーザのパスワードが以下で確認できます。

% cat ~/bitnami_application_password

データベースを作成します。

% mysql -uroot -p

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS eccube CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

ユーザを作成します。

MariaDB [(none)]> CREATE USER eccube@localhost IDENTIFIED BY '任意のパスワード';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON eccube.* TO eccube@localhost;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, ALTER ON eccube.* TO eccube@localhost;

EC-CUBEの設定を行う

ブラウザでIPアドレスで表示を行い、設定を行います。

Amazon LightsailでEC-CUBE構築

次へ進みます。

Amazon LightsailでEC-CUBE構築

権限チェックです。次へ進みます。

Amazon LightsailでEC-CUBE構築

サイトの設定をいれていきます。

ログインID、パスワードは推測しづらいもので設定します。

管理画面のアドレスは、adminではないものにしておきます。

IP制限、メールの設定は一旦そのままにしておきます。

Amazon LightsailでEC-CUBE構築
Amazon LightsailでEC-CUBE構築

データベースの設定を入れます。

ホスト名は、localhost、ポート番号は、3306を入れます。

Amazon LightsailでEC-CUBE構築

データベースの初期化を行います。

Amazon LightsailでEC-CUBE構築

以下のエラーが出ました。DROP権限の付与が必要でした。(↑に記載したもので実行していればOK)

ERROR An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1142 DROP command denied to user 'eccube'@'localhost' for table 'doctrine_migration_versions'

インストールが完了しました。必要なプラグインを有効にしておきます。

Amazon LightsailでEC-CUBE構築

管理画面が表示されるようになりました。

Amazon LightsailでEC-CUBE構築

サービスサイト側も表示されました。

Amazon LightsailでEC-CUBE構築

git関連の設定

gitで修正をもとに戻せるようにサーバ内で以下を行っておきます。

% cd /opt/bitnami/apache2/htdocs/ec-cube
% touch .gitignore
% git init
% git add .
% git commit -m 'first commit'

gitignoreの中身は、以下を拝借しました。

上記で作成しが.gitignoreの中に、こちらの内容をコピペしておきます。

Amazon LightsailでEC-CUBE構築

ec-cube/.gitignore at 4.2 · EC-CUBE/ec-cube · GitHub

EC-CUBE is the most popular e-commerce s…
github.com
!dummy
!.gitmodule
composer.phar
/vendor/
node_modules
/var/*
!/var/.gitkeep
!/var/.htaccess
/app/Plugin/*
!/app/Plugin/.gitkeep
/app/PluginData/*
!/app/PluginData/.gitkeep
/app/template/*
!/app/template/admin
!/app/template/default
!/app/template/user_data
!/app/template/smartphone
/app/proxy/entity/*
!/app/proxy/entity/.gitkeep
/html/plugin/*
!/html/plugin/.gitkeep
/html/upload/save_image/*
!/html/upload/save_image/.gitkeep
!/html/upload/save_image/no_image_product.png
/html/upload/temp_image/*
!/html/upload/temp_image/.gitkeep
/html/template/*
!/html/template/admin
!/html/template/default
!/html/template/install
/html/user_data/*
!/html/user_data/.gitkeep
!/html/user_data/assets/css/customize.css
!/html/user_data/assets/js/customize.js
/tests/tmp/*
/reports/*
.idea
.vscode/
*.php~
.env
.maintenance
*.neon

###> symfony/phpunit-bridge ###
.phpunit
/phpunit.xml
###< symfony/phpunit-bridge ###

###> friendsofphp/php-cs-fixer ###
/.php-cs-fixer.cache
/.php-cs-fixer.*.php
###< friendsofphp/php-cs-fixer ###

後は、ドメインを取得して、SSLを有効にします。

ドメイン設定

ドメインの設定については、以下が参考になります。

Lightsail インスタンスのドメインレコードを管理するDNSゾーンを作成する - Amazon Lightsail

Amazon Lightsail DNS ゾーンを作成してドメインのDNSレコー…
lightsail.aws.amazon.com

ドメインの設定変更してアクセスできるようになるまで、30分ぐらいかかりました。

ドメインの設定が完了したら、EC-CUBEの設定変更が必要になります。

ドメインでアクセスするとこのような形のエラーがでてしまいます。

これはルートディレクトリにある、.envファイルにTRUSTED_HOSTという定義があるのですが、そちらに追加したドメインが書いていないことによる影響になります。

アクセスできません。
Untrusted Host "ドメイン名"
トップページへ
Amazon LightsailでEC-CUBE構築
% vim ec-cube/.env

TRUSTED_HOSTS=^xxx\.com$

SSL設定

Bitnami HTTPS Configuration Toolというツールを利用して、SSL設定を行います。

ターミナルでサーバに接続して以下のコマンドを実行します。

こちらのツールで、以下ができます。

  • 証明書の取得
  • 自動更新設定
% sudo /opt/bitnami/bncert-tool
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to
configure your web server.

Domain list []: #ドメイン名を入力する

The following domains were not included: www.sample.com. Do you want to add them? [Y/n]: y #wwwも設定しておく

----------------------------------------------------------------------------
Enable/disable redirections

Please select the redirections you wish to enable or disable on your Bitnami
installation.

Enable HTTP to HTTPS redirection [Y/n]: y #httpアクセスをhttpsにリダイレクトする
Enable non-www to www redirection [Y/n]: n # wwwなしのアクセスをwww付きにするか
Enable www to non-www redirection [y/N]: y # www付きのアクセスをなしにするか
----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains:
sample.com www.sample.com
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: sample.com
5. Enable HTTP to HTTPS redirection (example: redirect http://sample.com to
https://sample.com)
6. Enable www to non-www redirection (example: redirect www.sample.com to
sample.com)
7. Start web server once all changes have been performed

Do you agree to these changes? [Y/n]: y #上記の変更に同意しますか?
----------------------------------------------------------------------------
Create a free HTTPS certificate with Let's Encrypt

Please provide a valid e-mail address for which to associate your Let's Encrypt
certificate.

Domain list: sample.com www.sample.com

Server name: sample.com

E-mail address []: メールアドレス

The Let's Encrypt Subscriber Agreement can be found at:



Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: y #Let's Encryptに同意しますか?
----------------------------------------------------------------------------
Performing changes to your installation

The Bitnami HTTPS Configuration Tool will perform any necessary actions to your
Bitnami installation. This may take some time, please be patient.

----------------------------------------------------------------------------
Success

The Bitnami HTTPS Configuration Tool succeeded in modifying your installation.

The configuration report is shown below.

Backup files:
* /opt/bitnami/apache/conf/httpd.conf.back.2022xxxxxxx
* /opt/bitnami/apache/conf/bitnami/bitnami.conf.back.2022xxxxxxx
* /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf.back.2022xxxxxxx

Find more details in the log file:

/tmp/bncert-2022xxxxxxx.log

If you find any issues, please check Bitnami Support forums at:


Amazon LightsailでEC-CUBE構築

GitHub - bitnami/vms: Bitnami VMs

Bitnami VMs. Contribute to bitnami/vms d…
github.com
Press [Enter] to continue: enter入力

今回ドキュメントルートを変更しているため、SSLの設定ファイルにも反映しておく必要があります。

% sudo vi /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf

DocumentRoot "/opt/bitnami/apache/htdocs"
↓
DocumentRoot "/opt/bitnami/apache/htdocs/ec-cube"

以下のコマンドでWebサーバを再起動して設定を反映させます。

% sudo /opt/bitnami/ctlscript.sh restart apache

このタイミングで、スマホ等でアクセスすると、ドメインでアクセスでき、SSLも適用されていることが確認できます。

以上で設定周りは完了になります。

このままだとEC-CUBEがデフォルト表示のままなのでカスタマイズを施していきたいと思います。

また、必要に応じてプラグインをインストールしていきます。

これらについては、本記事では割愛させていただきます。

Notion AIによるまとめ

  • Amazon LightsailがEC-CUBEのサポートを開始した。
  • EC-CUBEはオープンソースのeコマースプラットフォームである。
  • Lightsailを使用することで、EC-CUBEのセットアップが簡単になる。