概要
WSL2+WardenでMagento2の環境構築をする方法の備忘録
(2021年3月時点)
目次
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/
補足
- wardenのGlobal Serviceの起動方法は、2021年3月時点で
warden svc up
に変更されている
-
warden sync start
はmacOSで且つバージョン0.3.0以前に必要なコマンドである。(warden sync stop
も同様) -
Wardenのドキュメントにもあるように、dnsmasqサービスによるDNSの自動解決には、DNSリクエストがローカルネットワークを経由する必要がある。
Windowsの設定方法は、このサイトに分かりやすく載っている。
インターネットプロトコル バージョン 4 (TCP/IPv4)の優先DNSを127.0.0.1に設定する。