【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もインストールが必要なのね。。
適当に調べた以下でインストール(実行したディレクトリは「/var/www/html」)
mv composer.phar /usr/local/bin/composer chmod +x /usr/local/bin/composer
では改めて実行。
なにやら開始されました。
どうやら無事インストールできたみたいです。
コマンドを実行したディレクトリに「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.」
このエラーはこの記事と全く同じ怒られ方なので、以下を実行していきます(ディレクトリ構成が変わっているので、この記事とはパスが異なります。)
SELinuxも変更です。
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 でご確認いただけます。」
以下を実行します。
/etc/httpd/conf/httpd.confに以下を追加。
インストール時にGateway timeoutしないよう、Timeout時間も変えています。
AllowOverride All
</Directory>
Timeout 180
ついでにPostgreSQLの設定も実行します。
/var/lib/pgsql/data/pg_hba.confを以下のように編集です。
#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';
。」
とあるので、以下を実行しましょう。
$ 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というものをインストールする必要があるようです。
さっそくインストールします。
いろいろインストールされました。
それではブラウザに戻りましょう。
「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 ( ) .」
はいはい。権限追加します。
$ psql
$ ALTER ROLE [ユーザー名] WITH SUPERUSER;
※今回は何も考えずスーパーユーザーの権限与えています。権限は慎重に設定してください。
やっと始まったー!!
翻訳のインポートに時間がかかるなーと思いつつ、待ちます。
いけました!
「sites/default and sites/default/settings.php に必要な全ての変更が終了しました。セキュリティリスクを回避するため、これらへの書き込み権限を取り消してください。方法が分からない場合はオンラインハンドブック(英語) を参照してください。」
警告メッセージに従い、書き込み権限を取り消します。
サイト情報をお好きなものに設定した後、「保存して次へ」を押しましょう!
今回、「自動的にアップデートを確認」はチェック外します。
最後の準備のようなものが始まりました。
警告メッセージが表示されていますが気にしない。。
え、、
もう一度アクセスです!
なんじゃこりゃ。。
インストールはされていそうなのに、CSSとjavascriptが効いていないっぽいです。
ブラウザの開発者ツールで見ると、どうやら参照したいCSSとjavascriptが生成されていないようでした。。
「Drupal install do not use css and javascript」とかで検索すると、default/filesの権限の問題であるとか、.httaccessファイルの設定がダメだとか色々出てきて、全部試しましたが3日ほど解決せず。。
3日間の調査の結果、httpd.confの設定を私が間違えていました。orz
以下を設定することで直りました。
でhttpd.confを開き、以下のように、<Directory “/var/www/html”>の中に、「AllowOverride All」を記述する必要があったみたいです。
AllowOverride All
</Directory>
私は<Directory “/var/www/html/drupal/web”>内に「AllowOverride All」を記述ししまっていたため、. htaccessがうまく機能しなかったのですね(多分)。
クリーンURLのエラーもこの設定が原因でした。。エラーは解消してインストールしましょうという教訓ですね。
以上でDrupal10がインストールできたので、これからいろいろ使ってみたいと思います!
私はこの本(Drupal 9 Module Development)でDrupalの 勉強をしています。Drupal9に関する日本語の本にはない、Drupalの具体的な実装方法が記載されています。