SlideShare a Scribd company logo
スタジオ・ウミ
Landoを利用した
Drupal開発環境構築
小林 基樹
2022年1月29日 DrupalCamp DEN 2022 Osaka
2
アジェンダ
AGENDA
● 自己紹介
● Landoを利用しない開発環境
● Landoの概要
● Lando利用 -基本編-
● Lando利用 -応用編-
● Q&A
3
自己紹介
● Studio Umi (2016−)
● Drupal 7/8/9
● バックエンド/フロントエンド
インフラetc...
Landoを利用しない開発環境
4
● XAMP,MAMP
○ 古より伝わるミドルウェア導入ツール
○ パッケージをインストールするだけで利用出来る手軽さ
○ 特定のPHPやDB(MySQL)のバージョンしか利用できない
● LAMP
○ Linux標準のパッケージ管理ツール(apt, yum)を利用して導入
○ パフォーマンス・チューニング等カスタマイズ可能
○ Linux自体のインストールやコマンドに精通している必要がある
● Docker
○ コンテナ型仮想環境管理ツール
○ 定義ファイル(docker-compose.yml)を一度作成すれば構築が容易
○ 初期学習コストが高い
Lando以前の開発環境
5
Landoの概要
6
● 各種ミドルウェアをローカル環境上にセットアップする為のツール
● バックエンドにDockerを利用
● レシピと呼ばれる各アプリケーションに応じた定義が事前に
用意されておりローカル環境を簡潔に用意できる
● Drupalだけでは無くWordPressやLaravelといった他アプリケーションの
開発環境としても利用することが可能
Landoの概要
7
Lando導入のメリット / デメリット
● メリット
○ ツール自体のインストールが容易
○ レシピに準拠すればPHP/データベース/WEBサーバーの変更が容易
(共通のバージョン・設定で環境が起動する
)
○ バックエンドにDockerを利用している為、構築/破壊が容易
○ ***.lndo.site というローカル環境専用のドメインが発行され
SSL証明書も用意されている為、SSLを利用した動作確認が可能
● デメリット
○ Windowsの場合、WSL2環境を用意する手間がかかる
○ レシピ外のパッケージ導入が面倒
(Dockerの知識が必要となる)
Landoの概要
8
Lando利用
- 基本編 -
9
Lando インストール
● https://docs.lando.dev/basics/installation.html
● Windowsの場合、WSL2の導入をおすすめ( wsl –install )
● https://github.com/lando/lando/releases より
OSにあわせたパッケージをダウンロード、インストール
● 「lando version」でバージョンが表示されればOK
Lando利用 -基本編-
10
チュートリアル (hello-lando WEBサイト)
● https://docs.lando.dev/basics/first-app.html
Lando利用 -基本編-
11
# 任意の場所にhelloディレクトリ作成
mkdir hello && cd hello
# index.html 作成
echo "<h1>Lando says hello what have we here?</h1>" > index.html
# lando実行定義ファイル生成 (.lando.yml)
lando init 
--source cwd 
--recipe lamp 
--webroot . 
--name hello-lando
# lando実行
lando start
# lando実行停止
lando stop
# lando実行環境破壊
lando destroy
Drupal9 レシピ(Apache + MySQL)
● https://docs.lando.dev/config/drupal9.html
Lando利用 -基本編-
12
# 任意の場所にhelloディレクトリ作成
mkdir d9 && cd d9
# lando実行定義ファイル生成 (.lando.yml)
lando init 
--source remote 
--remote-url https://www.drupal.org/download-latest/tar.gz 
--remote-options= "--strip-components 1" 
--recipe drupal9 
--webroot . 
--name d9
# lando実行
lando start
# lando情報 (DBアクセス情報等確認 )
lando info
Lando利用
- 応用編 -
13
PHP / WEBサーバー / データベースの切り替え
● PHPのバージョン変更 (7.4 -> 7.3)
● WEBサーバーの変更(Apache -> nginx)
● データベースの切り替え(MySQL -> PostgreSQL)
Lando利用 -応用編-
14
# vim .lando.yml
recipe: drupal9
config:
php: '7.3'
# vim .lando.yml
recipe: drupal9
config:
via: nginx
# vim .lando.yml
recipe: drupal9
config:
database: postgres
● サービスとして定義されている為、指定の定義を記載すれば利用可能
○ https://docs.lando.dev/config/phpmyadmin.html
○ https://docs.lando.dev/config/mailhog.html
PhpMyAdmin / MailHog の導入
Lando利用 -応用編-
15
# vim .lando.yml
recipe: drupal9
# PhpMyAdminにドメインでアクセスする為の設定
proxy:
phpmyadmin:
- pma.lndo.site
# PhpMyAdminサービスの定義
services:
phpmyadmin:
type: phpmyadmin
hosts:
- database
# vim .lando.yml
recipe: drupal9
# MailHogにドメインでアクセスする為の設定
proxy:
mailhog:
- mail.lndo.site
# MailHogサービスの定義
services:
mailhog:
type: mailhog
hogfrom:
- appserver
● レシピ/サービスとして定義されていないものは
docker-composeの要領で
記載する必要がある
pgAdmin の導入
Lando利用 -応用編-
16
# pgAdminにドメインでアクセスする為の設定
proxy:
pgadmin:
- pgadmin.lndo.site
# pgAdminの定義
services:
pgadmin:
type: compose
app_mount: false
services:
user: root
image: dpage/pgadmin4
command: /entrypoint.sh
ports:
- '80'
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: password
ご清聴ありがとうございました
17
18

