ウェブサイト検索

Rocky Linux 9にCraft CMSをインストールする方法


このページで

  1. 前提条件
  2. ステップ1 - ファイアウォールを設定する
  3. ステップ2 - Nginxをインストールする
  4. ステップ3 - PHPと拡張機能をインストールする
  5. ステップ4 - PHP-FPMを設定する
  6. ステップ5 - Composerをインストールする
  7. ステップ6 - PostgreSQLをインストールして構成する
  8. ステップ7 - Redisをインストールして構成する
  9. ステップ8 - Craft CMSをインストールする

    1. Craft CMSでRedisを動作させる
  10. ステップ9 - SSLをインストールする
  11. ステップ10 - SELinuxを設定する
  12. ステップ11 - Nginxを設定する
  13. ステップ12 - Craft CMSにアクセスする
  14. ステップ13 - Craft CMSのバックアップと復元
  15. ステップ14 - Craft CMSを更新する
  16. 結論

Craft CMSは、ウェブサイトを作成するためのオープンソースのコンテンツ管理システムです。安全でスケーラブルなCMSで、広範なプラグインエコシステムと高品質の無料および有料プラグインを備えています。コンテンツ作成や管理タスクのための直感的でユーザーフレンドリーなコントロールパネルがあります。Yii PHPフレームワーク上に構築されています。Twigテンプレートエンジンがそのテンプレーティングシステムを支えています。MySQLとPostgreSQLの両方のデータベースで動作し、Redisデータベースをキャッシングとセッションストレージに使用します。

このチュートリアルでは、Debian 12サーバーにCraft CMSをインストールする方法を学びます。また、Redisを有効にしてCraft CMSと連携させる方法や、Craft CMSを使用して作成したサイトのバックアップと復元方法についても学びます。

前提条件

    最低1GBのRAMを搭載したRocky Linux 9を実行しているサーバー。

    sudo権限を持つ非ルートユーザー。

    craftcms.example.com<&47;code>のような完全修飾ドメイン名(FQDN)があなたのサーバーを指しています。

    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=httpsudo 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リポジトリを使用する必要があります。

&47;etc&47;yum.repos.d&47;nginx.repo<&47;code>というファイルを作成して編集のために開きます。

$ 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 -ysudo 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<&47;code>とpost_max_size<&47;code>変数の値を変更します。この値は、Craft CMSにアップロードできるファイルサイズを決定します。私たちの目的のために、128 MBに設定しています。お好みに応じて設定できます。

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.inisudo 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

ファイル&47;etc&47;php-fpm.d&47;www.conf<&47;code>を開いてください。

$ sudo nano /etc/php-fpm.d/www.conf

PHPプロセスのUnixユーザー/グループをnginxに設定する必要があります。ファイル内のuser=www-datagroup=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<&47;code>、listen.group=nobody<&47;code>、listen.mode=0660<&47;code>の行を見つけ、コメントを解除した後、次のように変更します。

; 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<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

PHP-fpmプロセスを再起動します。PHPサービスを再起動する前にNginxがインストールされていることを確認してください。そうしないと、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<&47;code>パッケージには、いくつかの追加ユーティリティが含まれています。

バージョンを確認してください。

$ 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=>

&92;q<&47;code>と入力してシェルを終了します。

ステップ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(アクセス制御リスト)を使用することです。&47;etc&47;redis&47;redis.conf<&47;code>ファイルを編集のために開いてください。

$ sudo nano /etc/redis/redis.conf

aclfile &47;etc&47;redis&47;users.acl<&47;code>の行を見つけ、前にあるハッシュ(<&47;code>)を削除してコメントを解除します。

aclfile /etc/redis/users.acl

ファイルを保存するには、Ctrl + X<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

次に、&47;etc&47;redis&47;users.acl<&47;code>ファイルを作成して開き、編集します。

$ sudo nano /etc/redis/users.acl

次の行を追加してください。

user navjot on +@all ~* >yourpassword

ファイルを保存するには、Ctrl + X<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

変更を実施するためにRedisサーバーを再起動してください。

$ sudo systemctl restart redis

Redisシェルを開いてください。

$ redis-cli

PING<&47;code>コマンドを使用してください。認証エラーが発生します。

127.0.0.1:6379> PING
(error) NOAUTH Authentication required.

AUTH<&47;code>コマンドを使用してログインします。

127.0.0.1:6379> AUTH navjot yourpassword
OK

再度PING<&47;code>コマンドを使用してください。

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をダウンロードしてインストールします。コマンドの最後のドット(.<&47;code>)は、インストールが現在のディレクトリで行われるべきであることを意味します。

$ 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 
Password:
Confirm:
Site name: Howtoforge Tutorials
Site URL: https://craftcms.example.com
Site language: [en-US]
*** installing Craft

Craft CMSでRedisを動作させる

yiisoft&47;yii2-redis<&47;code>パッケージをインストールします。

$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"

