DockerとDDEVを使用してローカルマシンでDrupal9Webサイトを開発する方法

提供:Dev Guides
移動先:案内検索

著者は、 Diversity in Tech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

DDEV は、Dockerを使用してさまざまなPHPフレームワークのローカル開発環境を構築するオープンソースツールです。 コンテナ化の力を使用して、DDEVは、複数の技術スタックと複数のクラウドサーバーを使用する複数のプロジェクトでの作業方法を大幅に簡素化できます。 DDEVには、 WordPressLaravelMagentoTYPO3Drupalなどのテンプレートが含まれています。

Drupal 9 は、DrupalCMS向けに2020年6月3日にリリースされました。 使いやすさとモジュールとテーマの膨大なライブラリで知られるDrupalは、あらゆるサイズのさまざまなWebサイトとアプリケーションを構築および保守するための人気のあるPHPフレームワークです。

このチュートリアルでは、DDEVを使用してローカルマシンでDrupal9Webサイトの開発を開始します。 これにより、最初にWebサイトを構築し、後で準備ができたら、プロジェクトを運用サーバーにデプロイできます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

注:リモートサーバーでDDEVを使用してDrupal 9を開発することは可能ですが、Webブラウザーでlocalhostにアクセスするためのソリューションが必要になります。 DDEVコマンドddevsharengrokと連携して、サーバーへの安全なトンネルを作成し、あなたや他の利害関係者が開発サイトを表示できるようにします。 個人的に使用する場合は、リモートサーバーにGUIをインストールし、そのインターフェイス内のWebブラウザーを介して開発サイトにアクセスすることもできます。 これを行うには、 Ubuntu20.04にVNCをインストールして構成する方法に関するガイドに従うことができます。 さらに迅速なGUIソリューションについては、Ubuntu20.04でX2Goを使用してリモートデスクトップをセットアップする方法に関するガイドに従うことができます。


ステップ1—DDEVのインストール

このステップでは、ローカルマシンにDDEVをインストールします。 オプション1にはmacOSの手順が含まれ、オプション2にはLinuxの手順が含まれています。 このチュートリアルは、DDEVバージョン1.15.0でテストされました。

オプション1—macOSへのDDEVのインストール

DDEVは、macOSユーザーがHomebrewパッケージマネージャーを使用してツールをインストールすることをお勧めします。 次のbrewコマンドを使用して、最新の安定版リリースをインストールします。

brew tap drud/ddev && brew install drud/ddev/ddev

絶対に最新のバージョンが必要な場合は、brewを使用してddev-edgeをインストールできます。

brew tap drud/ddev-edge && brew install drud/ddev-edge/ddev

すでにDDEVのバージョンがインストールされている場合、またはバージョンを更新したい場合は、DDEVをシャットダウンし、brewを使用してインストールを更新します。

ddev poweroff
brew upgrade ddev

DDEVをインストールまたは更新したら、ddev versionを実行してソフトウェアを確認します。

ddev version

次のような出力が表示されます。

OutputDDEV-Local version  v1.15.0
commit              v1.15.0
db                  drud/ddev-dbserver-mariadb-10.2:v1.15.0
dba                 phpmyadmin/phpmyadmin:5
ddev-ssh-agent      drud/ddev-ssh-agent:v1.15.0
docker              19.03.8
docker-compose      1.25.5
os                  darwin
router              drud/ddev-router:v1.15.0
web                 drud/ddev-webserver:v1.15.0

DDEVには、強力なCLIまたはコマンドラインインターフェイスが含まれています。 ddevを実行して、いくつかの一般的なコマンドについて学習します。

ddev

次の出力が表示されます。

OutputCreate and maintain a local web development environment.
Docs: https://ddev.readthedocs.io
Support: https://ddev.readthedocs.io/en/stable/#support

Usage:
  ddev [command]

