【WSL2】LANDOを使用してローカル環境にWORDPRESSを構築する

この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました

LANDO公式サイトのインストール手順はこちらです。

Installation
Get the skinny on how to easily install Lando, a local development and DevOps tool, on macOS, Windows and Linux.

環境設定

WINDOWSの場合はWSL2でLINUX環境を構築します。UBUNTUディストリビューションをダウンロードして最新のUBUNTUをインストールします。

はじめに、WSL2について少し触れておきます。

WSL2にLANDOをインストールする手順はこちらに書かれていますが、少し古い情報のようです。

ただ、HOST IPの設定は参考になります。

Setup Lando on Windows with WSL2
Configure Lando to run on your Windows WSL2 system for better performance when developing on Windows.

DOCKERは、LINUX版DOCKERをインストールするとDNSがDOKCERによって上書きされてしまいインターネットで外部にアクセスできないという現象が報告されています。今回は、WINDOWS版のDOCKER DESKTOPを使用しました。

なんかWSL2がインターネットにつながらなくなったときの解決方法 - Qiita
#なんかWSL2でネットワークが動かなくなった。最近、WSL2をぼちぼち使っている中で、インターネットにアクセスできなくなりました。そこで、魔法の呪文$ wsl --shutdownWSL2…
WSL2+docker そして外部通信がブロックされてしまう問題対策
WSL2からホストのネットワークと独立して、起動時に仮想アダプタを生成してそこからインターネットに接続します。ところが、カスペルスキーやSymantecのサードパーティー製ファイアウォールがこの通信をブロックしてしまいます。 > 暫定回避策 Win10のホストとの通信はできるので、squidなどのプロキシサーバー...
WSL 内の Docker がネットに繋がらない : (*x).b=z->a+y/c
◆ WSL はネットにつながるのに Docker コンテナ内からはつながらない◆ IP アドレスではアクセスできるので DNS 解決できてないみたい◆ Docker に割り当てられる IP アドレス範囲を変えてみたら解決できた
WSL2 で外部と通信できないときの対処方法 - 蒼の王座・裏口
WSL2をインストールして、Ubuntuから外部と通信しようとするとエラーで接続できなかった。 その対処方法が、GithubのIssueに上がっていた。 WSL上で以下のコマンド編集をして、ネットワーク設定を変更する。 … 続きを読む »

WSL2のUBUNTUにDOCKERをインストールしたい人はこちらのサイトが参考になります。

Google Public DNSを設定すれば問題なく動作するようなので、うまくいけばこちらのほうが軽くていいかもしれません。

LANDOをインストール時に下記エラーの場合の対応法

lando : Depends: docker-ce but it is not installable | www.drupaladicto.com

Additional Setup

Because each Linux distribution handles things differently, these considerations may or may not apply to you:

  • If your distro uses a docker group, make sure your user is a member of it:
sudo usermod -aG docker $USE

You will need to log out for this change to take effect. Sometimes a reboot is necessary. See this for more details.

WSL2でディストリビューションのアンインストール

wsl --list
wsl --unregister Ubuntu
wsl --list

WINDOWS側で設定からディストリビューションのアンインストールで行うと完了です。

WINDOWS側でアンインストールをせずに再度WSL2側でUBUNTUの起動すると再度環境を構築することが可能です。

WSL2で上記のような登録解除の処理をせずにWINDOWS側でアプリのアンインストールやインストールを実施するとWSL2でエラーになります。

また、すべてのディストリビューションを削除してもDOCKER-DESKTOPなどのアプリが登録解除されないまま残っていてそれがデフォルトになっている可能性があります。その場合は残っているアプリを完全に削除してサイドインストールするか、新しいディストリビューションをインストールした後にデフォルトを変更してください。

WSL2で新しいディストリビューションのインストール

WINDOWS10以降でWSL2が使用できます。ここでWSL2のインストールは省きますが、WINDOWSの公式サイトなどから設定してください。

WSL2が正しく構築されていると、MICROSOFT STOREからUBUNTUディストリビューションをインストールするかWSLコマンドで対象にディストリビューションをインストールしてください

インストールが完了すると、ターミナルからUBUNTUを操作することができるようになります。

DOCKERとLANDOのインストール

まず最初に最低限必要なZIPコマンドをインストールします。

sudo apt install zip unzip

次にこちらからDOKCER関連およびLANDOとKUSANAGI RODインストールスクリプトを取得解凍してホームディレクトリに置きます。

GitHub - matubara/ubuntu-setup
Contribute to matubara/ubuntu-setup development by creating an account on GitHub.

SHELLスクリプトを実行すると自動的にDOCKER/DOCKER-COMPOSE/DOCKER-MACHINE/LANDO/KUSANAGI RODがインストールされます。

LANDOコマンドでローカル環境構築

LANDOはDOCKERを扱うためのツールです。LANDO設定ファイル(.landpo.yml)に作成したい環境を指定すると、LANDOはそれに従って環境を構築します。またこのLAND設定ファイルを作成するためのコマンドも用意されているので、対話方式で入力した情報で自動的に設定ファイルを作成することもできます。

今回は、WORDPRESS環境をLANDOで構築するために、一連のコマンドをスクリプトしました。

次のスクリプトを実行すると簡単に環境が構築できます。

GitHub - matubara/lando
Contribute to matubara/lando development by creating an account on GitHub.

WORDORESS版

スクリプトを実行するとフォルダ名を聞かれるので入力すると、フォルダを作成してその中にWORDPRESS環境を作成します。

./mkwordpress.sh
#!/usr/bin/bash
if [ $# -eq 0 ];then
    #プロンプトをechoを使って表示
    echo -n foldername=
    #入力を受付、その入力を「str」に代入
    read name
    echo "フォルダ名は ${name} でよろしいですか?"
    read -p "ok? (y/N): " yn
    case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
elif [ $# -eq 1 ];then
    name=$1
else
    echo "引数が不正です"
    exit 1
fi

    echo "現在起動中のコンテナをすべて停止する"
    docker stop $(docker ps -q)

#webrootフォルダ名をここで指定する
webroot=webroot

# Create folder and enter it
mkdir ${name} && cd ${name}

# Copy lando_conf to current folder
cp -rf ../lando_conf ./.lando_conf

# Initialize a wordpress recipe using the latest WordPress version
lando init \
  --source remote \
  --remote-url https://wordpress.org/latest.tar.gz \
  --recipe wordpress \
  --webroot ${webroot} \
  --name ${name}-app


echo "Rename webroot folder name to ${webroot}."
mv ./wordpress ./${webroot}

# Add xdebug service to .lando.yml
echo "Add xdebug service to .lando.yml"
sed -i "/webroot:/a \  xdebug: true\n  config:\n    php: .lando_conf/php.ini" .lando.yml

echo "Add phpAdmin service"
echo "" >> .lando.yml
echo "services:" >> .lando.yml
echo "  phpmyadmin:" >> .lando.yml
echo "    type: phpmyadmin" >> .lando.yml
echo "    hosts:" >> .lando.yml
echo "      - database" >> .lando.yml


echo "Rebuild docker based on .lando.yml"
# Rebuild it
lando rebuild -y

echo "Start it up"
# Start it up
lando start


# List information about this app
lando info


# Create a WordPress config file
lando wp config create \
  --dbname=wordpress \
  --dbuser=wordpress \
  --dbpass=wordpress \
  --dbhost=database \
  --path=${webroot}


# Install WordPress
lando wp core install \
  --url=https://${name}-app.lndo.site/ \
  --title="${name} App" \
  --admin_user=sinceretechnology \
  --admin_password=Melb#1999 \
  --admin_email=admin@sinceretechnology.com.au \
  --path=${webroot}

DRUPAL9版

スクリプトを実行するとフォルダ名を聞かれるので入力すると、フォルダを作成してその中にDRUPAL9環境を作成します。

./mkdrupal9.sh
#!/usr/bin/bash
if [ $# -eq 0 ];then
    #プロンプトをechoを使って表示
    echo -n foldername=
    #入力を受付、その入力を「str」に代入
    read name
    echo "フォルダ名は ${name} でよろしいですか?"
    read -p "ok? (y/N): " yn
    case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
elif [ $# -eq 1 ];then
    name=$1
else
    echo "引数が不正です"
    exit 1
fi

    echo "現在起動中のコンテナをすべて停止する"
    docker stop $(docker ps -q)

#webrootフォルダ名をここで指定する
webroot=web

# Create folder and enter it
mkdir ${name} && cd ${name}


# Initialize a drupal9 recipe

  lando init \
    --source cwd \
    --recipe drupal9 \
    --webroot ${webroot} \
    --name ${name} 
    
# Create latest drupal9 project via composer
lando composer create-project drupal/recommended-project:9.x tmp && cp -r tmp/. . && rm -rf tmp

# Start it up
lando start

# Install a site local drush
lando composer require drush/drush

# Install drupal
lando drush site:install --db-url=mysql://drupal9:drupal9@database/drupal9 -y

# List information about this app
lando info

LANDO用のWORDPRESS/DRUPALスクリプト

GitHub - matubara/lando
Contribute to matubara/lando development by creating an account on GitHub.

環境構築の公式LANDOサイト

こちらのサイトを主に参考にさせていただきました

LANDO公式サイトGETSTARTED WORPRESS編

Getting Started
Learn how to get started with the Lando WordPress recipe.

LANDO公式サイトGETSTARTED DRUPAL編

Getting Started
Learn how to get started with the Lando Drupal recipe.

LANDO公式サイト GETSTARTEDで紹介されたINITコマンドの使い方詳細はこちら

ご自身でLANDO環境のスクリプトを作成する際はこちらが参考になります

lando init
lando init is a powerful command that initializes a codebase for usage with a Lando recipe, it can pull code from Pantheon, GitHub and other remote sources.

LANDOでXDEBUGを使ってPHPSTORMでデバッグする

Lando + PhpStorm + Xdebug
Learn how to configure xdebug in Lando using PhpStorm.

WSL2のHOST IPの説明
https://docs.lando.dev/guides/setup-lando-on-windows-with-wsl-2.html

PHP/Javascript/WORDPRESS案件全般承ります

この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

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