ローカル環境のセットアップ

仮想マシン上で Drupal 9 をインストールする

『使ってみよう!Drupal』

このセクションの内容

  • Drupal の動作環境
  • ffdsm(ふづむ)実習環境について
  • Drupal 9 のインストール手順

Drupal の動作環境

LAMP スタック

  • L:Linux
  • A:Apache
  • M:MySQL/MariaDB
  • P:PHP

システム要件

Drupal 9 のシステム要件

ミドルウェア 要件
Web サーバー Nginx 0.7.x 以上
Apache 2.4.7 以上
データベース MySQL / Percona 5.7.8 以上
MariaDB 10.3.7 以上
SQLite 3.26 以上
PostgreSQL 10 (+pg_trgm)
PHP PHP 7.3 以上
PHP 8 (Drupal 9.1.0 〜)

Composer

PHP 用の依存関係管理ツール
https://getcomposer.org/

  • Drupal(8 以降)の開発/運用にほぼ必須
    • 初期プロジェクトの作成に
    • コアのアップデートに
    • モジュール/テーマのアップデートに
  • インストール方法

メールサーバー

  • Drupal からの送信メールを中継する機能
    • パスワード再設定
    • 管理者への通知メール
  • ローカル環境からの誤配信に注意
  • 開発環境ではテスト用サーバーが安心:
    • 実際には中継しない
    • 配信されたメールの閲覧機能を提供

テスト用メールサーバーの例

Drush

https://www.drush.org/
Drupal をコマンドラインで操作するツール

バージョン対応

Drupal Drush PHP インストール形態
8.4 以上、9 10 7.1 以上 プロジェクト内
8.4 以上 9 5.6 以上 プロジェクト内
7、8.3 以下 8 5.4.5 以上 グローバル

drush のパス解決

├── [site1]
│   ├── composer.json
│   ├── composer.lock
│   ├── [vendor]
│   │   └── [drush]
│   │       └── [drush]
│   │           └── drush*
│   └── [web]
│       └── [sites]
│           └── [default]
│               ├── [files]
│               └── settings.php
├── [site2]
│   ├── composer.json
│   ├── composer.lock
│   ├── [vendor]
│   │   └── [drush]
│   │       └── [drush]
│   │           └── drush*
│   └── [web]
│       └── [sites]
│           └── [default]
│               ├── [files]
│               └── settings.php

Drush Launcher と Drush 8

現在位置から drush のパスを解決する方法

ffdsm の利用

ffdsm(ふづむ)とは

https://github.com/bkenro/ffdsm

  • Ubuntu ベースの Linux 環境
  • Drupal のシステム要件とツール一式
  • VirtualBox 仮想マシンのイメージ
  • Vagrant box:bkenro/ffdsm として配布

前提環境

セットアップ手順

Git を使用する場合:

git clone https://github.com/bkenro/ffdsm
cd ffdsm
vagrant up

それ以外:

  1. ffdsm プロジェクトの ZIP をダウンロード
  2. 展開してターミナルでその中に移動
  3. vagrant up を実行

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "bkenro/ffdsm"
  config.vm.network "private_network", ip: "192.168.12.34"
  config.vm.hostname = "ffdsm.internal"
  config.vm.provider "virtualbox" do |vb|
    vb.name = "vm-ffdsm"
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.synced_folder "www", "/var/www", type: "virtualbox"
end

フォルダ共有

参考:Windows 10 の場合

コマンドプロンプトのショートカット

  • Vagrantfile
  • ffdsm.cmd:環境変数を設定する cmd ファイル
  • ffdsm.lnk:コマンドプロンプトのショートカット
    • ffdsm.cmd を呼び出した状態で開く

起動例

C:\Users\bkenro\Desktop\ffdsm>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'bkenro/ffdsm' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'bkenro/ffdsm'
    default: URL: https://vagrantcloud.com/bkenro/ffdsm
==> default: Adding box 'bkenro/ffdsm' (v20210903.0) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/bkenro/boxes/ffdsm/versions/20210903.0/providers/virtualbox.box
    default:
    default: Calculating and comparing box checksum...
==> default: Successfully added box 'bkenro/ffdsm' (v20210903.0) for 'virtualbox'!
==> default: Importing base box 'bkenro/ffdsm'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'bkenro/ffdsm' version '20210903.0' is up to date...
==> default: Setting the name of the VM: vm-ffdsm
Vagrant is currently configured to create VirtualBox synced folders with
the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant
guest is not trusted, you may want to disable this option. For more
information on this option, please refer to the VirtualBox manual:

  https://www.virtualbox.org/manual/ch04.html#sharedfolders

This option can be disabled globally with an environment variable:

  VAGRANT_DISABLE_VBOXSYMLINKCREATE=1

or on a per folder basis within the Vagrantfile:

  config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /var/www => C:/Users/bkenro/Desktop/ffdsm/www

C:\Users\bkenro\Desktop\ffdsm>

起動した仮想マシン

Apache と PHP の動作確認

http://192.168.12.34/

http://192.168.12.34/info.php

Drupal のインストール

インストールの流れ

  1. 仮想マシンへのログイン
  2. プロジェクトの作成と Drush の導入
  3. サイト用のデータベースの作成
  4. サイト用の仮想ホストの設定
  5. ブラウザからの Drupal インストール

仮想マシンへのログイン

