当サイトをAWSにて公開以降、MacのLocal環境でDrupalに触れる機会がなかったのですが、Local環境にインストールしているDrupalのプロジェクトであるBootstrap5のサイトとCivicThemeのサイトの確認をするのに久しぶりにOrbstack > DDEVでMacにインストールしているDrupalを動かしました。
OrbStackとDDEVについては、過去の記事でまとめていますが概要を復習してみます。
- OrbStackはMacのローカルで動くLinuxの仮想マシンでありDockerとして使用出来ます。
- OrbStack公式より:"OrbStackは、高速で軽く、シンプルで使いやすいmacOSのDocker Desktopのドロップイン代替品です。コンテナとLinuxマシンの両方を実行します。"
- DDEVはLAMPやNode.jsのローカル環境を構築するツールで、Dockerのワークフローをローカル環境で実現します。
- DDEVはローカルでの構築を行うツールなので、VPSなどでコンテナを使用する場合OrbstackでDockerやKubernetesの設定を行います。私の環境では個人でDrupalやWordPressなどのCMSを使用しているだけなので、DockerやGitなどの共同開発ツールは使用していません。
- Gitはたまに使用しておりますが、コンテナの使用はしたことがないので機会があれば使用したいと考えています。
この2つのアプリケーションを使い以下の形でDrupalを動かしています。
- Macのローカル環境にOrbstackが提供するLinux仮想マシンを稼働、デフォルトでコンテナとして稼働
- Linux仮想マシン上にDDEVを使用しLAMP環境(Drupalに最適化)を構築してDrupalをインストールしています。
Introduction.
久しぶりに、Local環境を動かすので、DDEVをはじめComposerやDrush、Drupal Coreやテーマやモジュールなどいくつかのアップデートがあります。以下が#C01で紹介した私のLocal環境になります。OrbstackはGUIで使用していますので、アップデートがあると起動時に通知があり、手順に従うことで最新版にアップデートされます。
今回エディターで使用しているVscordの更新と機能拡張でインストールしているツールの更新も多数ありましたが、Vscord上で更新作業が完了しますので、手順については割愛します。
MacBookProM1(2021)モデル / mac OS Sequoia 15.1.1
- ターミナル iTerm 3.5.10 > 使用シェル Mac標準 Shell Zch
- パッケージマネージャー > HomeBrew 4.3.22
- ローカルサーバー(DrupalをMac内で動かすために必要) Orbstack Pro V1.8.2
- Local Docker環境 DDEV v1.23.4 > 1.24.0に更新
- PHP8.3.10
- MariaDB10.11.8
- Composer Version 2.7.9 > 2.8.3に更新
- Drupal Core 11.0.4 >11.0.9に更新 / Bootstrap5 Theme
- Drupal Core 10.0.3 >10.3.10に更新 / Civic Theme
- Bootstrap5 4.03
- Civic Theme 1.8.1 > 1.9.0に更新
エディター Vscord 1.93.1 > 1.95.3
- Github Copilot 1.229.0 > 1.248.0 Vscord 機能拡張
- Japanese Language Pack 1.93 >1.95 Vscord 機能拡張
- PHP Debag 1.35.0 Vscord 機能拡張
- Remote SSH 0.114.3 > 0.115.1 Vscord 機能拡張
- SSH: Editing Configuration Files 0.86.0 >0.87.0 Vscord 機能拡張
- Remote Explorer 0.4.3 Vscord 機能拡張
- Vim 1.28.1 > 1.29.0 Vscord 機能拡張
となっています。※ 2024/12/6(金) 時点。今回DDEVの更新と、Composerの更新、Drupal Coreの更新 モジュールやテーマの更新を行いました。しばらく起動していないのでアップデートが溜まっています。
私のローカル環境で行うDrupalでのサイト構築は
- MacのGUIからOrbstackを起動
- iTermを起動しDrupalをインストールしたディレクトリに移動 > $ cd drupal11-bootstrap5[プロジェクト名]
- DDEVの起動 $ ddev start > 仮想サーバーが起動しDrupalが利用可能になります。
- Drupalのサイトの確認 https://drupal11-bootstrap5[プロジェクト名].site
- DrupalAdminコンソールへのログイン
- Adminコンソールでサイトを構築
にて行なっています。
今回のアップデートはiTermでHomebrewやComposerを使用して行なっています。
Local環境のDrupalでのサイト構築は、インストールするモジュールのテストやバージョンによる依存性による不具合の確認、コンテンツタイプ、Viewsなど機能のテストや構成の確認、サイトの大まかなデザインなどに利用しており、仕様がある程度出来上がると、公開用のサーバーに同様な環境を作り以降はWeb上での作業になります。
今回、ローカル環境を動かしているのは、現在公開している10.3x系のサイトを11x系にアップデートするためのテスト環境をローカル環境に用意したかった事が理由になります。サイトデザインも突貫で作成しているのでもう少し読みやすい形を考えてみたいのでデザインの叩き台としての使用も同時に行なっていきます。
早速アップデートをしていきます。
ターミナルのプロンプトの表記について
- コンソール画面のプロンプトが%なのはiTermで私が普段使用しているシェルがMac標準のZshの為です。Macの環境に関わるターミナルのコマンドのプロンプトは全て%で表記しています。
- 記事後半にOrbstackのコンテナにログインしますが、OrbstackのコンテナはLinuxで動いておりシェルがBashなのでプロンプトの表記が$になっています。Linuxのターミナルのコマンドのプロンプトは全て$で表記しています。
- 他の記事で記載するターミナルのコマンドは、Lightsail、Bitnamiでの作業がほとんどであり標準で用意されるシェルがBashなのでプロンプトは$で表記しています
DDEV 1.23.4 > 1.24.0
DDEVのバージョンを1.23.4から1.24.0にアップデートしました。DDEVのアップデートはHomebrewを使います。バージョン確認とアップデートのコマンドで完了します。
DDEVのアップデート
DDEVのアップデートは、Homebrewを使います。
// 現行のバージョンの確認
% DDEV --version
ddev version v1.23.4
---
// 最新版にアップデート
% brew upgrade ddev/ddev/ddev
---
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:303bed4c7fc431a685db3c3c151d873740114adbdccd23762ea2d1e39ea78f47
######################################################################### 100.0%
==> Pouring portable-ruby-3.3.6.arm64_big_sur.bottle.tar.gz
==> Auto-updated Homebrew!
Updated 4 taps (homebrew/services, ddev/ddev, homebrew/core and homebrew/cask).
==> New Formulae
action-docs fltk@1.3 php@8.3
afl++ foot pie
--- 完了 ---
// バージョンの確認
---
% DDEV --version
ddev version v1.24.0
---
//最新版 v1.24.0に更新
---
DrupalCore11x / Bootstrap5
Orbstack > DDEVの環境にインストールしたDrupal Core 11xとBootstrap5 Themeの更新状況を確認しアップデートを行います。以下の更新を行なっています。
- Composer 2.7.9 > 2.8.3にアップデート。
- Drush 13.1.1 > 13.3.3にアップデート。
- Drupal Core 11.0.4 > 11.0.9にアップデート。
- Bread Crumb 2.0.8 > 2.0.9にアップデート。
Composer 2.7.9 > 2.8.3にアップデートします。
Composerのアップデート
Composerのアップデートは、Composerのself-updateコマンドを使います。
// 現行のバージョンの確認
% composer --version
Composer version 2.7.9 2024-9-04 12:34:56
---
// 最新版にアップデート
% composer self-update
---
// アップデートの確認
% composer --version
Composer version 2.8.3 2024-11-17 13:13:04
PHP version 8.4.1 (/opt/homebrew/Cellar/php/8.4.1_1/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.
// 2.8.3更新
---
// Composerの概要やコマンドを知りたい場合
% composer -v
で調べる事が出来ます。
---
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.8.3 2024-11-17 13:13:04
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
--no-scripts Skips the execution of all scripts defined in composer.json file.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
about Shows a short information about Composer
archive Creates an archive of this composer package
audit Checks for security vulnerability advisories for installed packages
browse [home] Opens the package's repository URL or homepage in your browser
bump Increases the lower limit of your composer.json requirements to the currently installed versions
check-platform-reqs Check that platform requirements are satisfied
clear-cache [clearcache|cc] Clears composer's internal package cache
completion Dump the shell completion script
config Sets config options
create-project Creates new project from a package into given directory
depends [why] Shows which packages cause the given package to be installed
diagnose Diagnoses the system to identify common errors
dump-autoload [dumpautoload] Dumps the autoloader
exec Executes a vendored binary/script
fund Discover how to help fund the maintenance of your dependencies
global Allows running commands in the global composer dir ($COMPOSER_HOME)
help Display help for a command
init Creates a basic composer.json file in current directory
install [i] Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json
licenses Shows information about licenses of dependencies
list List commands
outdated Shows a list of installed packages that have updates available, including their latest version
prohibits [why-not] Shows which packages prevent the given package from being installed
reinstall Uninstalls and reinstalls the given package names
remove [rm|uninstall] Removes a package from the require or require-dev
require [r] Adds required packages to your composer.json and installs them
run-script [run] Runs the scripts defined in composer.json
search Searches for packages
self-update [selfupdate] Updates composer.phar to the latest version
show [info] Shows information about packages
status Shows a list of locally modified packages
suggests Shows package suggestions
update [u|upgrade] Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file
validate Validates a composer.json and composer.lock
---
Drupal Coreやモジュールのインストールやアップデートに使う[create-project]や[update]コマンドについての概要やオプションが記載されています。
Drush 13.1.1 > 13.3.3にアップデートします。
Drushのアップデート
Drushのアップデートは、Composerのrequireコマンドと--update-with-all-dependenciesオプションを使います。
// 現行のバージョンの確認
% ddev drush --version
Drush Commandline Tool 13.1.1.0
---
// 最新版にアップデート
% composer require drush/drush:^13 --update-with-all-dependencies
---
./composer.json has been updated
Running composer update drush/drush --with-all-dependencies
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 15 updates, 0 removals
- Upgrading chi-teck/drupal-code-generator (4.0.0 => 4.1.0)
- Upgrading consolidation/config (3.0.0 => 3.1.0)
- Upgrading consolidation/output-formatters (4.5.0 => 4.6.0)
- Upgrading consolidation/robo (5.0.0 => 5.1.0)
- Upgrading drush/drush (13.1.1 => 13.3.3)
- Upgrading grasmash/expander (3.0.0 => 3.0.1)
- Upgrading illuminate/collections (v11.23.5 => v11.34.2)
---中略---
- Upgrading chi-teck/drupal-code-generator (4.0.0 => 4.1.0): Extracting archive
- Upgrading drush/drush (13.1.1 => 13.3.3): Extracting archive
Generating autoload files
43 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
---完了---
---
// アップデートの確認
% ddev drush --version
Drush Commandline Tool 13.3.3.0
// 最新版13.3.3.0更新
---
// Drushでよく使うコマンドは
$ drush updatedb
$ drush cache:rebuild
などのインストールやアップデート後のキャッシュクリアやDBのアップデートに使うコマンドのイメージですがシェル機能の要素を持っています。コマンドとオプションを組み合わせることでbashのような利用が可能であり以下のようなViewsの一覧を確認したりすることが簡単に出来ます。
---
% ddev drush views:list --fields=machine-name,status
------------------------- ----------
Machine name Status
------------------------- ----------
block_content Enabled
comment Enabled
comments_recent Enabled
content Enabled
content_recent Enabled
files Enabled
frontpage Enabled
list_footer Enabled
taxonomy_term Enabled
term_list Enabled
test Enabled
user_admin_people Enabled
vews_life_style_article Enabled
views_post78 Enabled
watchdog Enabled
who_s_new Enabled
who_s_online Enabled
archive Disabled
glossary Disabled
------------------------- ----------
Drupal Core 11.0.4 > 11.0.9にアップデートします。
Drupal Coreのアップデート
Drupal Coreのアップデートは、Composerのupdateコマンドと--with-all-dependenciesオプションを使います。
// 現行のバージョンの確認
% ddev drush core:status --field=drupal-version
11.0.4
---
// 最新版にアップデート
---
# キャッシュのクリア
% ddev drush cache:rebuild
[success] Cache rebuild complete.
---
# アップデート
% ddev composer update "drupal/core-*" --with-all-dependencies
---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 27 updates, 0 removals
- Upgrading composer/semver (3.4.2 => 3.4.3)
- Upgrading drupal/core (11.0.4 => 11.0.9)
- Upgrading drupal/core-composer-scaffold (11.0.4 => 11.0.9)
- Upgrading drupal/core-project-message (11.0.4 => 11.0.9)
- Upgrading drupal/core-recommended (11.0.4 => 11.0.9)
---以下省略---
---完了---
// キャッシュのクリアとDBの更新
% drush updatedb
[success] No pending updates.
% drush cache:rebuild
[success] Cache rebuild complete.
---
// アップデートの確認
% ddev drush core:status --field=drupal-version
11.0.9
// 11.0.9に更新
---
// core:statusでアップデートの状況を確認します。
---
% ddev drush core:status
---
Drupal version : 11.0.9
Site URI : https://drupal11-bootstrap5.ddev.site
DB driver : mysql
DB hostname : db01test
DB port : 3306
DB username : db01test
DB name : db
Database : Connected
Drupal bootstrap : Successful
Default theme : b5subtheme
Admin theme : claro
PHP binary : /usr/bin/php8.3
PHP config : /etc/php/8.3/cli/php.ini
PHP OS : Linux
PHP version : 8.3.14
Drush script : /var/www/html/vendor/bin/drush.php
Drush version : 13.3.3.0
Drush temp : /tmp
Drush configs : /var/www/html/vendor/drush/drush/drush.yml
Install profile : standard
Drupal root : /var/www/html/web
Site path : sites/default
Files, Public : sites/default/files
Files, Temp : /tmp
Bread Crumb 2.0.8 > 2.0.9にアップデートします。
Bread Crumbのアップデート
Bread Crumbのアップデートは、Drupal Coreのアップデート同様、Composerのupdateコマンドと--with-all-dependenciesオプションを使います。
// 現行のバージョンの確認
% ddev composer show drupal/easy_breadcrumb
---
name : drupal/easy_breadcrumb
descrip. : Adds configuration to the system breadcrumbs.
keywords :
versions : * 2.0.8
type : drupal-module
license : GNU General Public License v2.0 or later (GPL-2.0-or-later) (OSI approved) https://spdx.org/licenses/GPL-2.0-or-later.html#licenseText
homepage : https://www.drupal.org/project/easy_breadcrumb
source : [git] https://git.drupalcode.org/project/easy_breadcrumb.git 2.0.8
dist : [zip] https://ftp.drupal.org/files/projects/easy_breadcrumb-2.0.8.zip 2.0.8
path : /var/www/html/web/modules/contrib/easy_breadcrumb
names : drupal/easy_breadcrumb
support
source : https://git.drupalcode.org/project/easy_breadcrumb
issues : https://www.drupal.org/project/issues/easy_breadcrumb
---
// 最新版にアップデート
---
# キャッシュのクリア
% ddev drush cache:rebuild
[success] Cache rebuild complete.
---
# アップデート
% ddev composer update drupal/easy_breadcrumb --with-all-dependencies
---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 10 updates, 0 removals
- Upgrading drupal/easy_breadcrumb (2.0.8 => 2.0.9)
- Upgrading symfony/dependency-injection (v6.4.15 => v6.4.16)
---
---以下省略---
---完了---
// キャッシュのクリアとDBの更新
---
% ddev drush updatedb
[success] No pending updates.
% ddev drush cache:rebuild
[success] Cache rebuild complete.
---
// アップデートの確認
% ddev drush pm:list
---
--------------------- ---------------------------------- ---------- ----------
Package Name Status Version
--------------------- ---------------------------------- ---------- ----------
Core Announcements Enabled 11.0.9
(announcements_feed)
Core Automated Cron (automated_cron) Enabled 11.0.9
~~~ 中略 ~~~
Navigation Easy Breadcrumb Enabled 2.0.9
(easy_breadcrumb)
---
// 最新版2.0.9に更新
以上でOrbstackのDDEVにインストールしたDrupal Core 11.09 / Bootstrap5 Themeのプロジェクトの更新が完了しました。
エラーの対応
OrbstackのDDEVにインストールしたDrupalに以下のエラーが出ていますので原因を調べ対応します。
Home > 管理 > レポート > サイトの状態
保護が無効
ファイル sites/default/settings.php は変更に対して保護されていないため、セキュリティー上の危険性があります。 ファイルのパーミッションを書き込み禁止に変更してください。
このエラーはsetting.phpのパーミッションの問題です。Drupalのインストール時点でsetting.phpは644に設定されていますので444[読み取り専用]に権限を変更します。通常は以下のコマンドで解決します。XserverにDrupalをインストールした際にも以下コマンドで解決しています。BitnamiはDrupalの基本設定が完了したインスタンスをインストールするので当初からエラーは出ません。
$ cd web
$ chmod 444 sites/default/settings.php
早速変更します。
パーミッションの変更
iTermからコマンドを入れ、パーミッションを変更します。
// webディレクトリに移動
% cd web
---
// setting.phpのパーミッションを変更
% chmod 444 sites/default/settings.php
---
// 変更の確認
% ls -l sites/default/settings.php
---
// 444に変更されています。
% -r--r--r-- 1 s-takeda drupal 65432 Dec 6 10:00 settings.php
settings.phpは権限が読み込み専用に変更されていますので、DrupalのAdminコンソールで確認します。
エラーが消えていません?原因を調べます。
過去にXserverなどWebサーバーで行った変更は反映されていますが、今回行ったMacのローカルでの変更は反映されていないので、DDEVの設定を疑います。DDEVやOrbstackを確認すると原因がわかります。
DDEVの構成
DDEVはコンテナで動いています。以下が構成図になります。
|-ddev-drupal11-bootstrap5
| |-db
| |-web
|
|-ddev-router
| |-ddev-router
|
|-ddev-ssh-agent
|-ddev-ssh-agent
今回のエラーを解消するために権限を変更するsettings.phpはMacのターミナルに表示されるdrupal11-bootstrap5/webではなくOrbstackのコンテナであるddev-drupal11-bootstrap5/webにあります。このsettings.phpの権限を変更する必要がありますので変更するにはddev-drupal11-bootstrap5/webのコンテナにsshで接続する必要があります。コンテナへのssh接続はDDEVのsshコマンドで行います。
DDEVでコンテナにssh接続
DDEVのsshでコンテナに入りsettings.phpの権限を変更します。
// ddevのsshを使用しコンテナにログインします。
% ddev ssh
---
// zshからbashに変わります。
s-takeda@drupal11-bootstrap5-web:/var/www/html$ ls -al
// 以降 $ [コマンド]で表記します。
---
drwxr-xr-x 1 s-takeda dialout 406 Dec 6 22:14 vendor
drwxr-xr-x 1 s-takeda dialout 336 Nov 26 18:44 web
---
// ディレクトリ構成の確認
$ cd web
$ ls -al
---
-rw-r--r-- 1 s-takeda dialout 2005 Sep 17 05:21 robots.txt
drwxr-xr-x 1 s-takeda dialout 168 Sep 17 05:21 sites
drwxr-xr-x 1 s-takeda dialout 46 Sep 17 06:17 themes
---
$ cd sites/default
$ ls -al
---
-rw------- 1 s-takeda dialout 2015 Dec 6 22:08 settings.ddev.php
---
// settings.phpの権限は読み書きとなっています。
-rw------- 1 s-takeda dialout 36727 Dec 7 18:37 settings.php
---
// 権限の変更をします。
$ chmod 444 settings.php
// 変更の確認をします。
$ ls -al
---
-rw------- 1 s-takeda dialout 2015 Dec 6 22:08 settings.ddev.php
// 読み込みのみの444に変更されています。
-r--r--r-- 1 s-takeda dialout 36727 Dec 7 18:37 settings.php
---
// キャッシュをクリアします。
$ drush cr
[success] Cache rebuild complete.
---
// sshの終了
$ exit
---
// 参照 Macのターミナルで作業する際は、パスの関係でコマンドの入力前にddevを入れる必要がありますがコンテナ内ではddevを入れる必要がありません。
// Macのターミナル
% ddev drush cr
// Orbstackのコンテナ内
$ drush cr
DDEVでコンテナにsshで入りweb:/var/www/html/web/sites/default/settings.phpの権限を読み書きから読み込みのみに変更しました。
DrupalのAdminコンソールでエラーの確認をします。
Home > 管理 > レポート > サイトの状態
32確認済み 詳細
エラーが消えました。
Conclude.
ローカル環境の整備として、DDEVをはじめComposerやDrushのアップデートを行い、Drupal Coreやモジュールのアップデートを行いました。その後インストール以降そのまま放置していたsettings.phpの権限によるセキュリティの警告エラーも対処しました。
Drupal関係のアップデートは公開サイトでも頻繁に行うので、作業も手慣れています。それに比べDDEVやComposer、Drushのアップデートは、行う前に新たにチュートリアルに目を通したり、コマンドなどを調べるので、それまで知らずにいた知識を得る良い機会になります。
今回ローカルでの作業となりましたが、公開しているLightsailやXserverでもcomposerやDrushのアップデートは行えますので機会をみて行っていきたいと考えています。
settings.phpの権限によるセキュリティの警告エラーはMacにDrupalの環境を構築した当初から出ていましたが、ローカル環境なので気にせずサイトを構築し、公開用のサーバーでは、パーミッションの変更でエラーを解消していましたのでそのままになっていました。今回Macのローカル環境を整備するのでエラーの原因を調べたら、難しい問題ではなく、DDEVがコンテナで動いており、通常のターミナルからの設定では書き変わっていなかった事が原因とわかり対応しました。DDEVを使用していながら、特にコンテナと意識せず、MANP同様LAMP環境のローカルサーバーとして使用していたのでそのままになっていました。
OrbstackとDDEVの最大の利点は設定の手軽さと、高速ブラウジングにあります。MAMP > WordPressも設定の手軽さはありますがOrbstackとDDEVのような高速ブラウジングではありません。この利点のみで使用をしていたのですが、今回ローカルながらコンテナに触れ興味はあったがなかなか実際に触れる機会のなかったことからコンテナの漠然としていたイメージができましたので機会があればDockerなどの環境を試してみたいと考えています。
私自身が、開発者ではないので、DrupalやWordPressなどのCMSをWeb上から利用する事がほとんどで、GitやDockerの必要性がこれまでなかったのですが、昨今のWeb技術の進化を体現するには避けて通れない技術でもあるので、何らかの形で使用したいと考えています。
本来、今回の記事で、Bootstrap5同様OrbstackのDDEVにインストールしてあるCivic Themeのアップデートも記事としてまとめられればと考えていましたが、記事が長くなってしまったので、次回の記事にまとめていきます。
Civic Theme
私がDrupalに興味を持ちサイト構築から公開までを行うきっかけとなったCivic Themeについての記事になります。