Drupalインストール · 4 min read · Oct 13, 2025
Rocky Linux 8にNginxを使用してDrupal CMSをインストールする方法

Drupalは、PHPで書かれた無料でオープンソースのウェブコンテンツ管理システムで、GNU一般公衆ライセンスの下で配布されています。Drupalは、マルチチャネル出版のための洗練されたAPIを備えた堅牢なコンテンツ管理ツールを提供します。
Drupalはインターネット上で最も使用されているCMSの1つであり、インターネット上のトップ10,000ウェブサイトの少なくとも14%で使用されており、グローバルな企業、政府、教育機関、そして機関のサイトで使用されています。Drupalは、高スケーラブルなシステムを提供し、デジタルアプリケーションと統合されており、多言語サポートを持つ異なる組織のためのマルチサイトを作成するために使用できます。
このチュートリアルでは、Rocky Linuxサーバー上でLEMPスタックを使用してDrupal CMS(コンテンツ管理システム)を構成する方法を学びます。また、SELinux強制モードおよびFirewalldが有効な状態でRocky Linux上でDrupalを起動して実行する方法も学びます。
前提条件
このガイドを始めるには、以下の要件が必要です:
- Rocky Linuxサーバー - この例では、ホスト名が「drupal-server」のRocky Linux 8.xを使用します。
- sudo/root管理者権限を持つ非rootユーザー。
- Rocky LinuxサーバーのIPアドレスを指すドメイン名 - 特に本番環境にいる場合。
リポジトリの設定
LEMPスタック(Nginx、MariaDB/MySQL、PHP-FPM)は、ウェブアプリケーションをホストするためのオープンソースソフトウェアのグループです。Rocky Linuxでは、ほとんどのLEMPスタックパッケージがサードパーティのリポジトリで利用可能です。
最初のステップでは、システムに2つのリポジトリを追加して有効にします。RHELベースのオペレーティングシステム用の追加パッケージを提供するEPELリポジトリと、複数のバージョンのPHPパッケージを提供するREMIリポジトリを追加します。
以下のコマンドを実行して、EPELリポジトリをRocky Linuxシステムに追加します。確認を求められたら、yを入力してENTERを押します。
sudo dnf install epel-release
次に、以下のdnfコマンドを実行して、Rocky Linux 8.4用のREMIリポジトリを追加します。
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpmyを入力してENTERを押して、Remiリポジトリを追加します。

最後に、以下のdnfコマンドを実行して、システム上の利用可能なリポジトリのリストを確認します。EPELとREMIの2つの追加リポジトリがRocky Linuxシステムに追加されているはずです。
sudo dnf repolist
パッケージ依存関係のインストール
Drupalは、Apache2/httpd、Nginx、またはIIS Microsoftなどの任意のウェブサーバーでインストールできる柔軟で強力なCMSです。また、DrupalはMariaDB/MySQL、PostgreSQL、SQLiteを含む複数のRDBMSをサポートしています。Microsoft SQL ServerやMongoDBなどの他のデータベースについては、コミュニティモジュールを介して両方を使用できます。
これから、DrupalのためのLEMPスタックパッケージ依存関係をインストールします。EPELリポジトリからNginxをインストールし、appstreamからMariaDBをインストールし、REMIリポジトリからPHP 8.1パッケージをインストールします。
最初に、以下のdnfコマンドを使用してREMIリポジトリからPHPモジュールをリセットして有効にします。この例では、最新のDrupalバージョンでサポートされているPHP 8.1のモジュールを有効にします。
sudo dnf module reset php
sudo dnf module enable php:remi-8.1確認を求められたら、yを入力してPHP 8.1 REMIリポジトリを有効にし、ENTERを押して続行します。

次に、以下のdnfコマンドを使用して基本的なLEMPスタックパッケージをインストールします。
sudo dnf install nginx mariadb-server php php-fpm php-cli php-devel php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache php-pear php-pecl-apcu php-pecl-crypto確認を求められたら、yを入力してENTERを押します。

また、いくつかのリポジトリのGPGキーを追加する確認を求められたら、yを入力します。

LEMPスタックパッケージがインストールされたら、以下のsystemctlコマンドを使用してNginx、MariaDB、およびPHP-FPMサービスを起動できます。また、これらのサービスがブート時に自動的に実行されるようにすべて有効にします。
sudo systemctl start nginx mariadb php-fpm
sudo systemctl enable nginx mariadb php-fpm次のような出力が表示されるはずです - LEMPスタックは現在Rocky Linuxシステムで実行されており、LEMPスタックのすべてのサービスが有効になっています。