Available Commands:
  auth             A collection of authentication commands
  composer         Executes a composer command within the web container
  config           Create or modify a ddev project configuration in the current directory
  debug            A collection of debugging commands
  delete           Remove all project information (including database) for an existing project
  describe         Get a detailed description of a running ddev project.
  exec             Execute a shell command in the container for a service. Uses the web service by default.
  export-db        Dump a database to a file or to stdout
  help             Help about any command
  hostname         Manage your hostfile entries.
  import-db        Import a sql file into the project.
  import-files     Pull the uploaded files directory of an existing project to the default public upload directory of your project.
  list             List projects
  logs             Get the logs from your running services.
  pause            uses 'docker stop' to pause/stop the containers belonging to a project.
  poweroff         Completely stop all projects and containers
  pull             Pull files and database using a configured provider plugin.
  restart          Restart a project or several projects.
  restore-snapshot Restore a project's database to the provided snapshot version.
  sequelpro        This command is not available since sequel pro.app is not installed
  share            Share project on the internet via ngrok.
  snapshot         Create a database snapshot for one or more projects.
  ssh              Starts a shell session in the container for a service. Uses web service by default.
  start            Start a ddev project.
  stop             Stop and remove the containers of a project. Does not lose or harm anything unless you add --remove-data.
  version          print ddev version and component versions

Flags:
  -h, --help          help for ddev
  -j, --json-output   If true, user-oriented output will be in JSON format.
  -v, --version       version for ddev

Use "ddev [command] --help" for more information about a command.

DDEV CLIの使用の詳細については、公式のDDEVドキュメントにアクセスしてください。

ローカルマシンにDDEVをインストールすると、Drupal 9をインストールして、Webサイトの開発を開始する準備が整います。

オプション2—LinuxへのDDEVのインストール

Linuxオペレーティングシステムでは、Homebrew for Linuxを使用するか、公式のインストールスクリプトを使用してDDEVをインストールできます。 Ubuntuでは、aptパッケージマネージャーでパッケージのリストを更新することから始めます(Debianではaptを使用できます。それ以外の場合は、Linuxディストリビューションに関連付けられている同等のパッケージマネージャーを使用します)。

sudo apt update

次に、Ubuntuの公式リポジトリからいくつかの前提条件パッケージをインストールします。

sudo apt install build-essential apt-transport-https ca-certificates software-properties-common curl

これらのパッケージを使用すると、公式のGitHubリポジトリからDDEVインストールスクリプトをダウンロードできます。

次に、スクリプトをダウンロードします。

curl -O https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh

スクリプトを実行する前に、nanoまたはお好みのテキストエディタでスクリプトを開き、その内容を確認してください。

nano install_ddev.sh

スクリプトの内容を確認し、満足したら、ファイルを保存して閉じます。 これで、インストールスクリプトを実行する準備が整いました。

chmodコマンドを使用して、スクリプトを実行可能にします。

chmod +x install_ddev.sh

次に、スクリプトを実行します。

./install_ddev.sh

インストールプロセスでは、いくつかの設定を確認するか、sudoパスワードを入力するように求められる場合があります。 インストールが完了すると、LinuxオペレーティングシステムでDDEVを使用できるようになります。

ddev versionを実行して、ソフトウェアを確認します。

ddev version

次のような出力が表示されます。

OutputDDEV-Local version  v1.15.0
commit              v1.15.0
db                  drud/ddev-dbserver-mariadb-10.2:v1.15.0
dba                 phpmyadmin/phpmyadmin:5
ddev-ssh-agent      drud/ddev-ssh-agent:v1.15.0
docker              19.03.8
docker-compose      1.25.5
os                  linux
router              drud/ddev-router:v1.15.0
web                 drud/ddev-webserver:v1.15.0

DDEVは、強力なCLIまたはコマンドラインインターフェイスです。 ddevを何もせずに実行して、いくつかの一般的なコマンドについて学習します。

ddev

次の出力が表示されます。

OutputCreate and maintain a local web development environment.
Docs: https://ddev.readthedocs.io
Support: https://ddev.readthedocs.io/en/stable/#support

Usage:
  ddev [command]

