Drupalについて調べたことをまとめる
Drupalとは
LAMPスタック上で動作する柔軟なCMS。
LAMPスタックとは
- Linux
- Apatch
- MySQL
- PHP
からなる単語のこと
WordPressも同じ「LAMPスタック」と呼ばれる技術の組み合わせで動くオープンソースのCMS。
WordPressとの比較については下記に詳しくまとめられている。
WordPressはプログラミングの知識があまりない人でも使えることを宣言されているのに対し、Drupalのターゲットは「大企業」や「プログラマー」などに絞られている。
LAMPとはいいつつも、OSはWindows, MacOSや、DBがPostgreSQLになっていてもいいらしい。
Drupalは、別のテクノロジースタック上でも動作します:
オペレーティングシステムは、LinuxではなくWindowsまたはMac OSでも構いません。
Webサーバーは、ApacheではなくNginxまたはIISにすることができます。
データベースは、MySQLではなくPostgreSQL、SQLiteまたはMariaDBやPerconaのようなMySQL互換のものにすることができます。
オペレーションシステム、Webサーバー、データベースは変更可能ですが、 ソフトウェアが使用しているスクリプト言語のPHPは変更することができません。
実際に動かしてみるため、dockerで環境構築を行ってみる。
下記の記事を参考にしてdocker-compose.ymlを作ってみたところ、インストール時にエラーが発生した
version: "3"
services:
db:
image: mysql:5.7
volumes:
- ./db/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass_tekitou
MYSQL_DATABASE: drupal_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_tekitou
drupal:
image: drupal:latest
volumes:
- ./drupal/themes:/var/www/html/themes
- ./drupal/modules:/var/www/html/modules
- ./drupal/profiles:/var/www/html/profiles
- ./drupal/sites/default/files:/var/www/html/sites/default/files
- ./php.ini:/usr/local/etc/php/conf.d/php.ini
ports:
- 2020:80
depends_on:
- db
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
depends_on:
- db
ports:
- 2222:80
volumes:
data: {}
The translations directory does not exist.
The installer requires that you create a translations directory as part of the installation process. Create the directory sites/default/files/translations . More details about installing Drupal are available in INSTALL.txt.
translationsディレクトリが存在しません。
インストーラは、インストールプロセスの一部として、translations ディレクトリを作成することを要求します。sites/default/files/translations ディレクトリを作成してください。Drupalのインストールに関する詳細はINSTALL.txtにあります。
Drupalのimageをlatestで取っているけど、2021年の記事なので、verが変わって何か新たに追加が必要になっている、とかだろうか…
versionというよりは権限の問題だったよう
sites/default 直下にある filesを chmd 777 files
とすることで通った(コンテナ作成時に権限周りをいい感じに設定できないだろうか…)
drupal下にできたディレクトリ構成
実際に自分の環境でできたものは以下だった
/core
/core - Drupalがすぐに使えるようにするために必要なすべてのファイル(core)。ただし、ベース(/)ディレクトリに含める明確な理由があるファイルは除きます。
/modules
すべてのカスタム(あなたが作成した)モジュールとコントリビュート(コミュニティが作成した)モジュールが入るディレクトリです。
これを contrib と custom というサブディレクトリに分割すると、モジュールの管理がしやすくなります。サブフォルダを作成して、あなたの開発、保存、使用基準に合わせて整理することができます。
/profile
すべてのコントリビュートとカスタムインストールプロファイル。
/sites/[domain OR default]/files
サイト固有のファイルの保存場所。これには、ユーザーによってアップロードされたファイル(画像など)とサイト構成(アクティブとステージング)が含まれます。
/themes
すべてのコントリビュートおよびカスタムテーマとサブテーマ。サブテーマはベーステーマもここにインストールする必要があることに注意してください。
これをcontribとcustomのサブディレクトリに分割することで、テーマを追跡しやすくなります。開発、保管、使用基準に合わせてサブフォルダを作成して整理することができます。
/vendor
Drupalコアが依存するバックエンドの外部ライブラリ(例:Symfony、Twig)。
さらに /core の中について
/core/assets - coreで使用される様々な外部ライブラリ(jQuery、underscore、modernizerなど)。
/core/includes - 他の/coreフォルダを通してDrupalが使用するベースレベルの機能。
/core/lib - Drupalのコアクラス。
/core/misc - Drupalコアが依存するフロントエンドのコード。
/core/modules - Drupalのコアモジュール。
/core/profiles - Drupalコアのインストールプロファイル。Minimal、Standard、Testing、Testingの多言語インストールプロファイルです。
/core/scripts - 主に開発者が使用する様々なコマンドラインインターフェイス(CLI)スクリプトです。
/core/tests - Drupalコアのテスト。
/core/themes - Drupalコアのテーマ。
composer.jsonを使用していたので、以下の記述が当てはまる構成になっていた
Drupalプロジェクトのダウンロードと管理にcomposerを使用する場合、Drupalコアとベースレベルのディレクトリはvendorディレクトリに隣接します。
/vendor - Various external composer php packages
/web - parent directory for the above base-level and core directories
日本語での解説しているサイト見つけた。
ありがてぇ……