C:\Users\bkenro\Desktop\ffdsm>vagrant ssh
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun 26 Sep 2021 09:59:25 AM JST

  System load:  0.11              Users logged in:          0
  Usage of /:   4.4% of 61.31GB   IPv4 address for docker0: 172.17.0.1
  Memory usage: 15%               IPv4 address for eth0:    10.0.2.15
  Swap usage:   0%                IPv4 address for eth1:    192.168.12.34
  Processes:    128


This system is built by the Bento project by Chef Software
More information can be found at https://github.com/chef/bento
vagrant@ffdsm:~$

プロジェクトの作成

composer create-project drupal/recommended-project PROJECT
cd PROJECT
composer require drush/drush
  • PROJECT:プロジェクトのディレクトリ名
  • カレントディレクトリ配下に作成される

実行例

d9 という名前で作成する例:

# ログイン後 /var/www にプロジェクトを作成
vagrant@ffdsm:~$ cd /var/www
vagrant@ffdsm:/var/www$ composer create-project drupal/recommended-project d9
Creating a "drupal/recommended-project" project at "./d9"
Installing drupal/recommended-project (9.2.6)
  - Downloading drupal/recommended-project (9.2.6)
  - Installing drupal/recommended-project (9.2.6): Extracting archive
Created project in /var/www/d9
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 63 installs, 0 updates, 0 removals
  - Downloading composer/installers (v1.12.0)
  - Downloading drupal/core-composer-scaffold (9.2.6)
・・・
  - Installing composer/installers (v1.12.0): Extracting archive
  - Installing drupal/core-composer-scaffold (9.2.6): Extracting archive
・・・
Package doctrine/reflection is abandoned, you should avoid using it. Use roave/better-reflection instead.
Generating autoload files
40 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Scaffolding files for drupal/core:
  - Copy [project-root]/.editorconfig from assets/scaffold/files/editorconfig
  - Copy [project-root]/.gitattributes from assets/scaffold/files/gitattributes
  - Copy [web-root]/.csslintrc from assets/scaffold/files/csslintrc
  - Copy [web-root]/.eslintignore from assets/scaffold/files/eslintignore
・・・

  Congratulations, you’ve installed the Drupal codebase
  from the drupal/recommended-project template!

・・・
# プロジェクトに移動して Drush をインストール
vagrant@ffdsm:/var/www$ cd d9
vagrant@ffdsm:/var/www/d9$ composer require drush/drush
Using version ^10.6 for drush/drush
./composer.json has been updated
Running composer update drush/drush
Loading composer repositories with package information
Updating dependencies
Lock file operations: 24 installs, 0 updates, 0 removals
  - Locking chi-teck/drupal-code-generator (1.33.1)
  - Locking consolidation/annotated-command (4.3.2)

・・・
Generating autoload files
44 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
vagrant@ffdsm:/var/www/d9$

Drush の実行確認

vagrant@ffdsm:/var/www/d9$ pwd
/var/www/d9
vagrant@ffdsm:/var/www/d9$ drush version
 Drush version : 10.6.0 
vagrant@ffdsm:/var/www/d9$ cd /var/www
vagrant@ffdsm:/var/www/d9$ pwd
/var/www
vagrant@ffdsm:/var/www$ drush version
 Drush Version   :  8.4.8 

vagrant@ffdsm:/var/www$

データベースの作成

sql:create コマンド:

drush sql:create \
  --db-su=ADMIN_USER \
  --db-su-pw=ADMIN_PASS \
  --db-url="mysql://USER:PASS@127.0.0.1/DBNAME"
  • ADMIN_USER:DBMS 管理ユーザー名
  • ADMIN_PASS:DBMS 管理ユーザーのパスワード
  • USER:作成するデータベースのユーザー名
  • PASS:作成するデータベースのユーザーのパスワード
  • DBNAME:作成するデータベースの名前

実行例

vagrant@ffdsm:/var/www$ cd d9
vagrant@ffdsm:/var/www/d9$ drush sql:create \
> --db-su=dba \
> --db-su-pw=dba \
> --db-url="mysql://d9user:d9pass@127.0.0.1/d9"
Creating database d9. Any existing database will be dropped!

 Do you really want to continue? (yes/no) [yes]:
 > yes

vagrant@ffdsm:/var/www/d9$ mysql -u d9user -pd9pass d9
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 40
Server version: 10.3.31-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [d9]> show databases;
+--------------------+
| Database           |
+--------------------+
| d9                 |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)

MariaDB [d9]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.002 sec)

MariaDB [d9]> exit
Bye
vagrant@ffdsm:/var/www/d9$

仮想ホストの設定

$ cd /etc/apache2/sites-available
$ sudo cp example.conf d9.conf
$ sudo vi d9.conf

d9.conf の編集

/etc/apache2/sites-available/d9.conf

<VirtualHost *:80>
  DocumentRoot /var/www/d9/web
  ServerName d9.internal

  ErrorLog /error.log
  CustomLog /access.log combined

  <Directory "/var/www">
    AllowOverride All
  </Directory>

</VirtualHost>

設定の反映

$ sudo a2ensite d9.conf
$ sudo systemctl restart apache2

hosts ファイルの設定

  • Mac や Linux の場合
    /etc/hosts
  • Windows の場合
    C:\Windows\system32\drivers\etc\hosts

hosts ファイルに下記を追加:

192.168.12.34     d9.internal

Drupal のインストール

インストール完了

MailHog の使い方

サイトからのメール送信テスト:

メールの閲覧

動画でチェック

まとめ

このセクションで学んだこと

  • Drupal の動作環境
  • ffdsm(ふづむ)実習環境について
  • Drupal 9 のインストール手順