More Related Content

What's hot

Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
 
Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
聡 大久保
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
Google Cloud Platform - Japan
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
ksk_ha
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
Unity Technologies Japan K.K.
 
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
Hiroshima JUG
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
SEGADevTech
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
Matsushita Satoshi
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 

What's hot (20)

Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 
Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
 
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Similar to Landoを利用したdrupal開発環境構築

What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform
惠 紀野
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
Suguru Yazawa
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
Drupal9 update (0214/2020)
Drupal9 update (0214/2020)Drupal9 update (0214/2020)
Drupal9 update (0214/2020)
Yasushi Osonoi
 
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
Yoshihiro Mizoguchi
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
Yoshikazu Aoyama
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2nd
mikoto20000
 
Sencha & Delphi Ready Studiy
Sencha & Delphi Ready StudiySencha & Delphi Ready Studiy
Sencha & Delphi Ready Studiy
Jun Hosokawa
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
 
活動報告9 laravel5入門-
活動報告9  laravel5入門-活動報告9  laravel5入門-
活動報告9 laravel5入門-
vx-pc-club
 
Drupalサイトをセキュアに運用するには(入門編)
Drupalサイトをセキュアに運用するには(入門編)Drupalサイトをセキュアに運用するには(入門編)
Drupalサイトをセキュアに運用するには(入門編)
Yoshikazu Aoyama
 
clominal
clominalclominal
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
kishima7
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
Yahoo!デベロッパーネットワーク
 
死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglist
Kuniyoshi Tone
 

Similar to Landoを利用したdrupal開発環境構築 (20)

What's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App PlatformWhat's Drupal & Drupal as a Employee App Platform
What's Drupal & Drupal as a Employee App Platform
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Drupal9 update (0214/2020)
Drupal9 update (0214/2020)Drupal9 update (0214/2020)
Drupal9 update (0214/2020)
 
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2nd
 
Sencha & Delphi Ready Studiy
Sencha & Delphi Ready StudiySencha & Delphi Ready Studiy
Sencha & Delphi Ready Studiy
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
活動報告9 laravel5入門-
活動報告9  laravel5入門-活動報告9  laravel5入門-
活動報告9 laravel5入門-
 
Drupalサイトをセキュアに運用するには(入門編)
Drupalサイトをセキュアに運用するには(入門編)Drupalサイトをセキュアに運用するには(入門編)
Drupalサイトをセキュアに運用するには(入門編)
 
clominal
clominalclominal
clominal
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
死闘!Og mailinglist
死闘!Og mailinglist死闘!Og mailinglist
死闘!Og mailinglist
 

Landoを利用したdrupal開発環境構築