Firewalldの設定
Firewalldは、Rocky Linuxを含むRHELベースのオペレーティングシステムのデフォルトのファイアウォールです。ファイアウォールが有効な状態でDrupalやその他のウェブアプリケーションを実行することが推奨されます。特に本番環境では。
これから、Drupalインストールにアクセスするクライアントを許可するために、ファイアウォールにHTTPおよびHTTPSの両方のポートを追加します。
以下のfirewall-cmdコマンドを実行して、ファイアウォールにHTTPおよびHTTPSサービスを追加します。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent新しい変更を適用するためにfirewalldを再読み込みします。その後、firewalldで有効なサービスのリストを確認します。
sudo firewall-cmd --reload
sudo firewall-cmd --list-servicesHTTPおよびHTTPSサービスがfirewalldに追加されているはずです。

MariaDBサーバーの設定
このステップでは、Drupalで使用されるMariaDBデータベースの設定を開始します。MariaDBのデプロイメントを保護し、新しいデータベースとユーザーを作成します。
始める前に、以下のコマンドを実行してMariaDBサービスを確認し、サービスが実行中であることを確認します。
sudo systemctl status mariadbMariaDBサービスが実行中のときの出力は以下の通りです。

次に、MariaDBサーバーのデプロイメントを保護するための以下のコマンドを実行します。このコマンドライン「mysql_secure_installation」は、MariaDBパッケージによって提供され、インストールを保護するのに役立ちます。
sudo mysql_secure_installationMariaDBサーバーの設定に関連するいくつかの質問が表示されるはずです:
- デフォルトのMariaDBインストールにはパスワードがありません。パスワードを求められたらENTERを押します。
- MariaDBのrootパスワードを設定するためにYを入力します。次に、MariaDBの新しいパスワードを入力し、パスワードを繰り返します。
- MariaDBインストールから匿名ユーザーを削除するためにYを入力します。
- MariaDBのrootユーザーのリモートログインを無効にするように求められたら再度Yを入力します。
- MariaDBからデフォルトデータベーステストを削除するためにYを入力します。
- 最後に、テーブル権限を再読み込みして新しい変更を適用するためにYを入力します。
MariaDBのデプロイメントを保護した後、次にDrupalのための新しいデータベースとユーザーを設定します。
以下のmysqlコマンドを使用して、rootユーザーでMySQL/MariaDBシェルにログインします。
sudo mysql -u root -p以下のクエリを実行して、Drupalのための新しいデータベースとユーザーを作成します。この例では、データベースdrupaldbを作成し、ユーザーdrupal@localhostを作成します。また、デフォルトのデータベースパスワードを変更してください。
CREATE DATABASE drupaldb;
CREATE USER drupal@localhost IDENTIFIED BY 'password';
GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
次に、以下のクエリを実行して、MariaDBユーザーdrupal@localhostの権限を確認します。MariaDBユーザーdrupal@localhostがデータベースdrupaldbにアクセスし、権限を持っていることがわかります。
SHOW GRANTS FOR drupal@localhost;次に、’ exit ‘または’ quit ‘というクエリを実行してMariaDBシェルからログアウトします。

PECL拡張のインストール:uploadprogress
uploadprogressは、Drupalが進行状況バーを表示するために使用する拡張機能です。uploadprogressは、PECL(PHP拡張コミュニティライブラリ)リポジトリを介してインストールできます。
これから、PECLリポジトリからuploadprogress拡張をインストールし、PHPインストールで有効にします。
まず、以下のコマンドを実行して、コマンド「pecl」がシステムで利用可能であることを確認します。「pecl」が利用可能な場合、peclバイナリファイルのフルパスが表示されるはずです。
which pecl次に、以下の「pecl」コマンドを実行してuploadprogress拡張をインストールします。
sudo pecl install uploadprogressインストールが始まると、次のような出力が表示されるはずです。

次に、以下のコマンドを実行して新しい設定ファイル「/etc/php.d/uploadprogress.ini」を作成し、uploadprogress拡張を有効にします。
cat <最後に、PHP-FPMサービスを再起動して新しい変更を適用します。PHP-FPMは、追加のuploadprogress拡張が有効になって実行されています。
sudo systemctl restart php-fpm
PHP-FPMの設定
これから、’ /etc/php.ini ‘ファイルを介してPHP-FPMの基本設定を行い、Drupal用の特定のPHP-FPMプールを設定します。
以下のnanoエディタを使用して’ /etc/php.ini ‘ファイルを変更します。
sudo nano /etc/php.iniデフォルトの設定を以下のように変更します。また、date.timezoneオプションを環境に合わせて変更してください。
memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Stockholmファイルを保存し、完了したらエディタを終了します。
次に、デフォルトのPHP-FPMプール設定「/etc/php-fpm.d/www.conf」を「/etc/php-fpm.d/drupal.conf」にコピーします。その後、nanoエディタを使用して新しいプール設定「/etc/php-fpm.d/drupal.conf」を変更します。
sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/drupal.conf
sudo nano /etc/php-fpm.d/drupal.confデフォルト名を‘[drupal] ‘に変更し、デフォルトのユーザーとグループを’nginx ‘に変更します。また、’drupal’ PHP-FPMプールのリスニングソックファイルを‘/run/php-fpm/drupal.sock’に変更してください。
[drupal]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php-fpm/drupal.sockファイルを保存し、完了したらエディタを終了します。
次に、以下のsystemctlコマンドを使用してPHP-FPMサービスを再起動します。その後、PHP-FPMサービスの状態を確認します。
sudo systemctl restart php-fpm
sudo systemctl status php-fpm次のような出力が表示されるはずです - PHP-FPMサービスが実行中です。

