目次
はじめに
この記事は、WSL2+WardenでMagento2の環境構築をする方法の備忘録のDenによる焼き直しです。
DenとはWardenをForkしたリポジトリで、Wardenとの違いとして下記のように述べられています。
- Alpine Linuxをベースにした軽量なイメージの使用
- より迅速なアップデートスケジュール
githubに使用可能なサービスのバージョンがリストしてあったり、単純にコマンドが短かったりと、使いやすい部分が多いので、私は環境を全てDenに置き換えました。
今回はDenへの移行方法と、Magento2のインストール方法を紹介します。
環境
1 | 2 |
---|---|
WSL2 | 1.2.5.0 |
Ubuntu | 22.04 |
Den | 1.0.0-beta.14 |
WSL2のインストール
WSL2(Windows Subsystem for Linux 2)とは、Windows内でLinuxを実行できる仕組みである。(詳細はマイクロソフトのドキュメント)
マイクロソフトのドキュメントにあるインストール方法の通りに実行すれば、wsl2をインストールできる。
Denのインストール
1.Homebrewをインストールする
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2.Denをインストールし、Global Serviceを起動する
brew install swiftotter/den/den
den svc up
3.起動に成功したら、以下のURLで確認できる。
・https://traefik.den.test/
・https://portainer.den.test/ (Defaultではオフ)
・https://dnsmasq.den.test/
・https://mailhog.den.test/
PortainerはDockerのコンテナ等をGUIで管理できるツールですが、デフォルトではオフになっています。
オンにしたい場合は~/.den/.env
にDEN_SERVICE_PORTAINER=1
を追記してからden svc up
します。
接続できなかった場合:
Denのドキュメントにもあるように、dnsmasqサービスによるDNSの自動解決には、DNSリクエストがローカルネットワークを経由する必要がある。
Windowsの設定方法は、このサイトに分かりやすく載っている。
インターネットプロトコル バージョン 4 (TCP/IPv4)の優先DNSを127.0.0.1に設定する。
Wardenを使用していた方はDenに移行する際、den install
を実行することで、SSL証明書関連のデータをDenに移植できます。
Magento環境の構築
1.プロジェクトのルートディレクトリで下記コマンドを実行。
den env-init [projectname] [environment type]
[projectname]:プロジェクトの名前を自由に決める。
[environment type]:ドキュメントにあるタイプの中から一つ選ぶ。今回はmagento2の構築なのでmagento2とする。
.envというファイルが生成されるので、PHPのバージョンなどを変更したいときはここに記述する。
2.SSL証明書の作成
den sign-certificate [projectname].test
3.プロジェクトの環境を立ち上げる
den env up -d
4.php-fpmコンテナに入る
den shell
5.composerでMagento2をダウンロードする
META_PACKAGE=magento/project-community-edition META_VERSION=2.4.x
composer create-project --repository-url=https://repo.magento.com/ \
"${META_PACKAGE}" . "${META_VERSION}"
META_VERSION=2.4.xにMagentoのバージョンを入れる。
6.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
#開発環境では、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.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からdenに変わっただけで、他の部分は変わりありません。
ただ、少しでも便利に、軽量にしたいという方はぜひDenへの移行を検討してみてください。