エックスサーバーにDrupal 11をインストールしました。
Drupalにはサーバー側から簡単に導入する方法もありますが、今回は使いません。
SSHでサーバーに接続し、Composerを使ってDrupal 11を構築します。
この方法を選んだ理由は、単にDrupalを動かすためではありません。
Drupal本体やモジュールなどの構成を、後からでも把握・再現できる状態にしておきたいからです。
この記事では、エックスサーバーでDrupal 11を動かすまでの手順を、実際に構築した流れに沿ってまとめます。
なお、Drupal 11はPHP 8.3以上が必要です。Drupal公式の11.xのインストール要件でも、PHP 8.3以上とComposer 2.9.3以上が案内されています。
エックスサーバーでは複数のPHPバージョンをドメイン単位で切り替えられます。
今回の構成
今回は、次のような構成にします。
project/ composer.json composer.lock vendor/ web/ core/ modules/ themes/ sites/
ブラウザからアクセスさせるのは web/ の中だけです。
Drupal本体やComposerの管理ファイルを公開領域から分離できます。
ここが、今回のインストールで最も重要なポイントです。
「Drupalを入れて動かす」だけなら、もっと簡単な方法もあります。
しかし、長く運用することを考えるなら、最初からディレクトリ構成を決めておいた方が後で楽になります。
エックスサーバーでPHPのバージョンを確認する
まず、Drupal 11が動作するPHPバージョンになっているか確認します。
エックスサーバーのサーバーパネルから「PHP Ver.切替」を開き、対象ドメインのPHPバージョンを確認します。
Drupal 11ではPHP 8.3以上が必要です。
今回はPHP 8.3以上を選択します。
ここで注意したいのが、ブラウザから実行されるPHPとSSHから実行するPHPは、確認方法が違う場合があることです。
SSH接続後、次のコマンドでも確認します。
php -v
バージョンが表示されれば、まずPHPが使える状態です。
エックスサーバーではSSHなどのコマンドラインから実行するPHPの標準バージョンも変更されています。
そのため、Web側だけでなくSSH側のPHPも実際に確認しておくことをおすすめします。
SSHでエックスサーバーに接続する
次にSSHでサーバーへ接続します。
Macならターミナル、WindowsならPowerShellなどからSSHを実行できます。
ssh ユーザー名@ホスト名
初回接続時には確認が表示される場合があります。
ログインできたら、まず現在位置を確認します。
pwd
その後、必要に応じてディレクトリを移動します。
cd ~
SSHで直接操作すると、ファイルをFTPで1つずつアップロードするより、構築作業をかなり効率化できます。
Composerが使えるか確認する
Drupal 11はComposerで管理します。
まずComposerが利用できるか確認します。
composer --version
バージョンが表示されればComposerを実行できます。
ここで重要なのは、Composerを単なる「Drupalをインストールするためのコマンド」と考えないことです。
Composerは、Drupal本体や追加したモジュールなどの依存関係を管理するための仕組みです。
そのため、インストール後もComposerを使って更新していきます。
ComposerでDrupal 11を作成する
いよいよDrupalを作成します。
Drupal公式でもComposerによる drupal/recommended-project の利用が案内されています。
composer create-project drupal/recommended-project:^11 project
これでDrupalのファイル一式とComposerによる依存関係の管理環境が作られます。
作成されたディレクトリに移動します。
cd project
中身を確認します。
ls -la
composer.json や composer.lock、vendor、web などが作成されています。
ここまで来れば、Drupal本体のインストール自体は完了です。
まだWebからアクセスできる状態ではありません。
公開ディレクトリをwebに向ける
ここがエックスサーバーで少し考えるところです。
Composer構成では、プロジェクト全体ではなく web を公開します。
イメージとしては次のようになります。
project/├ composer.json├ composer.lock├ vendor/└ web/ ← 公開する場所
ドメインの公開ディレクトリを、この web に合わせます。
これによって、composer.json や vendor などを直接URLから公開しない構成にできます。
ここを間違えると、Drupalは動いてもComposer構成のメリットが薄れてしまいます。
データベースを作成する
Drupalを動かすにはデータベースが必要です。
エックスサーバーのサーバーパネルから、Drupal用のデータベースを作成します。
必要になるのは、主に次の情報です。
| 項目 | 内容 |
|---|---|
| データベース名 | 作成したデータベース |
| ユーザー名 | データベースユーザー |
| パスワード | データベースユーザーのパスワード |
| ホスト名 | エックスサーバーで指定されたMySQLホスト |
この情報はDrupalのインストール画面で使用します。
ブラウザからDrupalのインストールを開始する
公開ディレクトリの設定とデータベースの準備ができたら、ブラウザからドメインへアクセスします。
Drupalのインストール画面が表示されます。
言語を選択し、インストールプロファイルを選びます。
通常は標準の構成から始めれば問題ありません。
次にデータベースの情報を入力します。
先ほど作成したデータベース名、ユーザー名、パスワード、ホスト名を入力します。
Drupalがデータベースへ接続できれば、インストールが進みます。
settings.phpとfilesディレクトリを確認する
Drupalのインストールが完了したら、設定ファイルも確認しておきます。
web/sites/default/settings.php
Drupalでは、このファイルにデータベース接続などの重要な設定が入ります。
また、画像などのアップロード先として使用する files ディレクトリも確認します。
インストール直後だけ動けばいいのではなく、管理画面から画像をアップロードしたり、コンテンツを更新したりできることまで確認します。
Drupalの管理画面にログインする
インストールが完了したら、管理画面へログインします。
まず確認するのは、サイトが正常に表示されることです。
次に管理画面から、次のような基本動作を確認します。
コンテンツを作成できるか。
画像をアップロードできるか。
テーマを変更できるか。
キャッシュをクリアできるか。
インストールが完了しただけでは、運用できる状態になったとは限りません。
実際にコンテンツを1つ作って確認しておくと安心です。
Composer構成になっていることを確認する
最後に、Composerで管理できる状態になっているか確認します。
composer show
Drupal本体や関連パッケージが一覧表示されます。
また、プロジェクトのルートにある composer.json を確認します。
Drupalのバージョンや依存関係をここから管理できます。
今後モジュールを追加するときも、基本的にはComposerから追加します。
例えばモジュールを追加する場合は、次のような形です。
composer require drupal/モジュール名
これによって、必要な依存関係も含めてComposerが管理します。
更新するときもComposerを使う
Composer構成にしたなら、更新方法も最初から決めておきます。
composer update
ただし、本番環境でいきなり更新するのではなく、先に検証環境で確認することをおすすめします。
Composerには composer.lock があるため、検証した構成を本番へ再現しやすくなります。
ここがComposer構成の大きなメリットです。
「サーバーに何が入っているのか分からない」という状態を避けられます。
Composerで管理する利点は、WordPressの構成を設計する|Composer管理にすると得られる7つのことでも整理しています。WordPressの例ですが、考え方はDrupalでも同じです。
インストールで詰まりやすかったところ
実際に構築してみると、Drupalそのものよりサーバー環境の確認で詰まることがあります。
実際に詰まった内容と解決方法は、エックスサーバーでDrupal 11が動かない原因6つ|実際に詰まった問題と解決方法にまとめています。
PHPのバージョンが違う
ブラウザ側ではPHP 8.3なのに、SSHで php -v を実行すると別のバージョンになっている。
こうした環境差は、Composer実行時のエラーにつながります。
「PHPは8.3にしたから大丈夫」と思わず、SSHから実際に確認することが重要です。
公開ディレクトリを間違える
Composerのrecommended-projectでは、プロジェクトのルートそのものではなく web を公開する構成になります。
ここを間違えると、Drupalが正常に動作しないだけでなく、公開する必要のないファイルまでWebから到達できる構成になり得ます。
Composerのメモリ不足
共用サーバーでは、Composer実行時にメモリ不足になることがあります。
Drupal本体だけでなく、依存パッケージも処理するためです。
エラーが出たときは、Drupalの問題なのか、PHPやComposerの実行環境の問題なのかを分けて考える必要があります。
なぜ「簡単インストール」を使わなかったのか
エックスサーバーにはDrupalの動作確認済みプログラムとしての案内があります。
それでも今回は、簡単にインストールする方法を選びませんでした。
理由は、Drupalを「設置する」ことより、「どう管理するか」を重視したからです。
Composerで管理しておけば、Drupal本体やモジュールの依存関係をファイルとして管理できます。
サーバーを移転するときも、同じ構成を再現しやすくなります。
また、Gitなどと組み合わせれば、構成変更の履歴も管理できます。
初回のインストールだけを考えれば、簡単インストールの方が楽です。
しかし、3年、5年と運用するなら、最初の10分より、その後の管理コストの方が重要になります。
そもそもなぜDrupalを選んだのかは、Drupalを選んだ理由|WordPressや他のCMSを使わなかった理由で書いています。
まとめ
エックスサーバーにDrupal 11を構築するだけなら、それほど難しい作業ではありません。
ただし、長く運用することを考えるなら、インストール方法より先に構成を決めておくことをおすすめします。
今回の構成は、
SSH↓Composer↓Drupal 11↓web/だけを公開
というシンプルなものです。
Drupal公式もComposerを使ったrecommended-projectを案内しているため、Drupalを継続的に運用するなら、Composer管理を前提にしておくと後の更新や移行が楽になります。
今回はエックスサーバーへのインストールまでを書きました。
次は、このDrupalを実際に使ってテーマを作り、ViewsやTwigを触っていきます。