LightsaillにMagentoをインストール


はじめに

所属しているロボコンチームでECサイトが必要になったのですが、自動で伝票を作成できる機能などがあるMagentoをインストールすることにしました。
結構苦戦したので、備忘録的な意味も含めて、メモしておきます。
なお、一般的なものとあまり変わらない部分は、簡単に記載するだけになるので、追加でいろいろ調べながらやってみてください。

インスタンスの作成

これは、簡単です。
AWSのアカウントを取得して、Ligsaillの管理画面からインスタンスを作成するだけです。
本来は、Magentoがセットになっているインスタンスもありますが、今回は何もセットになっていないインスタンスを作成します。
OSはAmazonLinux2で、メモリが4Gのプランです。
Lightsaillはインスタンスのアップグレードはできても、ダウングレードはできないので大きくしすぎないように気を付けましょう。
メモリは、最低でも2G無いとインストールできないと思うので、それ以上のプランを選ぶようにしましょう。
また、接続用のSSHキーペアを作成する場合は、なくさないようにしましょう。

Apacheのインストール

Apacheのインストールは特段難しくありません。

sudo yum -y update
sudo yum install -y httpd

起動及び自動起動設定

systemctl start httpd
systemctl enable httpd

SSLの設定

今回は、手動インストールしましたが、yumでも大丈夫だと思います。

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto

なお、そのまま使用するとエラーがでますので、こちらの記事を参考に実行ファイルを少し変更してください。

Amazon Linux2でLet's Encrypt使おうとしたらコケた話

それが終わったら、通常通り証明書を発行すればよいです。

MySQLのインストール

これも特段変わりません。
こちらに記載する必要もないので、リンクのみ。
2.5.1 MySQLYumリポジトリを使用したLinuxへのMySQLのインストール

PHPのインストールについて

これで少し詰まりました。
初期状態でAmazonLinux2にPHPを入れると、7.4xがインストールされるのですが、動作はしたものの7.3が推奨されており、拡張機能がうまくインストールできなかったので、PHP7.3xをインストールします。
まずは、現在インストールされているものをアンインストールします。

yum remove php-* -y

そして、php7.4を無効にし、7.3をインストールします。

sudo amazon-linux-extras disable php7.4
sudo amazon-linux-extras install php7.3=7.3.13

終わったら、php-fpmの再起動を忘れずに

systemctl reload php-fpm

Magentoのインストール

これも通常通り行えばよいです。
今回は、 /var/www/html にインストールします。

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /var/www/html

/var/www/htmlに移動し、インストールコマンドを実行します。
必要なものは適宜置き換えてください。

bin/magento setup:install \
--base-url=http://localhost/magento2ee \
--db-host=localhost \
--db-name=magento \
--db-user=magento \
--db-password=magento \
--admin-firstname=admin \
--admin-lastname=admin \
--admin-email=[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

インストールが完了すると、管理画面のURLが発行されるので、そこにアクセスします。

初期設定

スクショを取り忘れたので、言葉で説明します。

ログイン画面に移動したら、インストール時に設定したアカウント情報でログインします。
そうすると、メールに2段階認証の設定コードを送ったと書かれた画面になりますが、メールを設定していないので、送られてきません。
そこで、少しファイルを編集します。

 vi vendor/magento/module-two-factor-auth/Model/EmailUserNotifier.php

でファイルを開き、


    /**
     * Send configuration related message to the admin user.
     *
     * @param User $user
     * @param string $token
     * @param string $emailTemplateId
     * @param string $url
     * @return void
     */
    private function sendConfigRequired(
        User $user,
        string $token,
        string $emailTemplateId,
        string $url
    ): void {
    try {
            $transport = $this->transportBuilder
                ->setTemplateIdentifier($emailTemplateId)
                ->setTemplateOptions([
                    'area' => 'adminhtml',
                    'store' => 0
                ])
                ->setTemplateVars(

この記載個所の

try{

の前に、

var_dump($url);

と入力します。
そして、先ほどの画面に戻ると、メールに送られるはずだったURLが出力されるので、アクセスして2段階認証の設定をします。
設定が終わったら、ファイルは元に戻しておいてください。

日本語化

日本語化も簡単です。
以下をインストールすれば完了です。

composer require veriteworks/m2-japaneselocale

管理画面のアカウント設定で日本語を選択すれば、日本語になります。

メモリ不足について

もし、メモリーが足りないと出たら、Swapファイルを作成します。
1024と書かれているところを変更すれば、容量も変更できます。

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

freeコマンドを実行して、認識されていれば、成功です。

free
              total        used        free      shared  buff/cache   available
Mem:        4037584     2441604      397488         740     1198492     1366768
Swap:       2097148           0     2097148

まとめ

ECCubeを使ってきた人としては、結構大変でしたが、やはり越境ECや大規模サイトの場合の運営のしやすさ、他のツールとの連携性はシェア率からしても高いです。
最初は、CDNをかまそうかと思ったのですが、調べてもメディアファイルだけCDNを通す、という記事しか発見できなかったのであきらめました。
もし、間違えなどあったら指摘してください。