概要
AWS上に構築することはあまりないかもしれませんが、EC-CUBEをAmazon Linux 2023にインストールしたので、ここに個人的な手順や設定を示しておきます。
バージョン情報等
- Amazon Linux 2023 AMI
- PostgreSQL 15.5
- Apache/2.4.58 (Amazon Linux)
- EC-CUBE 4.2.3
その他設定
- 検証や開発向け
-
/var/www/html/ec-cube/
以下にインストール - PostgreSQLはローカルからはパスワード認証で接続
- ユーザ名:
postgres
- パスワード:
postgres
- データベース名:
eccube
- ユーザ名:
手順
インスタンスの作成
AWSコンソールにログインし、EC2インスタンスを作成します。下記に主な設定を記載します。
- インスタンスタイプ: t2.micro等
- キーペア: 適当に設定する
- ネットワーク設定: 適切に設定する
- sshで接続できるよう、インバウンドの80番ポートを開けておく(AWS SSM経由での接続なら不要)
- ストレージ: 20 GiB程度あれば十分か。gp3で作成
ロケールの変更
サーバにssh接続後、下記設定を行っていきます。
sudo timedatectl set-timezone Asia/Tokyo
ホスト名の設定
sudo hostnamectl set-hostname your_host_name
swapの設定
仮想メモリの設定で、8GBぐらいにしておきます。
swapfile_size=8GB
swapfile_path=/swapfile
sudo fallocate -l "$swapfile_size" "$swapfile_path"
sudo chmod 600 "$swapfile_path"
sudo mkswap "$swapfile_path"
sudo swapon "$swapfile_path"
ls -lh "$swapfile_path"
swapon --show
sudo cp /etc/fstab /root/fstab.default
echo "$swapfile_path none swap sw 0 0" | sudo tee -a /etc/fstab
基本アプリのインストール
cronなど、あとあと必要になると思われるアプリをインストールしておきます。
sudo yum -y update
sudo dnf install -y cronie patch
Apacheのインストール・設定
sudo yum -y install httpd
sudo systemctl enable httpd.service
screenの設定
仮想コンソールの設定をしておきます。
cat <<EOS >"$HOME/.screenrc"
Encoding
defutf8 on
defencoding utf8
encoding utf8 utf8
defbce on
term xterm-256color
# Prefix Key
escape ^Gg
# set scrollback
# メモリ量と相談
# defscrollback 1000000
# Delete sartt up screen
startup_message off
# Enable Auto detach
autodetach on
hardstatus alwayslastline "%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} LoadAVG [%l] %y/%m/%d %c "
termcapinfo xterm* ti@:te@
altscreen on
EOS
PostgreSQLのインストール・設定
今回はデータベースとしてpostgresを使用します
sudo dnf install -y postgresql15-server
sudo postgresql-setup initdb
# WARNING: using obsoleted argument syntax, try --help
# WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
# * Initializing database in '/var/lib/pgsql/data'
# * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
sudo systemctl enable postgresql
# 設定
# ローカルからはパスワードでログインできるようにする
cat << EOS | sudo patch -p1 -f /var/lib/pgsql/data/pg_hba.conf
--- /home/ec2-user/pg_hba_default.conf 2024-02-21 11:04:02.779795012 +0900
+++ /var/lib/pgsql/data/pg_hba.conf 2024-02-21 11:04:41.488692691 +0900
@@ -85 +85 @@
-local all all peer
+local all all trust
@@ -87 +87 @@
-host all all 127.0.0.1/32 ident
+host all all 127.0.0.1/32 password
@@ -92 +92 @@
-local replication all peer
+local replication all trust
EOS
sudo systemctl restart postgresql
# ec-cube用のデータベース、ユーザを予め作っておきます
psql -U postgres -c "ALTER USER postgres with password 'postgres'";
psql -U postgres -c "CREATE DATABASE eccube" ;
phpのインストール
sudo yum install -y php
sudo systemctl restart httpd
EC-CUBEのインストール
cd "$HOME"
curl -OL https://downloads.ec-cube.net/src/eccube-4.2.3.zip
unzip eccube-4.2.3.zip
sudo mv ec-cube/ /var/www/html/
# Change file/directory owner
cd /var/www/html/
sudo chown -R apache:apache *
EC-CUBE起動に必要なphp拡張機能をインストールします
sudo yum install -y \
php8.2-pgsql \
php8.2-gd \
php8.2-zip \
php8.2-intl
# php8.2-pdo
# php8.2-opcache
# Package php8.2-pdo-8.2.15-1.amzn2023.0.1.x86_64 is already installed.
# Package php8.2-opcache-8.2.15-1.amzn2023.0.1.x86_64 is already installed.
EC-CUBEのインストールウィザードへアクセス
http://YOUR_SERVER_IP/ec-cube/index.php/install/step1 にアクセスしインストールウィザードを開始します。
参考: EC-CUBEのインストール方法 | ECサイト構築・リニューアルは「ECオープンプラットフォームEC-CUBE」
バックアップ
データベースのダンプと、ドキュメントルート以下の必要なファイルをtarに固めます。
(あまり検証していない・・・)
now="$(date +%Y-%m-%d_%H-%M-%S)"
database_dump_dir="$HOME/backup/eccube/"
eccube_backup_export_dir="$HOME/backup/eccube/"
# データベースのダンプを出力
mkdir -p "$database_dump_dir"
cd "$database_dump_dir"
pg_dump -U postgres -d eccube | gzip -c >"$now.sql.gz"
# ドキュメントルートでバックアップが必要なファイルを固める
mkdir -p "$eccube_backup_export_dir"
cd "$eccube_dir"
tar zcf "$eccube_backup_export_dir/$now.tar.gz" --exclude 'var/cache/*' --exclude 'var/sessions/*' ./
# "$HOME/backup/eccube/"以下に下記ファイルフォーマットで出力される
# YYYY-mm-dd_HH-MM-SS.sql.gz
# YYYY-mm-dd_HH-MM-SS.tar.gz
リストア
postgres_dump="$HOME/backup/eccube/YYYY-mm-dd_HH-MM-SS.sql.gz"
html_backup="$HOME/backup/eccube/YYYY-mm-dd_HH-MM-SS.tar.gz"
html_target="/var/www/html/ec-cube"
psql -U postgres -c "DROP DATABASE IF EXISTS eccube;" -c "CREATE DATABASE eccube;"
gunzip -c "$postgres_dump" | psql -U postgres -w -d eccube
cd "$html_target"
sudo rm -rf app/ html/
cd "$(dirname "$html_backup")"
tar xf "$html_backup"
sudo mv app/ html/ .env "$html_target"
cd "$html_target"
sudo chown -R apache:apache ./*
次にアクセスしログインできることを確認 http://localhost/ec-cube/index.php/管理画面ログインID/login
(管理画面ログインIDは、EC-CUBEのインストールウィザードにて設定した値)
設定修正
サーバのIPが変更されている場合、設定を書き換えないと、下記のエラーが表示される。
アクセスできません。
Untrusted Host "xxxxx.example.com".
この場合、.env
ファイルのTRUSTED_HOSTS
項目値を適切に修正する
現状のサーバのIPアドレスを指定(HTTP時)
vim /var/www/html/ec-cube/.env
サーバIPが123.456.789.012の場合
TRUSTED_HOSTS=^123\.456\.789\.012$
メモ
空き容量
セットアップ完了直後の、ストレージ使用量を記載します。
# "空き容量"
df
# Filesystem 1K-blocks Used Available Use% Mounted on
# /dev/xvda1 20893676 2465896 18427780 12% /
# "空き容量 -h"
df -h
# Filesystem Size Used Avail Use% Mounted on
# /dev/xvda1 20G 2.4G 18G 12% /