次に、以下のコマンドを実行して新しいPHPINFOファイル「/usr/share/nginx/html/info.php」を作成します。
cat <
EOF 最後に、ウェブブラウザを開き、サーバーのIPアドレスの後に’/info.php’のパスを追加して訪問します(例:http://192.168.5.100/info.php)。PHPに関する詳細情報が表示されるはずです。

Drupalソースコードのダウンロード
この時点で、MariaDBデータベースサーバーとPHP-FPMの設定が完了しました。次に、最新のDrupalバージョンをサーバーにダウンロードします。
まず、現在の作業ディレクトリを‘/tmp’に移動し、以下のwgetコマンドを使用して最新のDrupalバージョンをダウンロードします。ダウンロードプロセスが完了すると、ファイル’drupal.tar.gz‘が表示されるはずです。
cd /tmp
wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz次に、tarコマンドを使用してファイル’drupal.tar.gz‘を抽出し、抽出されたディレクトリを’/var/www/drupal‘に移動します。これがDrupalのインストールに使用されます。
tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal最後に、以下のコマンドを実行してDrupalインストールディレクトリ’/var/www/drupal‘の所有権と権限を変更します。所有権はユーザーとグループ’nginx‘である必要があります。これにより、NginxウェブサーバーがDrupalソースコードを読み取り、アクセスできるようになります。権限は’755‘である必要があります。
sudo chown -R nginx:nginx /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/SELinuxの設定
Drupalソースコードをダウンロードした後、次にDrupalのためのSELinuxを設定します。SELinux管理ツールをサーバーにダウンロードし、DrupalソースコードのラベリングとNginxの追加ルールを設定します。
以下のdnfコマンドを実行して、SELinuxを管理するためのパッケージ’policycoreutils-python-utils‘をインストールします。
sudo dnf install policycoreutils-python-utils確認を求められたら、yを入力してインストールを確認し、ENTERを押して続行します。

次に、以下のコマンドを実行してDrupalソースコードのラベリングを設定します。
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/drupal(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/settings.php'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/files'
sudo restorecon -Rv /var/www/drupal以下のコマンドを実行して、Nginxウェブサーバーが特定のサービスにアクセスできるようにします。Drupalインストールの場合、Nginxがネットワークおよびメールサービスにアクセスできるようにする必要があります。
sudo setsebool -P httpd_can_sendmail on
sudo setsebool -P httpd_can_network_connect onDrupalソースコードをダウンロードし、ユーザーとグループ’nginx‘への正しい所有権を設定し、権限を’755‘に設定し、DrupalのためのSELinuxを設定しました。
Nginxウェブサーバーの設定
MariaDBデータベースサーバーとPHP-FPMの設定が完了しました。また、Drupalソースコードをダウンロードし、SELinuxを設定しました。次のステップでは、ドメインのためのNginxサーバーブロックを設定します。
始める前に、ドメイン名がサーバーのIPアドレスを指していることを確認してください。また、SSL Letsencryptを生成していることを確認してください。
以下のnanoエディタを使用して新しいNginxサーバーブロック設定’/etc/nginx/conf.d/drupal.conf‘を作成します。
sudo nano /etc/nginx/conf.d/drupal.conf以下の設定をファイルに追加します。また、ドメイン名とSSL証明書のパスを変更してください。この例では、http://drupal.howtoforge.localをDrupalインストールのメインドメインとして使用します。
server {
listen 80;
server_name drupal.howtoforge.local;
return 301 https://$host$request_uri;
}
server {
listen 443 http2 ssl;
server_name drupal.howtoforge.local;
root /var/www/drupal;
ssl_certificate /etc/letsencrypt/live/drupal.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/drupal.howtoforge.local/privkey.pem;
access_log /var/log/nginx/drupal.howtoforge.local.access.log;
error_log /var/log/nginx/drupal.howtoforge.local.error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \\..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
# Block access to scripts in the site files directory
location ~ ^/sites/[^/]+/files/.*\.php$ {
deny all;
}
location ~ (^|/)\. {
return 403;
}
location / {
try_files $uri /index.php?$query_string;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ /vendor/.*\.php$ {
deny all;
return 404;
}
location ~ '\.php$|^/update.php' {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
include fastcgi_params;
# Block httpoxy attacks. See https://httpoxy.org/.
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php-fpm/drupal.sock;
}
location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
try_files $uri @rewrite;
}
# Handle private files through Drupal. Private file's path can come
# with a language prefix.
location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
try_files $uri /index.php?$query_string;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
try_files $uri @rewrite;
expires max;
log_not_found off;
}
}ファイルを保存し、完了したらエディタを終了します。
次に、以下のコマンドを実行してNginx設定を確認します。「test successful - syntax ok」のような出力メッセージが表示されるはずです。これは、Nginx設定が正しく、エラーがないことを意味します。
sudo nginx -t次に、以下のsystemctlコマンドを実行してNginxサービスを再起動し、新しいサーバーブロック設定を適用します。
sudo systemctl restart nginx
Nginxサービスは、現在新しいサーバーブロック設定’/etc/nginx/conf.d/drupal.conf’で実行されているはずです。以下のコマンドを実行してNginxサービスを確認し、サービスが実行中であることを確認します。
sudo systemctl status nginx次のような出力が表示されるはずです - Nginxサービスが実行中です。

これで、ドメインを介してDrupalインストールにアクセスできるようになりました。
Drupalインストールの開始
この時点で、Drupalのパッケージ依存関係の設定が完了しました。これで、ドメインを介してDrupalにアクセスできます。
このステップでは、Drupalのインストールを開始し、Drupalに関する詳細を設定し、Drupalの管理ユーザーを設定します。
ウェブブラウザを開き、Drupalインストールのドメイン名(例:https://drupal.howtoforge.local/)を訪問します。Drupalのインストールページが表示されるはずです。
Drupalインストールの言語を選択するか、デフォルトの「English」を使用し、「Save and continue」ボタンをクリックします。

インストールプロファイルを選択し、「Save and continue」をクリックします。この例では、「Standard」プロファイルを使用します。

次に、Drupalインストールのためのデータベースを設定します。すでに所有し、作成したMariaDBデータベースとユーザーの詳細を入力します。
再度「Save and continue」をクリックします。

そして、Drupalのインストールが始まります。

Drupalインストールに関する詳細情報を入力します。また、Drupalの管理者ユーザー名と強力なパスワードを使用してください。
「Save and continue」をクリックします。

Drupalインストールが完了すると、次のページが表示されます。「おめでとうございます、Drupalをインストールしました!」というメッセージが表示されます。

Drupalインストールの完了
以下のコマンドを実行して、Drupal設定ファイルとディレクトリのラベリングを設定します。
sudo restorecon -v /var/www/drupal/sites/default/settings.php
sudo restorecon -Rv /var/www/drupal/sites/default/files次に、以下のコマンドを実行してファイル’/var/www/drupal/sites/default/settings.php‘の権限を変更し、書き込み可能にします。その後、nanoエディタを使用してファイルを編集します。
sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.phpスクリプト行’trusted_host_patterns‘のコメントを外し、ドメイン名を追加します。これにより、Drupalインストールでtrusted_hostが有効になります。
$settings['trusted_host_patterns'] = [
'^hwdomain\.io$',
'^drupal.hwdomain\.io$',
];ファイルを保存し、完了したらエディタを終了します。
最後に、ウェブブラウザでDrupalサイトに戻り、以下のURLでステータスレポートを訪問します。メインドメイン名をあなたのドメインに置き換えるか、Administration > Reportsメニューを介してアクセスできます。
https://drupal.howtoforge.local/admin/reports/status
次のレポートでは、Drupalインストールのための25のシステム要件がチェックされました。これは、あなたのDrupalインストールが正しく、エラーがないことを意味します。

結論
このガイドでは、Rocky Linuxサーバーに最新のDrupal v9をインストールする方法を学びました。また、LAMPスタック(Linux、Apache2/httpd、MySQL/MariaDB、PHP)のインストールとDrupalホスティングのための基本設定も学びました。さらに、PECL(PHP拡張コミュニティライブラリ)リポジトリからPHP拡張をインストールする方法も学びました。
SSL証明書で保護され、’trusted_hosts’設定が有効になった状態でDrupalが実行されているので、今後は新しいテーマをインストールしたり、Drupalインストール用のプラグインを追加したりして、Drupalの展開を拡張できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。