ウェブサイト検索

Debian 12にCraft CMSをインストールする方法


Debian 12にCraft CMSをインストールする方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Debian 12 (ブックワーム)
  • Debian 11 (バルセイヤ)
  • Debian 9(ストレッチ)

このページで

  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 - Nginxを設定する
  12. ステップ11 - Craft CMSにアクセスする
  13. ステップ12 - Craft CMSのバックアップとリストア
  14. ステップ13 - Craft CMSを更新する
  15. 結論

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

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

前提条件

    最低1GBのRAMを搭載したDebian 12を実行するサーバー。

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

    シンプルファイアウォール(UFW)が有効で実行中です。

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

    Amazon SESやMailgunのようなメールサービスのSMTPアカウント。

    すべてが更新されています。

    sudo apt update && sudo apt upgrade
    

    チュートリアルとCraft CMSを実行するには、いくつかの必須パッケージが必要です。そのいくつかはすでにサーバーにインストールされている場合もあります。

    sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y
    

ステップ1 - ファイアウォールを設定する

パッケージをインストールする前の最初のステップは、HTTPおよびHTTPS接続を許可するようにファイアウォールを設定することです。

ファイアウォールの状態を確認してください。

sudo ufw status

次のようなものが表示されるはずです。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

HTTPおよびHTTPSポートを許可します。

sudo ufw allow http
sudo ufw allow https

再度ステータスを確認して、確認してください。

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

ステップ2 - Nginxをインストールする

Debian 12には古いバージョンのNginxが含まれています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。

Nginxの署名キーをインポートします。

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginxの安定版のリポジトリを追加してください。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

システムリポジトリを更新してください。

sudo apt update

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

sudo apt install nginx

インストールを確認してください。Debianシステムでは、次のコマンドはsudoと一緒にしか動作しません。

sudo nginx -v
nginx version: nginx/1.24.0

Nginxサーバーを開始します。

sudo systemctl start nginx

サービスの状態を確認してください。

sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-12-01 09:46:46 UTC; 18s ago
       Docs: https://nginx.org/en/docs/
    Process: 39483 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 39484 (nginx)
      Tasks: 2 (limit: 2315)
     Memory: 1.7M
        CPU: 6ms
     CGroup: /system.slice/nginx.service
             ??39484 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??39485 "nginx: worker process"

ステップ3 - PHPと拡張機能をインストールする

Debian 12はデフォルトでPHP 8.2を搭載しています。Craft CMSに必要な拡張機能を含めて、以下のコマンドを実行することでインストールできます。

sudo apt 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バージョンをインストールしたい場合は、OndřejのPHPリポジトリを追加してください。

まず、SuryのリポジトリのPHP GPGキーをインポートします。

sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Ondrej SuryのPHPリポジトリを追加してください。

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

システムのリポジトリリストを更新してください。

sudo apt update

おそらく保留中のアップグレードに関する情報を受け取るでしょう。それを実行してください。

sudo apt upgrade

PHPとその拡張機能をインストールします。

sudo apt install php8.2 php8.2-cli php8.2-common php8.2-gmp php8.2-fpm php8.2-xmlrpc php8.2-bcmath php8.2-imagick php8.2-curl php8.2-zip php8.2-gd php8.2-mysql php8.2-xml php8.2-mbstring php8.2-xmlrpc php8.2-intl php8.2-pgsql

インストールされているPHPのバージョンを確認してください。

php --version
PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS)
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サービスのステータスを確認してください。

sudo systemctl status php8.2-fpm
? php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-12-01 10:29:53 UTC; 34min ago
       Docs: man:php-fpm8.2(8)
    Process: 65825 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS)
   Main PID: 65821 (php-fpm8.2)
     Status: "Processes active: 0, idle: 3, Requests: 208, slow: 0, Traffic: 0.2req/sec"
      Tasks: 4 (limit: 2315)
     Memory: 83.4M
        CPU: 6.456s
     CGroup: /system.slice/php8.2-fpm.service
             ??65821 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)"
             ??65823 "php-fpm: pool www"
             ??65824 "php-fpm: pool www"
             ??65843 "php-fpm: pool www"

ステップ4 - PHP-FPMを設定する

php.iniを編集するために開いてください。

sudo nano /etc/php/8.2/fpm/php.ini

ファイルのアップロードサイズを設定するには、upload_max_filesize と post_max_size 変数の値を変更します。この値は、Craft CMSにアップロードできるファイルサイズを決定します。私たちの目的のために、128 MBに設定しています。お好みに合わせて設定できます。

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php/8.2/fpm/php.ini

サーバーのリソースと要件に応じて、PHPのメモリ制限を設定してください。

sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

/etc/php/8.2/fpm/pool.d/www.confファイルを開いてください。

sudo nano /etc/php/8.2/fpm/pool.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.
user = nginx
group = nginx
...

また、ファイル内の listen.owner=www-data と listen.group=www-data の行を見つけて、それらを nginx に変更してください。

listen.owner = nginx
listen.group = nginx

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

PHP-fpmプロセスを再起動してください。PHPサービスを再起動する前にNginxがインストールされていることを確認してください。そうでないと、nginxグループを見つけられずに失敗します。

sudo systemctl restart php8.2-fpm

ステップ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をインストールして構成する

Debian 12 はデフォルトで PostgreSQL 15 を搭載しています。その代わりに PostgreSQL 16 を使用します。

次のコマンドを実行して、PostgreSQLのGPGキーを追加します。

curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

APTリポジトリをソースリストに追加してください。

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

システムリポジトリを更新してください。

sudo apt update

これで、以下のコマンドを使用してPostgreSQLをインストールできます。

sudo apt install postgresql postgresql-contrib

postgresql-contrib パッケージには、いくつかの追加ユーティリティが含まれています。

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

psql --version
psql (PostgreSQL) 16.1 (Debian 16.1-1.pgdg120+1)

PostgreSQLサービスの状態を確認してください。

sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Wed 2023-11-29 05:54:03 UTC; 11s ago
   Main PID: 20170 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Nov 29 05:54:03 craftcms systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Nov 29 05:54:03 craftcms systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

サービスはデフォルトで有効になっていて、実行されていることがわかります。

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 (Debian 16.1-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

craftcms=>

シェルを終了するには、\qと入力します。

ステップ7 - Redisのインストールと設定

Debian 12はデフォルトでRedis 7.0を搭載しており、これを使用します。Redisをインストールしてください。

sudo apt install redis

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

redis-server --version
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=c4e7f6bf175a885b

ただし、最新バージョンをインストールしたい場合は、次のコマンドを入力してRedisの公式リポジトリを使用することができます。

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install redis

次のステップは、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 
Password:
Confirm:
Site name: Howtoforge Tutorials
Site URL: https://craftcms.example.com
Site language: [en-US]
*** installing Craft

Craft CMSでRedisを動作させる

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のドキュメントにあります。

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

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

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

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

SSL証明書を生成するためにCertbotをインストールする必要があります。Debianのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得することができます。私たちはSnapdバージョンを使用します。

Debian 12にはSnapdがインストールされていません。Snapdパッケージをインストールしてください。

sudo apt install snapd

次のコマンドを実行して、Snapdのバージョンが最新であることを確認してください。

sudo snap install core && sudo snap refresh core

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

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

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

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

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

sudo systemctl list-timers

snap.certbot.renew.serviceが実行されるようにスケジュールされたサービスの1つとして見つかります。

NEXT                        LEFT         LAST                        PASSED     UNIT                      ACTIVATES     
---------------------------------------------------------------------------------------------------------------------------               
Fri 2023-12-01 10:39:00 UTC 12min left   Fri 2023-12-01 10:09:01 UTC 17min ago  phpsessionclean.timer    phpsessionclean.service
Fri 2023-12-01 17:01:47 UTC 6h left      Thu 2023-11-30 17:01:47 UTC 17h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2023-12-01 18:34:00 UTC 8h left      -                           -          snap.certbot.renew.timer snap.certbot.renew.service

プロセスのドライランを実行して、SSLの更新が正常に機能しているか確認してください。

sudo certbot renew --dry-run

エラーが見当たらなければ、すべて準備完了です。あなたの証明書は自動的に更新されます。

ステップ10 - 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/php8.2-fpm.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

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

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

管理ページにアクセスするには、URL https://craftcms.example.com/admin を訪れてください。ログインページに移動します。

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

これからCraft CMSを使ってウェブサイトを構築することができます。

ステップ12 - 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

ステップ13 - Craft CMSを更新する

Craft CMSを更新する方法は2つあります。1つは管理パネル内からの方法です。更新が利用可能な場合、通知が表示されます。その通知をクリックしてアップグレードします。Craft CMSは、更新を行う前に自動的にデータベースのバックアップを作成します。

ターミナルを通じて更新することもできます。

すべての利用可能な更新を確認するには、次のコマンドを実行してください。

cd /var/www/html/craftcms/
php craft update

更新が利用可能な場合は、次のコマンドを実行して適用してください。

php craft update all

結論

これで、Debian 12 サーバーに Craft CMS ソフトウェアをインストールする方法を学んだチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。

関連記事: