Open10

Drupalについて調べたことをまとめる

KeitaUenishiKeitaUenishi

LAMPとはいいつつも、OSはWindows, MacOSや、DBがPostgreSQLになっていてもいいらしい。

Drupalは、別のテクノロジースタック上でも動作します:
オペレーティングシステムは、LinuxではなくWindowsまたはMac OSでも構いません。
Webサーバーは、ApacheではなくNginxまたはIISにすることができます。
データベースは、MySQLではなくPostgreSQL、SQLiteまたはMariaDBやPerconaのようなMySQL互換のものにすることができます。
オペレーションシステム、Webサーバー、データベースは変更可能ですが、 ソフトウェアが使用しているスクリプト言語のPHPは変更することができません。

https://www.drupal.org/ja/docs/user_guide/ja/understanding-drupal.html#s-drupal

KeitaUenishiKeitaUenishi

実際に動かしてみるため、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: {}

https://zenn.dev/usuyuki/articles/eb7e7dd392feee

KeitaUenishiKeitaUenishi

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が変わって何か新たに追加が必要になっている、とかだろうか…

KeitaUenishiKeitaUenishi

versionというよりは権限の問題だったよう

https://www.studio-umi.jp/blog/6/289

sites/default 直下にある filesを chmd 777 files とすることで通った(コンテナ作成時に権限周りをいい感じに設定できないだろうか…)

KeitaUenishiKeitaUenishi

drupal下にできたディレクトリ構成

https://www.drupal.org/docs/understanding-drupal/directory-structure#s-base-level-directories

実際に自分の環境でできたものは以下だった

/core

/core - Drupalがすぐに使えるようにするために必要なすべてのファイル(core)。ただし、ベース(/)ディレクトリに含める明確な理由があるファイルは除きます。

/modules

すべてのカスタム(あなたが作成した)モジュールとコントリビュート(コミュニティが作成した)モジュールが入るディレクトリです。
これを contrib と custom というサブディレクトリに分割すると、モジュールの管理がしやすくなります。サブフォルダを作成して、あなたの開発、保存、使用基準に合わせて整理することができます。

/profile

すべてのコントリビュートとカスタムインストールプロファイル。

/sites/[domain OR default]/files

サイト固有のファイルの保存場所。これには、ユーザーによってアップロードされたファイル(画像など)とサイト構成(アクティブとステージング)が含まれます。

/themes

すべてのコントリビュートおよびカスタムテーマとサブテーマ。サブテーマはベーステーマもここにインストールする必要があることに注意してください。
これをcontribとcustomのサブディレクトリに分割することで、テーマを追跡しやすくなります。開発、保管、使用基準に合わせてサブフォルダを作成して整理することができます。

/vendor

Drupalコアが依存するバックエンドの外部ライブラリ(例:Symfony、Twig)。

KeitaUenishiKeitaUenishi

さらに /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コアのテーマ。

KeitaUenishiKeitaUenishi

composer.jsonを使用していたので、以下の記述が当てはまる構成になっていた

Drupalプロジェクトのダウンロードと管理にcomposerを使用する場合、Drupalコアとベースレベルのディレクトリはvendorディレクトリに隣接します。

/vendor - Various external composer php packages
/web - parent directory for the above base-level and core directories

https://www.drupal.org/docs/understanding-drupal/directory-structure#s-composer-build-directories