WSL2インストールとLANDOを使用したローカル環境の構築

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

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

Installation
Redirect for install instructions

環境設定

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

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

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

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

Windows
Install Lando on Windows using PowerShell script

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

なんかWSL2がインターネットにつながらなくなったときの解決方法 - Qiita
#なんかWSL2でネットワークが動かなくなった。最近、WSL2をぼちぼち使っている中で、インターネットにアクセスできなくなりました。そこで、魔法の呪文$ wsl --shutdownWSL2…
https://www.usagi1975.com/202006082022/
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 Ubuntuxxxx
wsl --list
wsl --list

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

同じディストリビューションを再インストールしたい場合は、WINDOWSのマイクロソフトストアで対象ディストリビューションのアプリ(ex. Ubuntu20.04)をアンインストールをしなくても、再度WSL2側でUBUNTUの起動すると再度環境を構築することが可能です。

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

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

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

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

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

wsl --install -d Ubuntu-22.04

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

DOCKERとLANDOの手動インストール

マニュアルでのインストールは以下のサイトを参照

Dockerのインストール

Install Docker Desktop on Windows
Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docker wsl2 Got permission denied while trying to connect to the Docker daemon socket
[windows]の[Docker Desktop]で[WSL]上でdocker動かそうとしたら上記のエラーでた場合の対応

sudo chmod 666 /var/run/docker.sock

これで動いた
docker.sockにすべてのrwの権限もたせたるようにすればよい

Landoのインストール

Installation
Redirect for install instructions

Docker Dependencyエラーがでてインストールできない
Dockerをインストール済みなのにDocker Dependencyエラーが発生する場合は、オプション --ignore-depends=docker-ce をLANDOインストールコマンドに付加します。

sudo sudo dpkg -i --ignore-depends=docker-ce lando-x64-stable.deb

スクリプトでインストール

スクリプトをこちらです。

Ubuntuをインストールした後、スクリプトを実行します。

#INSTALL DOCKER/DOCKER-COMPOSER/DOCKER-MACHINE/KUSANAGI-ROD

echo "/windows/system32/drivers/etc/hostsで上記FDQNが127.0.0.1に紐付けられていることを確認ください"
echo "INSTALL DOCKER/DOCKER-COMPOSE/DOCKER-MACHINE/LANDO/KUSANAGI-ROD"
read -p "Press [Enter] key to move on to the next."

#update
sudo apt-get update 
echo "ubuntu update has completed"
read -p "Press [Enter] key to move on to the next."

sudo apt-get upgrade
echo "ubuntu upgrade has completed"
read -p "Press [Enter] key to move on to the next."

#set name and email to git
git config --global user.name "sinceretechnology"
git config --global user.email "admin@sinceretechnology.com.au"

#install gettext (msgfmt)
sudo apt-get install gettext

#install docker
sudo apt-get remove docker docker-engine docker.io containerd runc


sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

#docker test
sudo docker run hello-world

sudo usermod -aG docker ${USER}

echo "DOCKER INSTALL COMPLETED"
read -p "Press [Enter] key to move on to the next."


#install docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose version
echo "Docker-compose installed"
read -p "Press [Enter] key to move on to the next."


#install docker-machine
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
chmod +x /tmp/docker-machine &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

echo "Docker-machine installed"
read -p "Press [Enter] key to move on to the next."

#install LANDO
wget https://files.lando.dev/installer/lando-x64-stable.deb
sudo dpkg -i lando-x64-stable.deb
echo "LANDO INSTALL COMPLETED"

#install kusanagi rod
curl https://raw.githubusercontent.com/prime-strategy/kusanagi-docker/master/install.sh |bash

echo "KUSANAGI-ROD INSTALL COMPLETED"

もしくはこちらから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

参考URL

WSL2 のインストール,WSL2 上への Ubuntu のインストールと利用(Windows 11 対応の記事)(Windows 上)
WSL2のインストールとUbuntuの利用手順を解説する&#6529...
このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

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