&47;var&47;www&47;html&47;craftcms&47;config&47;app.php<&47;code>ファイルを編集のために開いてください。

$ 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<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。これにより、Craft CMSのキャッシュストレージとしてRedisが有効になります。また、PHPセッションデータ、ジョブキュー、ミューテックスドライバーとしてRedisを使用することもできます。その設定はCraft CMSのドキュメントにあります。

.env<ファイルにRedisの設定を追加する必要があります。

$ nano .env

ファイルの最後に次のコードを追加してください。

REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword

上記のようにオプションを選択します。完了したら、ディレクトリのグループをnginx<&47;code>に変更します。これにより、現在ログインしているユーザーとNginxの両方がCraft CMSにアクセスできるようになります。

$ sudo chgrp -R nginx /var/www/html/craftcms

nginx<グループにディレクトリへの書き込み権限を与えます。

$ sudo chmod -R g+w /var/www/html/craftcms

ここから先は、再度権限を変更する必要はなく、ルート権限を使用せずにすべての操作を行うことができます。

ステップ9 - SSLをインストールする

SSL証明書を生成するためにCertbotをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。Rocky Linuxにはそれが含まれていないため、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 /snapecho 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Certbotをインストールします。

$ sudo snap install --classic certbot

Certbotコマンドが実行できるようにするには、&47;usr&47;bin<&47;code>ディレクトリへのシンボリックリンクを作成する次のコマンドを使用してください。

$ 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  -d craftcms.example.com

上記のコマンドは、サーバーの&47;etc&47;letsencrypt&47;live&47;craftcms.example.com<&47;code>ディレクトリに証明書をダウンロードします。

ディフィー・ヘルマン群証明書を生成します。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Certbotの更新スケジューラーサービスを確認してください。

$ sudo systemctl list-timers

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モジュールをインストールすることで解決できます。最初のステップは、タイプ強制<&47;code>ファイルを作成することです。

ホームディレクトリにmy-phpfpm.te<&47;code>というファイルを作成し、編集のために開いてください。

$ 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<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

次のステップは、以下のコマンドを使用してそれをポリシーモジュールに変換することです。コマンド内のファイル名を変更しないでください。そうしないと、動作しません。モジュールの名前はmy-phpfpm<&47;code>で、ファイル名はモジュール名と同じである必要があります。

$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

次に、ポリシーモジュールをコンパイルしてポリシーパッケージを作成する必要があります。

$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

最後のステップは、semodule<&47;code>コマンドを使用してポリシーパッケージをロードすることで、使用するポリシーをインストールします。

$ sudo semodule -i my-phpfpm.pp

ステップ11 - Nginxを設定する

&47;etc&47;nginx&47;nginx.conf<&47;code>ファイルを編集のために開いてください。

$ sudo nano /etc/nginx/nginx.conf

次の行をinclude &47;etc&47;nginx&47;conf.d&47;*.conf;<&47;code>の前に追加してください。

server_names_hash_bucket_size 64;

ファイルを保存するには、Ctrl + X<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

&47;etc&47;nginx&47;conf.d&47;craftcms.conf<&47;code>ファイルを作成して開き、編集します。

$ 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<&47;strong>を押し、プロンプトが表示されたらY<&47;strong>を入力します。

Nginxの設定を確認してください。

$ sudo nginx -t

Nginxサーバーを再起動します。

$ sudo systemctl restart nginx

ステップ12 - Craft CMSにアクセスする

ブラウザでURL https:&47;&47;craftcms.example.com<&47;code> を開くと、次のページに移動します。

管理ページにアクセスするには、URL https:&47;&47;craftcms.example.com&47;admin<&47;code> にアクセスしてください。ログインページに移動します。

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

これで、ウェブサイトを構築するためにCraft CMSを使用し始めることができます。

ステップ13 - Craft CMSのバックアップと復元

管理パネル内からCraft CMSのデータベースをバックアップするには、管理ダッシュボード >> ユーティリティ >> データベースバックアップ<&47;strong>にアクセスしてください。

バックアップボタンをクリックしてデータベースのバックアップをダウンロードします。また、ターミナルを使用してバックアップを作成することもできます。バックアップを作成するには、次のコマンドを実行してください。プロンプトが表示されたらパスワードを入力します。

$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql

Craft CMSのコマンドラインユーティリティを使用してデータベースのバックアップを作成することもできます。このユーティリティの利点は、データベースの認証情報を渡す必要がないことです。Craft CMSのコマンドコンソールユーティリティについての詳細はここをお読みください。

$ cd /var/www/html/craftcmsphp 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ディレクトリに書き込まれます。

ファイルをバックアップするには、全ての&47;var&47;www&47;html&47;craftcms<&47;code>フォルダーをコピーして保存してください。

$ cd /var/www/htmltar -zcf ~/craftcms.tar.gz craftcms

新しいサーバーに復元するには、ファイルを&47;var&47;www&47;html<&47;code>フォルダーに抽出します。

$ 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ソフトウェアをインストールする方法を学んだチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。