Magentoをインストールしてみた

Nishi
2024-06-07
2024-06-07

こんにちは!
Nishiです。Magento開発に関わって1年たったので振り返りながらMagentoについて書いていこうと思います。

今回はできるだけAWSの無料枠を使用しながらMagento Open Source 2.4.6-p4をインストールしていこうと思います。

初めに

デモデータを登録してMagentoを試せる状態まで出来ればと思います。
全て完了すると下記画像のようなユーザー画面が完成します。

構成(AWSで使用するサービス,設定等)

必要バージョンは公式サイトを確認

◇ EC2
・インスタンスタイプ: t2.micro(12か月無料枠)
  ※できればメモリ4G以上がいいので t3a.medium 等を使用する方が良いと思います。
・AMI : CentOS 7 (x86_64) - with Updates HVM
・ミドルウェア: Apache2.4、PHP8.2

◇ Amazon RDS
・エンジンバージョン: MySQL8.x
・インスタンスクラス: db.t3.micro (12か月無料枠)

◇ Amazon OpenSearch Service
・タイプ: シングルAZ (12か月無料枠)
・Elasticsearchバージョン: 7.10

※今回はAWS画面での各ツールの作成方法の説明は記載しません。

インストール

早速いろいろ設定&インストールしていきます。

タイムゾーン等の設定変更
// 現在のロケールを確認
$ sudo
localectl
// 日本語に設定
$ sudo localectl set-locale LANG=ja_JP.utf8
// キーマップの設定
$ sudo localectl set-keymap jp106
// 現在のタイムゾーン確認
$ sudo timedatectl
// 日本時間に設定
$ sudo timedatectl set-timezone Asia/Tokyo
SELinuxの無効化

今回は開発環境なのでSELinuxを無効にします。セキュリティについては別途確保するようにしてください。
※有効の場合、正しく設定を行わないとページが表示されなくなってしまいます。

// 設定ファイルを開きます
$ sudo vi /etc/sysconfig/selinux

viを使用したファイルの変更方法
① i キーを押すと INSERTモードに変わる
② 内容を変更 
③ Esc キーを押してINSERTモード終了
④ :wq と入力し、変更内容を保存

// enable を disabled に変更します
SELINUX=disabled
// 再起動します
$ sudo reboot
既存パッケージの更新と開発ツールのインストール
$ sudo yum -y update
$ sudo yum -y groupinstall 'Development tools'
PHP8.2をインストール
$ sudo yum -y install epel-release
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum -y install --enablerepo=remi,remi-php82 php php-cli php-devel php-bcmath php-ctype php-curl php-dom php-gd php-hash php-iconv php-intl php-mbstring php-openssl php-pdo_mysql php-simplexml php-soap php-xsl php-zip php-opcache

PHP8.2がインストールできたか確認

$ php -v
// 実行結果が下記の様になっていたらOK
PHP 8.2.×× (cli) ...
Apacheのインストールと設定をおこなう

Apacheのインストール

$ sudo yum -y install httpd mod_ssl

Apacheの設定を変更をします。

// httpd設定ファイルを開く
$ sudo vi /etc/httpd/conf/httpd.conf

変更項目は下記になります。

User centos   #apache→centosに変更
Group centos   #apache→centosに変更
ServerName localhost.localdomain:80  #コメントアウト解除+変更
// ssl設定ファイルを開く
$ sudo vi /etc/httpd/conf.d/ssl.conf
<VirtualHost *:443>     #変更

DocumentRoot "/home/centos/public_html/magento/pub"    #コメントアウト解除+変更
ServerName localhost.localdomain:443    #コメントアウト解除+変更

<Directory "/home/centos/public_html/magento/pub">    # Directoryタグの変更
  Options Indexes ExecCGI FollowSymLinks
  AllowOverRide All
  Allow from All
  DirectoryIndex index.html index.php
</Directory>

</VirtualHost>

以下のファイル(ディレクトリ)があればcentosユーザーが書き込めるように権限を変更します。

$ sudo chmod ugo+w /etc/httpd/alias/*.db
$ sudo chmod 777 /var/lib/php/session

PHPのタイムゾーンとメモリ最大量を設定したいので新規ファイル作成をします。

$ sudo vi /etc/php.d/apadmin.ini

下記を追記します。

memory_limit=2G
date.timezone = "Asia/Tokyo"

ディレクトリを作成します。

$ mkdir -p /home/centos/public_html

Apacheの自動起動を有効 & 再起動をおこないます。

// Apacheの自動起動を有効
$ sudo systemctl enable httpd.service
// 実行結果が下記になっていたらOK
Created symlink from ...

// Apacheの再起動
$ sudo systemctl restart httpd.service
Composerのインストール
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer
//composerがインストールされたか確認
$ composer --version
// 実行結果が下記になっていたらOK
Composer version ...
DBサーバ(MySQL8.0)のセットアップ

MySQLクライアントのインストールをします。 ※CentOS7標準のMariaDBクライアントを利用

$ sudo yum -y install mariadb

DBサーバに接続

RDSで作成したDBのユーザー名、パスワード、エンドポイントを使用します。
ユーザー名とパスワードは作成時の「認証情報の設定」で設定した値を使用します。
エンドポイントは作成後、「接続とセキュリティ」>「エンドポイント」の値を使用します。

$ mysql -u ユーザー名 -p -h エンドポイント
// パスワードを聞かれるので入力
Enter password:
// 実行結果が下記になっていたらOK
MySQL >
// データベースを作成 (データベース名:magento2)
MySQL > CREATE DATABASE `magento2` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
// 実行結果が下記になっていたらOK
Query OK, 1 row affected ...
// 終了
MySQL > \q
Amazon OpenSearch Serviceの情報を取得

この後のMagnetoインストール時に設定するので、ドメインエンドポイント (VPC)、マスターユーザー名・パスワードを取得します。

マスターユーザー名・パスワードはドメイン作成時の「きめ細かなアクセスコントロール」で設定した値を使用します。

ドメインエンドポイント (VPC)はドメイン作成後の「一般的な情報」から確認できます。

Magento Opensorceパッケージの取得

Magento Marketplaceの認証情報取得  
①アカウント作成し、ログイン。Adobe Commerce Marketplace
②ログイン後、右上の「My Profile」をクリックし、プロフィールページに移動します。
③移動後、MaketPlaceタグを選択して、「Access Keys」をクリックします。

④「Create A New Access Key」ボタンを押すとダイアログが表示されるので、
  任意の値を入力し、「OK」ボタンをクリックします。 今回は「test」と入力しました。

⑤アクセスキーの作成が出来ました。
 Public KeyとPrivate Keyを使用します。

先ほど作成した認証情報を使用してパッケージを取得していきます。

// 「composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition 設置先 」を入力。今回は「 /home/centos/public_html/magento 」に設置
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /home/centos/public_html/magento

//認証情報を聞かれるのでMagento Marketplaceで作成したアクセスキーを入力
Authentication required (repo.magento.com):

Username: // Public Keyを入力
Password: // Private Keyを入力
Do you want to store credentials for repo.magento.com in /home/centos/.config/composer/auth.json ? [Yn] // Y と入力

ファイル権限を設定します。

$ cd /home/centos/public_html/magento
$ find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ chmod u+x bin/magento

これで、bin/magentoコマンドが実行できるようになります。

Magnetoインストール

インストールのコマンドについて

$ bin/magento setup:install オプション

を指定することでインストールする事が出来ます。

今回使用するオプションは下記になります。

// ショップへのアクセス、管理画面のアクセスにhttpsを使用
--use-secure=1 

--use-secure-admin=1 

// DBの接続設定(「DBサーバ(MySQL8.0)のセットアップ」で設定した値を使用)
--db-host=< エンドポイント >

--db-name=< 作成したDBの名前 >
--db-user=< DBのユーザー名 >
--db-password=< DBのパスワード > 

// 管理ユーザーの設定
--admin-firstname=<Magento管理ユーザの名>

--admin-lastname=<Magento管理ユーザの性>
--admin-email='<Magento管理ユーザのメールアドレス>'
--admin-user=admin
--admin-password=<Magento管理ユーザのパスワードを設定>

// ElasticSearchの接続設定(「Amazon OpenSearch Serviceの情報を取得」で取得した値を使用)
--search-engine=elasticsearch7 

--elasticsearch-host='<ドメインエンドポイント (VPC) >' 
--elasticsearch-port=443 
--elasticsearch-index-prefix=magento2 
--elasticsearch-enable-auth=1 
--elasticsearch-username=< マスターユーザー名 > 
--elasticsearch-password='<マスターパスワード>'

こちらを踏まえて、下記コマンドを実行します。

$ bin/magento setup:install \
--use-secure=1 \
--use-secure-admin=1 \
--db-host=< エンドポイント > \
--db-name=magento2 \
--db-user=admin \
--db-password=< DBのパスワード >  \
--admin-firstname=admin \
--admin-lastname=name \
--admin-email='admin@example.com' \
--admin-user=admin \
--admin-password=Pass1234 \
--search-engine=elasticsearch7 \
--elasticsearch-host='<ドメインエンドポイント (VPC) >' \
--elasticsearch-port=443 \
--elasticsearch-index-prefix=magento2 \
--elasticsearch-enable-auth=1 \
--elasticsearch-username=< マスターユーザー名 > \
--elasticsearch-password='<マスターパスワード>' \
--language=ja_JP \
--currency=JPY \
--timezone=Asia/Tokyo

インストールが完了すると

[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_ランダムな文字列

と出力されます。
「admin_ランダムな文字列」部分は管理画面を表示する時に使用するので、忘れないようにしておいてください。

cron設定をインストールします。

$ bin/magento cron:install
MagentoのBase URL設定

EC2インスタンスの概要>パブリック IPv4 DNSの値を取得します。

下記コマンドを実行します。

$ bin/magento config:set web/unsecure/base_url "http://ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com/"
$ bin/magento config:set web/secure/base_url "https://ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com/"
// 変更後はキャッシュのクリア
bin/magento c:c

ここまで終えるとMagentoストアページが表示されます。
ユーザー画面は先ほどの設定したURLになります。
https://ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com/ 

管理画面はユーザー画面のURLとMagentoインストール後に表示された「admin_ランダムな文字列」を使用します。
https://ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com/admin_ランダムな文字列

デフォルトだと管理ユーザーがログインする時に2要素認証が有効になっています。
メールの送信設定はまだしていないので、2要素認証を一度無効にするために下記コマンドを実行します。

$ bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth Magento_TwoFactorAuth
$ bin/magento cache:flush

管理画面のログインはMagentoインストール時に設定した admin-user と admin-password の値を使用します。
ログインが完了するとDashboard画面が表示されます。

サンプルデータのインストール

Magentoで用意されているサンプルデータをダウンロードしていきます。
サンプルの Data Composer パッケージをダウンロードします。

下記コマンドを実行します。

$ bin/magento sampledata:deploy
// 「Magento Opensorceパッケージの取得」時と同じ様に認証情報を聞かれるのでMagento Marketplaceで作成したアクセスキーを入力
$ bin/magento setup:upgrade
// Nothing to import... と出力されたら完了
$ bin/magento c:c

ユーザー画面を表示すると、商品データ等が登録された内容が表示されていると思います。

最後に

まずはMagentoをインストールして動くところまで出来ました!
今回はここまでで、次回以降は細かい設定を紹介していこうと思います。