エックスサーバーでサブドメインにDrupal10をインストールする

エックスサーバーでサブドメインを作成し、composerでDrupal10をインストールします。

composerを使った方が後でメンテナンスしやすいようです。私は、composerが何かよく分かっていませんが、先人の知恵に従うことにします。

結論から言うと、エックスサーバーでcomposerを使ってDrupal10をインストールすることは可能です。

ただし、結構面倒です。

サブドメインの作成

まず、エックスサーバーでサブドメインを作成します。

https://www.xserver.ne.jp/manual/man_domain_subdomain_setting.php

最初にサブドメインを作成する理由は、設定が反映されるまでに時間がかかるから、それだけです。

データベースの追加

エックスサーバーで、Drupal10用のデータベース(MySQL)を追加します。

https://www.xserver.ne.jp/manual/man_db_setting.php

サブドメインとデータベース作成時、ついでにDrupal登録用のメールアドレスも作成しておくと、後で少し楽になります。

composerのインストール

SSHで接続するので、設定は済ませておいてください。

https://www.xserver.ne.jp/manual/man_server_ssh.php

インストール

エックスサーバーでは何もしなくてもcomposerが使えますが、バージョンが古いので新しくインストールします。

https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

設定

binディレクトリはすでに作成してあるかもしれません。

mkdir -p $HOME/bin
mv composer.phar $HOME/bin/composer

.bashrcに書いてあるかもしれませんが、無ければ追記します。

export PATH=$HOME/bin:$PATH

設定を反映して、確認。

source ~/.bashrc
composer -V
Composer version 2.6.5 2023-10-06 10:11:52

Drupal10のインストール

composerでDrupal10をインストールする場合は、ドキュメントルート以外にインストールした方が良いみたいです。

これは、セキュリティの観点からそうなっているのでしょうが、設定するのは結構面倒です。

エックスサーバーだと、サブドメインのドキュメントルートは独自ドメインのドキュメントルート内に作成され、変更できません。

この問題は、後でシンボリックリンクを張ることで解決します。

インストール

https://www.drupal.org/download

独自ドメインのドキュメントルート以外にDrupal10をインストールします。

今回の説明では、~/dattesar.com/にインストールしています。サブドメインは、blog.dattesar.comで設定しています。

独自ドメインとサブドメインは、それぞれ自分の環境に合わせて読み替えてください。

composer create-project drupal/recommended-project ~/dattesar.com/drupal

公開ディレクトリの設定

Drupal10の公開ディレクトリを、サブドメインのドキュメントルートにするためにシンボリックリンクを張っていきます。

まずは、自動で作成されているサブドメインのドキュメントルートを削除。

rm -r ~/dattesar.com/public_html/blog.dattesar.com

次に、シンボリックリンクを作成。

ln -s ~/dattesar.com/drupal/web ~/dattesar.com/public_html/blog.dattesar.com

以上で、Drupal10のインストールは完了です。

次は、サブドメインにアクセスしてDrupal10のセットアップをしていきます。これも、結構面倒です。

Drupal10のセットアップ

サブドメインの設定が反映された後にアクセスすると、Drupal10のセットアップ画面が表示されます。

セットアップ途中でエラーが出ると思うので、エラーを解決しながらセットアップを終わらせます。

PHP8.1

Drupal10はPHPのバージョンが8.1以上でないとセットアップ出来ないみたいです。

PHPのバージョンエラーに引っかかった場合は、エックスサーバーで対象ドメインのPHPバージョンを8.1以上に変更します。

マルチバイト文字列入力変換のエラー

必要条件の検証で、マルチバイト文字列入力変換のエラーが出ると思います。

エックスサーバーのphp.ini直接編集で、このmbstring.encoding_translationのエラーを解決していきます。

mbstring.encoding_translation = Offを変更します。

53行目ぐらいにあるはず。

mbstring.encoding_translation = 0

私はよく分かっていませんが、どうもバグみたいですね。

データベースの構成

データベースの構成で必要な項目を入力していきます。

高度なオプションのホストは、エックスサーバーのMySQL設定に表示されているホスト名を入力します。

以上でセットアップは完了です。

WordPressと違って、結構面倒ですね。

信頼の置けるホストの設定

以上で終わりかと思いきや、Drupal10にログインするとこのようなエラーが出ます。

このエラーを解決するために、settings.phpを編集していきます。

settings.phpの場所は、インストールディレクトリ/web/sites/default/settings.phpです。

編集するのは、754行目あたりです。パーミッションが444で書き込めないので、パーミッションを644に変更してから編集します。

    727  * For example:
    728  * @code
    729  * $settings['trusted_host_patterns'] = [
    730  *   '^www\.example\.com$',
    731  * ];

    740  * For example:
    741  * @code
    742  * $settings['trusted_host_patterns'] = [
    743  *   '^example\.com$',
    744  *   '^.+\.example\.com$',
    745  *   '^example\.org$',
    746  *   '^.+\.example\.org$',
    747  * ];

こんな感じで設定例が書いてあるので、これを参考に編集していきます。

私の場合は、こんな感じです。

$settings['trusted_host_patterns'] = [
'^blog\.dattesar\.com$',
'^.+\.blog\.dattesar\.com$',
];

編集が終わったら、settings.phpのパーミッションを444に戻しておきます。

以上で、とりあえず、Drupal10のインストールとセットアップは完了です。

思っていた以上に、面倒でした。

間違ってるところがあるかもしれませんが、エックスサーバーのサブドメインでDrupal10をインストールする流れは大体こんな感じです。

Drupal10をインストールした理由

私の場合は、有用性の低いコンテンツの代表である日記でも書こうかなと思って、Drupal10をインストールしました。

そもそも、有用性の高いコンテンツなんて、私みたいなただのおっさんには作成できません。これまで、このブログを書いてきて、嫌というほど思い知らされました。書くことなんて無いんですよ。

ちなみに、Drupalは、大規模サイトやセキュリティを重視するサイトで利用されることが多いらしいですね。

おっさんの日記にDrupalを使うなんて、Drupalの無駄遣いでしかないような気がしますが、環境構築はエラー解決がパズルみたいで意外と面白いんですよね。