LoginSignup
2
1

EC-CUBEをAmazon Linux 2023にインストールする

Posted at

概要

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の場合

.env
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% /
2
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
2
1