Available Commands:
  auth             A collection of authentication commands
  composer         Executes a composer command within the web container
  config           Create or modify a ddev project configuration in the current directory
  debug            A collection of debugging commands
  delete           Remove all project information (including database) for an existing project
  describe         Get a detailed description of a running ddev project.
  exec             Execute a shell command in the container for a service. Uses the web service by default.
  export-db        Dump a database to a file or to stdout
  help             Help about any command
  hostname         Manage your hostfile entries.
  import-db        Import a sql file into the project.
  import-files     Pull the uploaded files directory of an existing project to the default public upload directory of your project.
  list             List projects
  logs             Get the logs from your running services.
  pause            uses 'docker stop' to pause/stop the containers belonging to a project.
  poweroff         Completely stop all projects and containers
  pull             Pull files and database using a configured provider plugin.
  restart          Restart a project or several projects.
  restore-snapshot Restore a project's database to the provided snapshot version.
  sequelpro        This command is not available since sequel pro.app is not installed
  share            Share project on the internet via ngrok.
  snapshot         Create a database snapshot for one or more projects.
  ssh              Starts a shell session in the container for a service. Uses web service by default.
  start            Start a ddev project.
  stop             Stop and remove the containers of a project. Does not lose or harm anything unless you add --remove-data.
  version          print ddev version and component versions

Flags:
  -h, --help          help for ddev
  -j, --json-output   If true, user-oriented output will be in JSON format.
  -v, --version       version for ddev

Use "ddev [command] --help" for more information about a command.

DDEV CLIの使用の詳細については、公式のDDEVドキュメントにアクセスしてください。

ローカルマシンにDDEVをインストールすると、Drupal 9をデプロイして、Webサイトの開発を開始する準備が整います。

ステップ2—DDEVを使用して新しいDrupal9サイトをデプロイする

DDEVを実行したら、これを使用してDrupal固有のファイルシステムを作成し、Drupal 9をインストールしてから、標準のWebサイトプロジェクトを開始します。

まず、プロジェクトのルートディレクトリを作成してから、その中に移動します。 この場所から残りのすべてのコマンドを実行します。 このチュートリアルではd9testを使用しますが、ディレクトリに別の名前を付けることができます。 ただし、DDEVはハイフンでつながれた名前を適切に処理しないことに注意してください。 my-projectdrupal-site-1などのディレクトリ名は避けることをお勧めします。

プロジェクトのルートディレクトリを作成し、内部をナビゲートします。

mkdir d9test
cd d9test

DDEVは、特定のCMSプラットフォームに一致するディレクトリツリーの作成に優れていますddev configコマンドを使用して、Drupal9に固有のディレクトリ構造を作成します。

ddev config --project-type=drupal9 --docroot=web --create-docroot

次のような出力が表示されます。

OutputCreating a new ddev project config in the current directory (/Users/sammy/d9test)
Once completed, your configuration will be written to /Users/sammy/d9test/.ddev/config.yaml

Created docroot at /Users/sammy/d9test/web
You have specified a project type of drupal9 but no project of that type is found in /Users/sammy/d9test/web
Ensuring write permissions for d9new
No settings.php file exists, creating one
Existing settings.php file includes settings.ddev.php
Configuration complete. You may now run 'ddev start'.

--project-type=drupal9ddev configコマンドに渡したため、DDEVはDrupalWebサイトのデフォルトの組織を表すいくつかのサブディレクトリとファイルを作成しました。 プロジェクトディレクトリツリーは次のようになります。

Drupal9ディレクトリツリー

.
├── .ddev
│   ├── .gitignore
│   ├── config.yaml
│   ├── db-build
│   │   └── Dockerfile.example
│   └── web-build
│       └── Dockerfile.example
└── web
    └── sites
        └── default
            ├── .gitignore
            ├── settings.ddev.php
            └── settings.php

6 directories, 7 files

.ddev/がddev構成のメインフォルダーになります。 web/が新しいプロジェクトのdocrootになります。 いくつかの特定のsettings.ファイルが含まれます。 これで、新しいDrupalプロジェクトの最初の足場ができました。

次のステップは、プラットフォームを初期化することです。これにより、必要なコンテナとネットワーク構成が構築されます。 DDEVはポート80および443にバインドするため、マシンでApacheなどのWebサーバーを実行している場合、またはこれらのポートを使用するその他のサーバーを実行している場合は、続行する前にこれらのサービスを停止してください。

ddev startコマンドを使用して、プラットフォームを初期化します。

ddev start

これにより、プロジェクトのすべてのDockerベースのコンテナーがビルドされます。これには、Webコンテナー、データベースコンテナー、およびphpmyadminが含まれます。 初期化が完了すると、次のような出力が表示されます(ポート番号は異なる場合があります)。

...
[secondary_label Output]
Successfully started d9test
Project can be reached at http://d9test.ddev.site http://127.0.0.1:32773

注:DDEVはここで舞台裏でDockerコンテナーを開始していることに注意してください。 これらのコンテナを表示したり、実行されていることを確認したりする場合は、いつでもdocker psコマンドを使用できます。

docker ps

現在実行している他のコンテナと並んで、それぞれ異なるイメージを実行している4つの新しいコンテナがあります:php-myadminddev-webserverddev-router、および [X171X ]。


ddev startはコンテナを正常に構築し、2つのURLを含む出力を提供しました。 この出力には、プロジェクトは「http://d9test.ddev.siteおよびhttp://127.0.0.1:32773で到達可能」と示されていますが、これらのURLに今すぐアクセスするとエラーが発生します。 Drupal 8以降、Drupalコアとcontribモジュールは依存関係のように機能します。 したがって、Webブラウザーに何かをロードする前に、まずPHPプロジェクトのパッケージマネージャーであるComposerを使用してDrupalのインストールを完了する必要があります。

DDEVの最も便利で洗練された機能の1つは、ComposerコマンドをDDEVCLIを介してコンテナー化された環境に渡すことができることです。 これは、マシンの特定の構成を開発環境から分離できることを意味します。 ローカルPHP開発に一般的に伴うさまざまなファイルパス、依存関係、およびバージョンの問題を管理する必要がなくなりました。 さらに、最小限の労力で、さまざまなフレームワークと技術スタックを使用して、複数のプロジェクト間でコンテキストをすばやく切り替えることができます。

ddev composerコマンドを使用して、drupal/recommended-projectをダウンロードします。 これにより、Drupalコア、そのライブラリ、およびその他の関連リソースがダウンロードされ、デフォルトのプロジェクトが作成されます。

ddev composer create "drupal/recommended-project"

次に、DrushまたはDrupalShellと呼ばれる最後のコンポーネントをダウンロードします。 このチュートリアルでは1つのdrushコマンドのみを使用し、このチュートリアルは代替手段を提供しますが、drushはDrupal開発用の強力なCLIであり、効率を向上させることができます。

ddev composerを使用してdrushをインストールします。

ddev composer require "drush/drush"

これで、デフォルトのDrupal 9プロジェクトがビルドされ、drushがインストールされました。 次に、ブラウザでプロジェクトを表示し、Webサイトの設定を構成します。

ステップ3—Drupal9プロジェクトの構成

Drupal 9をインストールしたので、ブラウザーで新しいプロジェクトにアクセスできます。 これを行うには、ddev startを再実行して、出力された2つのURLのいずれかをコピーするか、次のコマンドを使用して、新しいブラウザウィンドウでサイトを自動的に起動します。

ddev launch

標準のDrupalインストールウィザードが表示されます。

ここでは2つのオプションがあります。 このUIを使用して、ウィザードに従ってインストールするか、ターミナルに戻ってdrushコマンドをddevに渡すことができます。 後者のオプションは、インストールプロセスを自動化し、ユーザー名とパスワードの両方としてadminを設定します。

オプション1—ウィザードの使用

ブラウザのウィザードに戻ります。 言語の選択で、ドロップダウンメニューから言語を選択し、保存して続行をクリックします。 次に、インストールプロファイルを選択します。 標準最小デモから選択できます。 選択して、保存して続行をクリックします。 Drupalは自動的に要件を確認し、データベースをセットアップして、サイトをインストールします。 最後のステップは、いくつかの構成をカスタマイズすることです。 ドメインで終わるサイト名とサイトのメールアドレスを追加します。 次に、ユーザー名とパスワードを選択します。 強力なパスワードを選択し、資格情報を安全な場所に保管してください。 最後に、定期的に確認するプライベートメールアドレスを追加し、地域の設定を入力して、保存して続行を押します。

新しいサイトにウェルカムメッセージが読み込まれます。

オプション2—コマンドラインの使用

