WSL2でMagento2の環境構築

Webサービス

Magento2というオープンソースのECサイトの開発講座を受講するため
先立ってWSL2で環境を構築しました。
基本下記サイトを参考にさせていただいたのですが

WSL2+DenでMagento2の環境構築 - Qiita
目次はじめに環境WSL2のインストールDenのインストールMagento環境の構築おわりにはじめにこの記事は、WSL2+WardenでMagento2の環境構築をする方法の備忘録のD…

Zscaler(プロキシ)環境下ということもあり、ルート証明書を所々インストールすることもあり詰まったので細かい点を補足します。

Magento2のインストールに当たっては
Adobe IDが必要になります、事前に用意しておきましょう。

WSL2
ディストロUbuntu-22.04
Magento22.4.6
Den

ルート証明書の作成

下記ページにCA方法が載っています。

Zscaler発行の登録(CA)証明書の生成 | Zscaler
Zscaler Private Access (ZPA)Admin Portal内のApp ConnectorおよびZscaler Client Connectorの登録用に、Zscalerが発行するCA証明書を生成する方法です。

ディストロのインストール

PowerShellを管理者権限で起動し、以下のコマンドを入力

wsl --install Ubuntu-22.04

ルート証明書の作成で作成した証明書をインストールします
以下はc:\tempがマウントされていて、ca.crtという証明書ファイルを作成した例です。

sudo apt-get install -y ca-certificates
sudo cp /mnt/c/temp/ca.crt /usr/local/share/ca-certificates
sudo update-ca-certificates

Docker,Docker Composeのインストール

各コマンドの詳細が知りたい場合は下記を参考
https://docs.docker.jp/engine/install/linux/docker-ce/ubuntu.html

sudo apt-get update
sudo apt-get install \
 apt-transport-https \
 ca-certificates \
 curl \
 software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#ユーザーをdockerグループへ追加(以降ローカルユーザーで実行するため)
sudo usermod -aG docker $USER

Denのインストール

まずはHomebrewをインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストール後、Next stepという文言に続き、3つほどコマンドが表示されますが
全て実行してください。

Denをインストールし、Global Serviceを起動

brew install swiftotter/den/den
den svc up

hosts("C:\Windows\System32\drivers\etc\hosts")
に下記内容を追加

127.0.0.1 traefik.den.test

下記URLをWindowsで閲覧し、起動確認ができる
https://traefik.den.test/

Magento環境の構築

基本は前述したサイトを参考にコマンドを実行していきます。
以下はtestというproject nameを使用します。

den env-init test magento2
den env up -d
den shell

以降のcurlの結果、error(60)が出現する場合、php-fpmコンテナ内で
前述と同じようにCA証明書をインストールしてください。

$COMPOSER_HOME/composer/auth.jsonに下記を追記

{
    "http-basic": {
        "repo.magento.com": {
            "username": "",
            "password": ""
        }
    }
}

username/passwordについては下記にログインし、取得してください
「My Profile」→「Access Keys」
https://commercemarketplace.adobe.com/

Magento2をダウンロード

META_PACKAGE=magento/project-community-edition META_VERSION=2.4.6
composer create-project --repository-url=https://repo.magento.com/ \
    "${META_PACKAGE}" . "${META_VERSION}"
bin/magento setup:install \
    --backend-frontname=backend \
    --amqp-host=rabbitmq \
    --amqp-port=5672 \
    --amqp-user=guest \
    --amqp-password=guest \
    --db-host=db \
    --db-name=magento \
    --db-user=magento \
    --db-password=magento \
    --search-engine=elasticsearch7 \
    --elasticsearch-host=opensearch \
    --elasticsearch-port=9200 \
    --elasticsearch-index-prefix=magento2 \
    --elasticsearch-enable-auth=0 \
    --elasticsearch-timeout=15 \
    --http-cache-hosts=varnish:80 \
    --session-save=redis \
    --session-save-redis-host=redis \
    --session-save-redis-port=6379 \
    --session-save-redis-db=2 \
    --session-save-redis-max-concurrency=20 \
    --cache-backend=redis \
    --cache-backend-redis-server=redis \
    --cache-backend-redis-db=0 \
    --cache-backend-redis-port=6379 \
    --page-cache=redis \
    --page-cache-redis-server=redis \
    --page-cache-redis-db=1 \
    --page-cache-redis-port=6379

現在、Denの.envファイルにより、opensearchのDocker Imageがインストールされます。
したがって、--elasticsearch-hostはopensearchのホスト名を指定する必要があります。
また、opensearchを使用する場合--search-engineはelasticsearch7を指定します。
ハマるポイントなので注意してください。

前述の参考サイトより下記コマンドを実行していきます。

## Configure Application
bin/magento config:set --lock-env web/unsecure/base_url \
    "https://${TRAEFIK_SUBDOMAIN}.${TRAEFIK_DOMAIN}/"

bin/magento config:set --lock-env web/secure/base_url \
    "https://${TRAEFIK_SUBDOMAIN}.${TRAEFIK_DOMAIN}/"

bin/magento config:set --lock-env web/secure/offloader_header X-Forwarded-Proto

bin/magento config:set --lock-env web/secure/use_in_frontend 1
bin/magento config:set --lock-env web/secure/use_in_adminhtml 1
bin/magento config:set --lock-env web/seo/use_rewrites 1

#開発環境では、admin userのパスワードをいちいち変えるのは面倒なので、設定でオフにしておきます。
bin/magento config:set admin/security/password_lifetime 0
bin/magento config:set admin/security/password_is_forced 0

#2段階認証も開発環境では不要なので、オフにしておきます。
bin/magento module:disable Magento_TwoFactorAuth

bin/magento config:set --lock-env system/full_page_cache/caching_application 2
bin/magento config:set --lock-env system/full_page_cache/ttl 604800

bin/magento config:set --lock-env catalog/search/enable_eav_indexer 1

bin/magento config:set --lock-env dev/static/sign 0

bin/magento deploy:mode:set -s developer

bin/magento indexer:reindex
bin/magento cache:flush

2段階認証をオフにする際に他のモジュールが依存していて無効にできない場合があります。
その場合は先に依存しているモジュールをmodule:disableにて無効にしてください。

hosts("C:\Windows\System32\drivers\etc\hosts")
に下記内容を追加

127.0.0.1 app.test.test

下記URLがWindows上で閲覧可能になります。

#ホーム画面
 https://app.test.test/
#管理画面
 https://app.test.test/backend/

Adminユーザーの追加

上記のセットアップではユーザーを追加していないため、管理画面へログインできません
管理画面へログインするには下記コマンドでAdminユーザーを追加してください。

bin/magento admin:user:create

上記のようなCLIは下記コマンドで確認可能です。
bin/magento list

コメント

タイトルとURLをコピーしました