【Drupal】Drupal10を使ってみよう
~Drupalは進化していた~

Drupal7に初めて触れてから6年、Drupalはメジャーバージョンが10にまで進んでいました。

現在はDrupalの仕事から離れていますが、今一度新しくDrupalを学ぼうと思いましたので、Drupal10を勉強していきたいと思います。

どうやらComposerによるインストールになったみたい

久しぶりに公式サイトを見てみると、以下のコマンドでインストールしてとのこと。

phpを使わなくなった私としてはとっつきにくいなーと思いつつ、、

とりあえずこの記事を参考にAlmaLinuxをインストールして、phpをインストールするところまで実施しました。

※phpはバージョン8.1以上を使用してください。

※もし”Kernel panic – not syncing: Fatal exception”と表示されてAlmaLinuxが起動しない場合は、 [設定]-[システム]-[プロセッサー] で2個以上のプロセッサーを指定してください。

こんな感じです。

さぁ、いよいよcomposerコマンドを実行してみましょう。

composer create-project drupal/recommended-project drupal

その結果、、

composerもインストールが必要なのね。。

適当に調べた以下でインストール(実行したディレクトリは「/var/www/html」)

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer chmod +x /usr/local/bin/composer

では改めて実行。

composer create-project drupal/recommended-project drupal

なにやら開始されました。

どうやら無事インストールできたみたいです。

コマンドを実行したディレクトリに「drupal」というディレクトリがあったため中身を確認。

なんとなくwebにアクセスすれば良さそうなので、以下にブラウザでアクセス。

http://【ローカル環境ipアドレス】/drupal/web

おおー。

インストールできそうですね!

「Save and continue」ボタンを押してみます。

エラーですね。。

「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.

The translation server is offline.

The installer requires to contact the translation server to download a translation file. Check your internet connection and verify that your website can reach the translation server at https://ftp.drupal.org.」

このエラーはこの記事と全く同じ怒られ方なので、以下を実行していきます(ディレクトリ構成が変わっているので、この記事とはパスが異なります。)

$ mkdir -p /var/www/html/drupal/web/sites/default/files/translations
$ chmod 777 -R /var/www/html/drupal/web/sites/default/files

SELinuxも変更です。

$ vi /etc/selinux/config
(変更前)SELINUX=enforcing
(変更後)SELINUX=disabled

OSを再起動し、再度「http://【ローカル環境ipアドレス】/drupal/web」にアクセスし、「Save and continue」ボタンを押してみます。

進みましたね!

とりあえず「標準」でやってみましょう。「保存して次へ」ボタンを押します。

設定ファイル は存在しません。

Drupal インストーラーはインストールプロセスの中で ./sites/default/settings.php を作成できることを必要としています。 ./sites/default/default.settings.php を ./sites/default/settings.php にコピーしてください。 Drupal のインストールについてのより詳しい情報は INSTALL.txt でご確認いただけます。」

はい。またこの記事と同じエラーです。

以下を実行します。

$ cp /var/www/html/drupal/web/sites/default/default.settings.php /var/www/html/drupal/web/sites/default/settings.php
$ chmod 777 /var/www/html/drupal/web/sites/default/default.settings.php /var/www/html/drupal/web/sites/default/settings.php

/etc/httpd/conf/httpd.confに以下を追加。

インストール時にGateway timeoutしないよう、Timeout時間も変えています。

<Directory “/var/www/html”>
AllowOverride All
</Directory>
Timeout 180

ついでにPostgreSQLの設定も実行します。

/var/lib/pgsql/data/pg_hba.confを以下のように編集です。

# IPv4 local connections:
#host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 ident
host all all ::1/128 md5

そして再度アクセスしてみると。

エラーが消えました!

「クリーンURLを有効にする」について警告がありますが、画面下部の「とりあえず進む」をを押してみましょう。

※記事の後半に書きますが、httpd.confの設定が誤っていたためこのエラーが発生していました。

データベースの構成の画面になりましたね。

あらかじめ作成した名前を入力して、「保存して次へ」を押しましょう。

何やら新しいエラーメッセージです。。

bytea_output の設定は現在 ‘hex‘ にセットされていますが、 ‘escape‘ である必要があります。次のクエリを実行してこれを変更してください: ALTER DATABASE "mydrupal" SET bytea_output = 'escape'; 。」

とあるので、以下を実行しましょう。

$ su – postgres
$ psql
$ ALTER DATABASE “mydrupal” SET bytea_output = ‘escape’;

「Drupal could not check for the pg_trgm extension: SQLSTATE[58P01]: Undefined file: 7 ERROR: 機能拡張の制御ファイル”/usr/share/pgsql/extension/pg_trgm.control”をオープンできませんでした: そのようなファイルやディレクトリはありません: CREATE EXTENSION IF NOT EXISTS pg_trgm; Array ( ) .」

こちらはcontribというものをインストールする必要があるようです。

さっそくインストールします。

$ dnf install postgresql-contrib

いろいろインストールされました。

それではブラウザに戻りましょう。

「Drupal could not check for the pg_trgm extension: SQLSTATE[42501]: Insufficient privilege: 7 ERROR: 機能拡張”pg_trgm”を作成する権限がありません HINT: この機能拡張を生成するには現在のデータベースのCREATE権限が必要です。: CREATE EXTENSION IF NOT EXISTS pg_trgm; Array ( ) .」

はいはい。権限追加します。

$ su – postgres
$ psql
$ ALTER ROLE [ユーザー名] WITH SUPERUSER;

※今回は何も考えずスーパーユーザーの権限与えています。権限は慎重に設定してください。

やっと始まったー!!

翻訳のインポートに時間がかかるなーと思いつつ、待ちます。

いけました!

sites/default and sites/default/settings.php に必要な全ての変更が終了しました。セキュリティリスクを回避するため、これらへの書き込み権限を取り消してください。方法が分からない場合はオンラインハンドブック(英語) を参照してください。」

警告メッセージに従い、書き込み権限を取り消します。

$ chmod 644 /var/www/html/drupal/web/sites/default/settings.php

サイト情報をお好きなものに設定した後、「保存して次へ」を押しましょう!

今回、「自動的にアップデートを確認」はチェック外します。

最後の準備のようなものが始まりました。

警告メッセージが表示されていますが気にしない。。

え、、

もう一度アクセスです!

なんじゃこりゃ。。

インストールはされていそうなのに、CSSとjavascriptが効いていないっぽいです。

ブラウザの開発者ツールで見ると、どうやら参照したいCSSとjavascriptが生成されていないようでした。。

「Drupal install do not use css and javascript」とかで検索すると、default/filesの権限の問題であるとか、.httaccessファイルの設定がダメだとか色々出てきて、全部試しましたが3日ほど解決せず。。

3日間の調査の結果、httpd.confの設定を私が間違えていました。orz

以下を設定することで直りました。

$ vi /etc/httpd/conf/httpd.conf

でhttpd.confを開き、以下のように、<Directory “/var/www/html”>の中に、「AllowOverride All」を記述する必要があったみたいです。

<Directory “/var/www/html”>
AllowOverride All
</Directory>

私は<Directory “/var/www/html/drupal/web”>内に「AllowOverride All」を記述ししまっていたため、. htaccessがうまく機能しなかったのですね(多分)。

クリーンURLのエラーもこの設定が原因でした。。エラーは解消してインストールしましょうという教訓ですね。

以上でDrupal10がインストールできたので、これからいろいろ使ってみたいと思います!

私はこの本(Drupal 9 Module Development)でDrupalの 勉強をしています。
Drupal9に関する日本語の本にはない、Drupalの具体的な実装方法が記載されています。