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

序章

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

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

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

前提条件

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

注:リモートサーバーでDDEVを使用してDrupal 9を開発することは可能ですが、アクセスするにはソリューションが必要になります localhost Webブラウザで。 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 最新の安定版リリースをインストールするコマンド:

  1. brew tap drud/ddev && brew install drud/ddev/ddev

絶対に最新のバージョンを好む場合は、次を使用できます brew インストールする ddev-edge:

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

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

  1. ddev poweroff
  2. brew upgrade ddev

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

  1. ddev version

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

Output
DDEV-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 いくつかの一般的なコマンドについて学ぶために:

  1. ddev

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

Output
Create 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 パッケージマネージャー(使用できます apt Debianでは、それ以外の場合は、Linuxディストリビューションに関連付けられている同等のパッケージマネージャーを使用します):

  1. sudo apt update

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

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

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

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

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

スクリプトを実行する前に、 nano またはお好みのテキストエディタを使用して、その内容を調べます。

nano install_ddev.sh

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

使用 chmod スクリプトを実行可能にするコマンド:

  1. chmod +x install_ddev.sh

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

  1. ./install_ddev.sh

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

走る ddev version ソフトウェアを確認するには:

  1. ddev version

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

Output
DDEV-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 いくつかの一般的なコマンドについて学ぶために他に何もなしで:

  1. ddev

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

Output
Create 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-project また drupal-site-1.

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

  1. mkdir d9test
  2. cd d9test

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

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

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

Output
Creating 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=drupal9 あなたに ddev 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はポートにバインドします 80443したがって、マシンでApacheなどのWebサーバーを実行している場合、またはこれらのポートを使用するその他のサーバーを実行している場合は、続行する前にこれらのサービスを停止してください。

使用 ddev start プラットフォームを初期化するコマンド:

  1. 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 指図:

  1. docker ps

現在実行している他のコンテナと並んで、それぞれが異なるイメージを実行している4つの新しいコンテナがあります。 php-myadmin, ddev-webserver, ddev-router、 と ddev-dbserver-mariadb.

ddev start はコンテナを正常に構築し、2つのURLを含む出力を提供しました。 この出力はあなたのプロジェクトが「 http://d9test.ddev.sitehttp://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コア、そのライブラリ、およびその他の関連リソースがダウンロードされ、デフォルトのプロジェクトが作成されます。

  1. ddev composer create "drupal/recommended-project"

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

使用する ddev composer インストールする drush:

  1. ddev composer require "drush/drush"

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

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

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

  1. ddev launch

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

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

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

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

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

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

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

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

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

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

  1. ddev launch

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

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

ウィザードのインストール中、またはウェルカムページが最初に読み込まれるときに、 /sites/web/default ディレクトリとそのディレクトリ内の1つのファイル: settings.php.

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

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

正しい権限があることを確認するには、これを実行します ls とのコマンド a, l, h、 と d スイッチ:

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

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

Output
dr-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を停止できます。 プロジェクトのルートディレクトリから、次のコマンドを実行します。

  1. ddev stop

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

  1. ddev stop d9test

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

  1. ddev list

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

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

結論

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