プロジェクトのルートディレクトリから、次のddev execコマンドを実行し、drushを使用してデフォルトのDrupalサイトをインストールします。

ddev exec drush site:install --account-name=admin --account-pass=admin

これにより、ウィザードと同じようにサイトが作成されますが、ボイラープレート構成がいくつかあります。 ユーザー名とパスワードはadminになります。

次に、サイトを起動してブラウザで表示します。

ddev launch

これでWebサイトの構築を開始する準備が整いましたが、/sites/web/defaultディレクトリのアクセス許可が正しいことを確認することをお勧めします。 ローカルで作業している間、これは重要な問題ではありませんが、これらのアクセス許可を運用サーバーに転送すると、セキュリティ上のリスクが発生します。

ステップ4—権限を確認する

ウィザードのインストール中、またはウェルカムページが最初に読み込まれるときに、/sites/web/defaultディレクトリとそのディレクトリ内の1つのファイルsettings.phpのアクセス許可設定に関する警告が表示される場合があります。

インストールスクリプトの実行後、 Drupalは、すべてのグループに対して読み取りおよび実行するWeb / sites/defaultディレクトリのアクセス許可を設定しようとします。これは555のアクセス許可設定です。 また、default/settings.phpの権限をread-onlyまたは444に設定しようとします。 この警告が発生した場合は、プロジェクトのルートディレクトリからこれら2つのchmodコマンドを実行してください。 そうしないと、セキュリティリスクが発生します。

chmod 555 web/sites/default
chmod 444 web/sites/default/settings.php

正しい権限があることを確認するには、alh、およびdスイッチを指定して次のlsコマンドを実行します。

ls -alhd web/sites/default web/sites/default/settings.php

権限が次の出力と一致することを確認してください。

Outputdr-xr-xr-x 8 sammy staff 256 Jul 21 12:56 web/sites/default
-r--r--r-- 1 sammy staff 249 Jul 21 12:12 web/sites/default/settings.php

これで、ローカルマシンでDrupal9Webサイトを開発する準備が整いました。

ステップ5—Drupalで最初の投稿を作成する

Drupalの機能の一部をテストするために、WebUIを使用して投稿を作成します。

サイトの最初のページから、上部メニューの左端にあるコンテンツボタンをクリックします。 次に、青いコンテンツの追加ボタンをクリックします。 新しいページが表示されます。 Article をクリックすると、別のページが表示されます。

好きなタイトルとコンテンツを追加します。 DigitalOceanの壁紙の1つのような画像を追加することもできます。 準備ができたら、青い保存ボタンをクリックします。

最初の投稿がWebサイトに表示されます。

DockerとDDEVのおかげで、サーバーと対話することなく、ローカルマシンでDrupal9Webサイトを開発しています。 次のステップでは、ワークフローに対応するためにDDEVコンテナーを管理します。

ステップ6—DDEVコンテナの管理

プロジェクトの開発が終了したとき、または休憩したいときは、データの損失を心配せずにDDEVコンテナーを停止できます。 DDEVは、多くのプロジェクト間の迅速なコンテキスト切り替えを管理できます。 これは、その最も便利な機能の1つです。 DDEVコンテナを停止または削除した後でも、コードとデータは常にプロジェクトディレクトリに保持されます。

リソースを解放するために、いつでもDDEVを停止できます。 プロジェクトのルートディレクトリから、次のコマンドを実行します。

ddev stop

DDEVはグローバルに利用できるため、DDEVプロジェクトを指定する限り、どこからでもddevコマンドを実行できます。

ddev stop d9test

ddev listを使用して、すべてのプロジェクトを一度に表示することもできます。

ddev list

DDEVには、他の多くの便利なコマンドが含まれています。

DDEVを再起動して、いつでもローカルで開発を続けることができます。

結論

このチュートリアルでは、Dockerとコンテナ化の機能を使用して、DDEVを使用してDrupalサイトをローカルで開発しました。 DDEVは、多数のIDEともうまく統合され、 AtomPHPStorm 、および Visual Studio Code(vscode)の組み込みPHPデバッグを提供します。 ここから、 DDEV を使用したDrupalの開発環境の作成、またはWordpressなどの他のPHPフレームワークの開発についても学ぶことができます。