WSL2+WardenでMagento2の環境構築をする方法の備忘録


概要

WSL2+WardenでMagento2の環境構築をする方法の備忘録
(2021年3月時点)

目次

  1. WSL2のインストール
  2. Wardenのインストール
    1. 2021年3月時点(バージョン0.10.1)のWSL2での環境構築方法
    2. 補足

WSL2のインストール

WSL2(Windows Subsystem for Linux 2)とは、Windows内でLinuxを実行できる仕組みである。(詳細はマイクロソフトのドキュメント
マイクロソフトのドキュメントにあるインストール方法の通りに実行すれば、wsl2をインストールできる。

Wardenのインストール

Wardenの仕組みやインストールの方法からMagento2の環境構築まで、Yamashitaさんの記事に分かりやすく載っている。(macOSにおける2020年3月時点のもの)

2021年3月時点(バージョン0.10.1)のWSL2での環境構築方法

1.Homebrewをインストールする

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

2.wardenをインストールし、Global Serviceを起動する

brew install davidalger/warden/warden
warden svc up

3.起動に成功したら、以下のURLで確認できる。
https://traefik.warden.test/
https://portainer.warden.test/
https://dnsmasq.warden.test/
https://mailhog.warden.test/

接続できなかった場合は補足の3を参照

4.プロジェクトのルートディレクトリで下記コマンドを実行する。

warden env-init [projectname] [environment type]

[projectname]:プロジェクトの名前を自由に決める。
[environment type]:ドキュメントにあるタイプの中から一つ選ぶ。今回はmagento2の構築なのでmagento2とする。

.envというファイルが生成されるので、PHPのバージョンなどを変更したいときはここに記述する。

5.SSL証明書の作成

warden sign-certificate [projectname].test

6.プロジェクトの環境を立ち上げる

warden env up -d

7.php-fpmコンテナに入る

warden shell

8.composerでMagento2をダウンロードする

META_PACKAGE=magento/project-community-edition META_VERSION=2.4.x

composer create-project --repository-url=https://repo.magento.com/ \
    "${META_PACKAGE}" /tmp/exampleproject "${META_VERSION}"

rsync -a /tmp/exampleproject/ /var/www/html/
rm -rf /tmp/exampleproject/

META_VERSION=2.4.xにMagentoのバージョンを入れる。
(一度/tmpにダウンロードしてから/var/www/html/に移すのは、create-projectはカレントディレクトリにダウンロードすることができないから。)

9.Magento2をインストールする(2.4.x)

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=elasticsearch \
    --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

## 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

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 cache:disable block_html full_page

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

※バージョン2.4.x以前の場合、以下のElasticsearchのパラメータは省略する。

--search-engine=elasticsearch7 \
--elasticsearch-host=elasticsearch \
--elasticsearch-port=9200 \
--elasticsearch-index-prefix=magento2 \
--elasticsearch-enable-auth=0 \
--elasticsearch-timeout=15 \

代わりに以下のElasticsearchの設定コマンドを打つ。

bin/magento config:set --lock-env catalog/search/elasticsearch7_server_hostname elasticsearch
bin/magento config:set --lock-env catalog/search/elasticsearch7_server_port 9200
bin/magento config:set --lock-env catalog/search/elasticsearch7_index_prefix magento2
bin/magento config:set --lock-env catalog/search/elasticsearch7_enable_auth 0
bin/magento config:set --lock-env catalog/search/elasticsearch7_server_timeout 15

これでMagento2のインストールは完了。

以下のURLでアプリケーションにアクセスできる。
https://app.[projectname].test/
https://app.[projectname].test/backend/
https://rabbitmq.[projectname].test/
https://elasticsearch.[projectname].test/

補足

  1. wardenのGlobal Serviceの起動方法は、2021年3月時点でwarden svc upに変更されている

  2. warden sync startはmacOSで且つバージョン0.3.0以前に必要なコマンドである。(warden sync stopも同様)

  3. Wardenのドキュメントにもあるように、dnsmasqサービスによるDNSの自動解決には、DNSリクエストがローカルネットワークを経由する必要がある。
    Windowsの設定方法は、このサイトに分かりやすく載っている。
    インターネットプロトコル バージョン 4 (TCP/IPv4)の優先DNSを127.0.0.1に設定する。