CMSインストール · 12 min read · Sep 11, 2025
Rocky Linux 9にCraft CMSをインストールする方法

Craft CMSは、ウェブサイトを作成するためのオープンソースのコンテンツ管理システムです。安全でスケーラブルなCMSで、広範なプラグインエコシステムと高品質の無料および有料プラグインを備えています。コンテンツ作成と管理タスクのための直感的でユーザーフレンドリーなコントロールパネルを持っています。Yii PHPフレームワークの上に構築されており、Twigテンプレートエンジンがそのテンプレーティングシステムを支えています。MySQLとPostgreSQLの両方のデータベースでストレージが可能で、Redisデータベースをキャッシュおよびセッションストレージに使用します。
このチュートリアルでは、Debian 12サーバーにCraft CMSをインストールする方法を学びます。また、Redisを有効にしてCraft CMSと連携させる方法や、Craft CMSを使用して作成したサイトのバックアップと復元方法についても学びます。
前提条件
- 最低1GBのRAMを搭載したRocky Linux 9を実行しているサーバー。
- sudo権限を持つ非rootユーザー。
- サーバーを指す完全修飾ドメイン名(FQDN)、例:
craftcms.example.com。 - Amazon SESやMailgunなどのメールサービスを持つSMTPアカウント。
- すべてが更新されていること。
$ sudo dnf update - チュートリアルとCraft CMSを実行するために必要な基本的なパッケージがいくつか必要です。これらのいくつかはすでにサーバーにインストールされている場合があります。
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
ステップ1 - ファイアウォールの設定
最初のステップはファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用しています。ファイアウォールの状態を確認します。
$ sudo firewall-cmd --state
running
ファイアウォールは異なるゾーンで機能し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートをリストします。
$ sudo firewall-cmd --permanent --list-services
次の出力が表示されるはずです。
cockpit dhcpv6-client ssh
HTTPおよびHTTPSポートを許可します。
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
ファイアウォールの状態を再確認します。
$ sudo firewall-cmd --permanent --list-services
同様の出力が表示されるはずです。
cockpit dhcpv6-client http https ssh
変更を有効にするためにファイアウォールを再読み込みします。
$ sudo firewall-cmd --reload
ステップ2 - Nginxのインストール
Rocky Linux 9には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリを使用する必要があります。
/etc/yum.repos.d/nginx.repoファイルを作成して開きます。
$ sudo nano /etc/yum.repos.d/nginx.repo
以下のコードを貼り付けます。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
Nginxをインストールします。
$ sudo dnf install nginx -y
インストールを確認します。
$ nginx -v
nginx version: nginx/1.24.0
Nginxサーバーサービスを有効にして開始します。
$ sudo systemctl enable nginx --now
サービスの状態を確認します。
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Mon 2023-12-04 14:01:19 UTC; 3s ago
Docs: http://nginx.org/en/docs/
Process: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 59397 (nginx)
Tasks: 2 (limit: 10866)
Memory: 1.9M
CPU: 10ms
CGroup: /system.slice/nginx.service
??59397 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??59398 "nginx: worker process"
ステップ3 - PHPと拡張機能のインストール
Rocky Linux 9にはデフォルトでPHP 8.1が付属しています。最新のPHPバージョンを常に使用するか、複数のPHPバージョンをインストールしたい場合は、REMIリポジトリを使用する必要があります。
最初のステップはEpelリポジトリを取得することです。
$ sudo dnf install epel-release -y
次に、Remiリポジトリをインストールします。
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
利用可能なPHPストリームを確認します。
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
デフォルトバージョンは8.1です。このチュートリアルの執筆時点で、Craft CMSはPHP 8.2と互換性があります。したがって、RemiのPHP 8.2リポジトリを有効にします。
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
Craft CMSに必要なPHPとその拡張機能をインストールします。
$ sudo dnf install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-intl php-pgsql
インストールされたPHPのバージョンを確認します。
$ php --version
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies
PHP-FPMサービスを有効にして開始します。
$ sudo systemctl enable php-fpm --now
PHPサービスの状態を確認します。
$ sudo systemctl status php-fpm
? php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
Active: active (running) since Mon 2023-12-04 14:05:58 UTC; 6s ago
Main PID: 61410 (php-fpm)
Status: "Ready to handle connections"
Tasks: 6 (limit: 10866)
Memory: 16.6M
CPU: 96ms
CGroup: /system.slice/php-fpm.service
??61410 "php-fpm: master process (/etc/php-fpm.conf)"
??61411 "php-fpm: pool www"
??61412 "php-fpm: pool www"
??61413 "php-fpm: pool www"
??61414 "php-fpm: pool www"
??61415 "php-fpm: pool www"
ステップ4 - PHP-FPMの設定
php.iniを編集のために開きます。
$ sudo nano /etc/php.ini
ファイルアップロードサイズを設定するには、upload_max_filesizeとpost_max_size変数の値を変更します。この値は、Craft CMSにアップロードできるファイルサイズを決定します。私たちの目的のために、128MBに設定しています。お好みに応じて設定できます。
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php.ini
サーバーのリソースと要件に応じて、PHPのメモリ制限を設定します。
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
/etc/php-fpm.d/www.confファイルを開きます。
$ sudo nano /etc/php-fpm.d/www.conf
PHPプロセスのUnixユーザー/グループをnginxに設定する必要があります。ファイル内のuser=www-dataおよびgroup=www-data行を見つけて、nginxに変更します。
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
ファイル内のlisten.owner = nobody、listen.group = nobody、listen.mode = 0660行を見つけて、コメントを外した後、次のように変更します。
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
PHP-fpmプロセスを再起動します。Nginxがインストールされていることを確認してからPHPサービスを再起動しないと、nginxグループを見つけられずに失敗します。
$ sudo systemctl restart php-fpm
PHPセッションディレクトリのグループをNginxに変更します。
$ sudo chgrp -R nginx /var/lib/php/session
ステップ5 - Composerのインストール
ComposerはPHPの依存関係マネージャーとして機能します。また、Craft CMSを支えるLaravel PHPフレームワークの依存関係マネージャーでもあります。
Composerインストールスクリプトをダウンロードします。
$ 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;"
次の出力が得られます。
Installer verified
インストールスクリプトを実行して、Composerの最新バージョンをダウンロードします。
$ php composer-setup.php
インストールスクリプトを削除します。
$ php -r "unlink('composer-setup.php');"
ダウンロードしたバイナリファイルを/usr/local/binディレクトリに移動します。
$ sudo mv composer.phar /usr/local/bin/composer
インストールを確認します。
$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52
ステップ6 - PostgreSQLのインストールと設定
Rocky Linux 9にはデフォルトでPostgreSQL 13が付属していますが、公式リポジトリからPostgreSQL 16を使用します。
PostgreSQL RPMリポジトリをインストールします。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
組み込みのPostgreSQLモジュールを無効にします。
$ sudo dnf -qy module disable postgresql
次に、以下のコマンドを使用してPostgreSQLをインストールします。
$ sudo dnf install -y postgresql16-server postgresql16-contrib
postgresql-contribパッケージにはいくつかの追加ユーティリティが含まれています。
バージョンを確認します。
$ psql --version
psql (PostgreSQL) 16.1
PostgreSQLデータベースを初期化します。
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Initializing database ... OK
PostgreSQLサービスを有効にします。
$ sudo systemctl enable postgresql-16
PostgreSQLサービスを開始します。
$ sudo systemctl start postgresql-16
PostgreSQLサービスの状態を確認します。
$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
Active: active (running) since Mon 2023-12-04 22:28:34 UTC; 2s ago
Docs: https://www.postgresql.org/docs/16/static/
Process: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 72148 (postgres)
Tasks: 7 (limit: 10866)
Memory: 17.4M
CPU: 45ms
CGroup: /system.slice/postgresql-16.service
??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
??72149 "postgres: logger "
??72150 "postgres: checkpointer "
??72151 "postgres: background writer "
??72153 "postgres: walwriter "
??72154 "postgres: autovacuum launcher "
??72155 "postgres: logical replication launcher "
Dec 04 22:28:33 craftcms.nspeaks.com systemd[1]: Starting PostgreSQL 16 database server...
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG: redirecting log output to logging collector process
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] HINT: Future log output will appear in directory "log".
Dec 04 22:28:34 craftcms.nspeaks.com systemd[1]: Started PostgreSQL 16 database server.
サービスがデフォルトで有効になり、実行中であることが確認できます。
PostgreSQLシェルを起動します。
$ sudo -i -u postgres psql
Craft CMSデータベースを作成します。
postgres=# CREATE DATABASE craftcms;
Craft CMSユーザーを作成し、強力なパスワードを選択します。
postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';
データベースの所有者をCraft CMSユーザーに変更します。
postgres-# ALTER DATABASE craftcms OWNER TO craftuser;
Craft CMSユーザーにデータベースへのすべての権限を付与します。
postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;
シェルを終了します。
postgres-# \q
資格情報が機能するか確認します。
$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1)
Type "help" for help.
craftcms=>
シェルを終了するには、\qと入力します。
ステップ7 - Redisのインストールと設定
Rocky Linux 9にはデフォルトでRedis 6.2が付属していますが、Remiリポジトリを使用してRedis 7.0をインストールします。
PHPをインストールする際にRemiリポジトリをインストールしたので、その部分はスキップできます。利用可能なRedisモジュールをすべてリストします。
$ sudo dnf module list redis
Rocky Linux 9 - AppStream
Name Stream Profiles Summary
redis 7 common [d] Redis persistent key-value database
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
redis remi-5.0 common [d] Redis persistent key-value database
redis remi-6.0 common [d] Redis persistent key-value database
redis remi-6.2 common [d] Redis persistent key-value database
redis remi-7.0 common [d] Redis persistent key-value database
redis remi-7.2 common [d] Redis persistent key-value database
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
最新のRedis 7.2モジュールを有効にします。
$ sudo dnf module enable -y redis:remi-7.2
Redisをインストールします。
$ sudo dnf install redis
バージョンを確認します。
$ redis-server --version
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=7bd3173e4e30c3e4
Redisサービスを有効にします。
$ sudo systemctl enable redis
Redisサービスを開始します。
$ sudo systemctl start redis
サービスの状態を確認します。
$ sudo systemctl status redis
? redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
??limit.conf
Active: active (running) since Mon 2023-12-04 22:36:25 UTC; 1min 32s ago
Main PID: 72877 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 10866)
Memory: 7.5M
CPU: 176ms
CGroup: /system.slice/redis.service
??72877 "/usr/bin/redis-server 127.0.0.1:6379"
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Starting Redis persistent key-value database...
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Started Redis persistent key-value database.
次のステップは、Redisサーバーに認証を追加することです。Redis v6.0以降、認証を追加する最良の方法はACL(アクセス制御リスト)を使用することです。/etc/redis/redis.confファイルを編集のために開きます。
$ sudo nano /etc/redis/redis.conf
# aclfile /etc/redis/users.aclエントリを見つけて、前のハッシュ(#)を削除してコメントを外します。
aclfile /etc/redis/users.acl
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
次に、/etc/redis/users.aclファイルを作成して開きます。
$ sudo nano /etc/redis/users.acl
以下の行を追加します。
user navjot on +@all ~* >yourpassword
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
Redisサーバーを再起動して変更を適用します。
$ sudo systemctl restart redis
Redisシェルを開きます。
$ redis-cli
PINGコマンドを使用します。認証エラーが表示されます。
127.0.0.1:6379> PING
(error) NOAUTH Authentication required.
AUTHコマンドを使用してログインします。
127.0.0.1:6379> AUTH navjot yourpassword
OK
再度PINGコマンドを使用します。
127.0.0.1:6379> PING
OK
シェルを終了します。
127.0.0.1:6379> exit
PHP Redis拡張機能もインストールする必要があります。
$ sudo apt install php-redis
ステップ8 - Craft CMSのインストール
Craft CMSをインストールする前に、次のコマンドを使用して実行するためのすべてのサーバー要件を満たしているか確認できます。
$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash
次の出力が得られます。
Running Craft Server Check…
Craft CMS Requirement Checker
This script checks if your web server configuration meets the requirements for running a Craft CMS installation.
It checks if the server is running the right version of PHP, if appropriate PHP extensions have been loaded,
and if php.ini file settings are correct.
Results:
--------
PHP 8.2+: OK
BCMath extension: OK
ctype extension: OK
cURL extension: OK
DOM extension: OK
Fileinfo extension: OK
GD extension or ImageMagick extension: OK
iconv extension: OK
Intl extension: OK
JSON extension: OK
Multibyte String extension (with Function Overloading disabled): OK
OPcache extension (with save_comments): OK
OpenSSL extension: OK
PCRE extension (with UTF-8 support): OK
PDO extension: OK
Reflection extension: OK
SPL extension: OK
Zip extension: OK
ignore_user_abort(): OK
password_hash(): OK
proc_close(): OK
proc_get_status(): OK
proc_open(): OK
proc_terminate(): OK
allow_url_fopen: OK
ini_set calls: OK
Memory Limit: OK
------------------------------------------
Errors: 0 Warnings: 0 Total checks: 27
すべてが問題ない場合は、次に進むことができます。ウェブルートディレクトリを作成します。
$ sudo mkdir /var/www/html/craftcms -p
現在ログインしているユーザーをこのディレクトリの所有者に設定します。
$ sudo chown -R $USER:$USER /var/www/html/craftcms
ディレクトリに移動します。
$ cd /var/www/html/craftcms
Composerを使用してCraft CMSをダウンロードしてインストールします。コマンドの末尾にあるドット(.)は、インストールが現在のディレクトリで行われることを意味します。
$ composer create-project craftcms/craft .
インストール中に、データベース、管理者アカウント、サイトURL、言語に関するいくつかの詳細を求められます。
> @php craft setup/welcome
______ .______ ___ _______ .___________.
/ || _ \ / \ | ____|| |
| ,----'| |_) | / ^ \ | |__ `---| |----`
| | | / / /_\ \ | __| | |
| `----.| |\ \----./ _____ \ | | | |
\______|| _| `._____/__/ \__\ |__| |__|
A N E W I N S T A L L
______ .___ ___. _______.
/ || \/ | / |
| ,----'| \ / | | (----`
| | | |\/| | \ \
| `----.| | | | .----) |
\______||__| |__| |_______|
Generating an application ID ... done (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generating a security key ... done (iMdcUi6wQyf9MshEda__vZcCwILbclxz)
Welcome to Craft CMS!
Are you ready to begin the setup? (yes|no) [no]:yes
Which database driver are you using? (mysql or pgsql) [mysql] pgsql
Database server name or IP address: [127.0.0.1]
Database port: [5432]
Database username: [root] craftuser
Database password:
Database name: craftcms
Database table prefix:
Testing database credentials ... success!
Using default schema "public".
Saving database credentials to your .env file ... done
Install Craft now? (yes|no) [yes]:yes
Username: [admin] navjot
Email: [email protected]
Password:
Confirm:
Site name: Howtoforge Tutorials
Site URL: https://craftcms.example.com
Site language: [en-US]
*** installing Craft
RedisをCraft CMSで動作させる
yiisoft/yii2-redisパッケージをインストールします。
$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"
/var/www/html/craftcms/config/app.phpファイルを編集のために開きます。
$ nano config/app.php
以下の内容が表示されます。
use craft\helpers\App;
return [
'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];
次のように変更します。
use craft\helpers\App;
return [
'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
'components' => [
'cache' => function() {
$config = [
'class' => yii\redis\Cache::class,
'keyPrefix' => Craft::$app->id,
'defaultDuration' => Craft::$app->config->general->cacheDuration,
// Full Redis connection details:
'redis' => [
'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost',
'port' => 6379,
'username' => App::env('REDIS_USERNAME') ?: null,
'password' => App::env('REDIS_PASSWORD') ?: null,
],
];
return Craft::createObject($config);
},
],
];
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。これにより、Craft CMSのキャッシュストレージとしてRedisが有効になります。また、PHPセッションデータ、ジョブキュー、ミューテックスドライバーとしてRedisを使用することもできます。これに関する設定はCraft CMSのドキュメントに記載されています。
.envファイルにRedisの設定を追加する必要があります。
$ nano .env
ファイルの最後に以下のコードを追加します。
REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword
上記のオプションを選択します。完了したら、ディレクトリのグループをnginxに変更します。これにより、現在ログインしているユーザーとNginxの両方がCraft CMSにアクセスできるようになります。
$ sudo chgrp -R nginx /var/www/html/craftcms
nginxグループにディレクトリへの書き込み権限を与えます。
$ sudo chmod -R g+w /var/www/html/craftcms
ここから先は、再度権限を変更する必要がなく、root権限を使用せずにすべての操作を行うことができます。
ステップ9 - SSLのインストール
SSL証明書を生成するためにCertbotをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。Rocky LinuxにはSnapdが付属していないため、Snapdインストーラーをインストールします。これにはEPEL(Enterprise Linux用の追加パッケージ)リポジトリが必要ですが、ステップ3で既にインストールしているため、直接進むことができます。
Snapdをインストールします。
$ sudo dnf install -y snapd
Snapサービスを有効にして開始します。
$ sudo systemctl enable snapd --now
Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認します。
$ sudo snap install core && sudo snap refresh core
Snapdが機能するために必要なリンクを作成します。
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Certbotをインストールします。
$ sudo snap install --classic certbot
次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリにシンボリックリンクを作成することで実行できることを確認します。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbotが正しく機能しているか確認します。
$ certbot --version
certbot 2.7.4
次のコマンドを実行してSSL証明書を生成します。
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com
上記のコマンドは、サーバーの/etc/letsencrypt/live/craftcms.example.comディレクトリに証明書をダウンロードします。
Diffie-Hellmanグループ証明書を生成します。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbotの更新スケジューラーサービスを確認します。
$ sudo systemctl list-timers
スケジュールされたサービスの1つとしてsnap.certbot.renew.serviceが表示されます。
NEXT LEFT LAST PASSED UNIT ACTIVATES
---------------------------------------------------------------------------------------------------------------------------
Mon 2023-12-04 23:38:47 UTC 18min left Mon 2023-12-04 22:19:02 UTC 1h 0min ago dnf-makecache.timer dnf-makecache.service
Tue 2023-12-05 00:00:00 UTC 40min left - - logrotate.timer logrotate.service
Tue 2023-12-05 09:36:00 UTC 10h left - - snap.certbot.renew.timer snap.certbot.renew.service
SSL更新が正常に機能しているか確認するために、プロセスのドライランを行います。
$ sudo certbot renew --dry-run
エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。
ステップ10 - SELinuxの設定
Craft CMSのファイルセキュリティコンテキストを変更します。
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/craftcms(/.*)?"
ポリシーを適用します。
$ sudo restorecon -Rv /var/www/html/craftcms/
NginxがPostgreSQLにアクセスできるようにするポリシーを適用します。
$ sudo setsebool -P httpd_can_network_connect_db 1
外部ホストへの接続を許可するポリシーを適用します。
$ sudo setsebool -P httpd_can_network_connect 1
MariaDB 10.11では、SELinuxがPHP-FPMのMariaDBへの接続を防ぐ別の問題が発生します。これはSELinuxモジュールをインストールすることで解決できます。最初のステップは、type enforcementファイルを作成することです。
ホームディレクトリにmy-phpfpm.teというファイルを作成し、編集のために開きます。
$ cd ~
$ nano my-phpfpm.te
以下のコードを貼り付けます。
module my-phpfpm 1.0;
require {
type unconfined_service_t;
type httpd_t;
type httpd_sys_content_t;
class dir write;
class unix_stream_socket connectto;
}
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;
#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
次のステップは、以下のコマンドを使用してポリシーモジュールに変換することです。コマンド内のファイル名を変更しないでください。そうしないと、機能しません。このモジュールはmy-phpfpmと名付けられ、ファイル名も同じである必要があります。
$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te
次に、ポリシーモジュールをコンパイルしてポリシーパッケージを作成します。
$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod
最後のステップは、semoduleコマンドを使用してポリシーパッケージをロードし、使用するポリシーをインストールします。
$ sudo semodule -i my-phpfpm.pp
ステップ11 - Nginxの設定
/etc/nginx/nginx.confファイルを編集のために開きます。
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;の前に以下の行を追加します。
server_names_hash_bucket_size 64;
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
/etc/nginx/conf.d/craftcms.confファイルを作成して開きます。
$ sudo nano /etc/nginx/conf.d/craftcms.conf
以下のコードを貼り付けます。craftcms.example.comをあなたのドメイン名に置き換えます。client_max_body_sizeの値が128MBに設定されていることを確認します。これは、PHPの設定時にCraft CMSのために設定したものです。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name craftcms.example.com;
root /var/www/html/craftcms/web;
index index.php;
client_max_body_size 128M;
access_log /var/log/nginx/craftcms.access.log;
error_log /var/log/nginx/craftcms.error.log;
ssl_certificate /etc/letsencrypt/live/craftcms.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/craftcms.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/craftcms.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
try_files $uri/index.html $uri $uri/ /index.php?$query_string;
}
location ~ [^/]
.php(/|$) {
try_files $uri $uri/ /index.php?$query_string;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_keep_conn on;
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY "";
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name craftcms.example.com;
return 301 https://$host$request_uri;
}
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
Nginxの設定を確認します。
$ sudo nginx -t
Nginxサーバーを再起動します。
$ sudo systemctl restart nginx
ステップ12 - Craft CMSにアクセス
ブラウザでURL https://craftcms.example.comを開くと、次のページに移動します。

管理ページにアクセスするには、URL https://craftcms.example.com/adminに移動すると、ログインページに移動します。

管理者の資格情報を入力し、サインインボタンをクリックしてログインします。次のダッシュボードに移動します。

これで、Craft CMSを使用してウェブサイトを構築することができます。
ステップ13 - Craft CMSのバックアップと復元
管理パネル内から管理ダッシュボード >> ユーティリティ >> データベースバックアップに移動することで、Craft CMSのデータベースをバックアップできます。

バックアップボタンをクリックしてデータベースバックアップをダウンロードします。また、ターミナルを使用してバックアップを作成することもできます。次のコマンドを実行してバックアップを作成します。プロンプトが表示されたらパスワードを入力します。
$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql
Craft CMSコマンドラインユーティリティを使用してデータベースバックアップを作成することもできます。このユーティリティの利点は、データベース資格情報を渡す必要がないことです。Craft CMSコマンドコンソールユーティリティについての詳細は、こちらを参照してください。
$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Backing up the database ... done
Backup file: /home/navjot/howtoforge-tutorials--2023-12-03-065138--v4.5.11.1.sql (200.019 KB)
上記のコマンドで場所を指定しない場合、バックアップファイルは/var/www/html/craftcms/storage/backupsディレクトリに書き込まれます。
ファイルをバックアップするには、/var/www/html/craftcmsフォルダ全体をコピーして保存します。
$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms
新しいサーバーに復元するには、ファイルを/var/www/htmlフォルダに抽出します。
$ tar -xzf craftcms.tar.gz -C /var/www/html/
新しいサーバーで同じ資格情報を持つデータベースを作成し、次のコマンドを使用してデータベースを復元します。プロンプトが表示されたらパスワードを入力します。
$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql
ステップ14 - Craft CMSの更新
Craft CMSを更新する方法は2つあります。1つは管理パネル内からです。更新が利用可能な場合、通知が表示されます。通知をクリックしてアップグレードします。Craft CMSは、更新を実行する前に自動的にデータベースをバックアップします。
ターミナルを介して更新することもできます。
利用可能なすべての更新を確認するには、次のコマンドを実行します。
$ cd /var/www/html/craftcms/
$ php craft update
更新が利用可能な場合、次のコマンドを実行して適用します。
$ php craft update all
結論
これで、Debian 12サーバーにCraft CMSソフトウェアをインストールする方法を学んだチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。