Установка Craft CMS · 20 min read · Sep 11, 2025

Как установить Craft CMS на Rocky Linux 9

Craft CMS — это система управления контентом с открытым исходным кодом для создания веб-сайтов. Это безопасная и масштабируемая CMS с обширной экосистемой плагинов и качественными бесплатными и платными плагинами. У нее интуитивно понятная, удобная панель управления для создания контента и административных задач. Она построена на фреймворке Yii PHP. Шаблонизатор Twig управляет ее системой шаблонов. Она может работать как с базами данных MySQL, так и с PostgreSQL для хранения и использует базу данных Redis для кэширования и хранения сессий.

В этом руководстве вы узнаете, как установить Craft CMS на сервер Debian 12. Вы также узнаете, как включить Redis для работы с ним и как создать резервную копию и восстановить сайт, созданный с помощью Craft CMS.

Предварительные требования

  • Сервер с Rocky Linux 9 с минимум 1 ГБ ОЗУ.
  • Пользователь, не являющийся root, с правами sudo.
  • Полное доменное имя (FQDN), например craftcms.example.com, указывающее на ваш сервер.
  • Учетная запись SMTP с почтовым сервисом, таким как Amazon SES или Mailgun.
  • Все обновлено. $ 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 - высокопроизводительный веб-сервер
     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. Поэтому включите репозиторий PHP 8.2 от Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Установите PHP и его расширения, необходимые для Craft CMS.

$ 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 - Менеджер процессов PHP FastCGI
     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: "Готов к обработке подключений"
      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. Для наших целей мы устанавливаем его на 128 МБ. Вы можете установить его по своему усмотрению.

$ 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

Нам нужно установить Unix пользователя/группу для процессов PHP на 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. Он также является менеджером зависимостей фреймворка Laravel PHP, который управляет Craft CMS.

Скачайте скрипт установки 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 вместо этого из его официального репозитория.

Установите репозиторий RPM PostgreSQL.

$ 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
     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 по умолчанию. Однако мы будем использовать Redis 7.0, который мы установим с помощью репозитория Remi.

Поскольку мы установили репозиторий Remi при установке PHP, мы можем пропустить эту часть. Перечислите все доступные модули 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: "Готов к принятию подключений"
      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

Скачайте и установите Craft CMS с помощью Composer. Точка ( .) в конце команды означает, что установка должна быть выполнена в текущем каталоге.

$ composer create-project craftcms/craft .

Во время установки вам будет предложено ввести несколько данных о базе данных, учетной записи администратора, URL сайта и его языке, как показано ниже.

> @php craft setup/welcome

   ______ .______          ___       _______ .___________.
  /      ||   _  \        /   \     |   ____||           |
 |  ,----'|  |_)  |      /  ^  \    |  |__   `---|  |----`
 |  |     |      /      /  /_\  \   |   __|      |  |
 |  `----.|  |\  \----./  _____  \  |  |         |  |
  \______|| _| `._____/__/     \__\ |__|         |__|

     A       N   E   W       I   N   S   T   A   L   L
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______|


Генерация идентификатора приложения ... завершено (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Генерация ключа безопасности ... завершено (iMdcUi6wQyf9MshEda__vZcCwILbclxz)


Добро пожаловать в Craft CMS!

Готовы начать настройку? (yes|no) [no]:yes
Какой драйвер базы данных вы используете? (mysql или pgsql) [mysql] pgsql
Имя или IP-адрес сервера базы данных: [127.0.0.1]
Порт базы данных: [5432]
Имя пользователя базы данных: [root] craftuser
Пароль базы данных:
Имя базы данных: craftcms
Префикс таблицы базы данных:
Проверка учетных данных базы данных ... успех!
Использование схемы по умолчанию "public".
Сохранение учетных данных базы данных в вашем .env файле ... завершено

Установить Craft сейчас? (yes|no) [yes]:yes

Имя пользователя: [admin] navjot
Email: [email protected]
Пароль:
Подтвердить:
Имя сайта: Howtoforge Tutorials
URL сайта: https://craftcms.example.com
Язык сайта: [en-US]
*** установка 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,

                // Полные данные подключения к Redis:
                '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, когда будет предложено. Это включает Redis в качестве хранилища кэша для Craft CMS. Вы также можете использовать Redis для хранения данных сессий PHP, очереди заданий и в качестве драйвера мьютекса. Вы можете найти конфигурацию для этого в документации 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

С этого момента вам не нужно будет снова изменять разрешения, и вы сможете выполнять все операции без использования прав root.

Шаг 9 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Мы будем использовать установщик пакетов Snapd для этого. Поскольку Rocky Linux не поставляется с ним, установите установщик Snapd. Он требует репозиторий EPEL (дополнительные пакеты для корпоративного Linux), чтобы работать. Но поскольку мы уже установили его на шаге 3, мы можем сразу перейти к делу.

Установите Snapd.

$ sudo dnf install -y snapd

Включите и запустите службу Snap.

$ sudo systemctl enable snapd --now

Установите пакет Snap core и убедитесь, что ваша версия 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 на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ 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. Первый шаг — создать файл 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 установлено на 128 МБ, что мы установили для Craft CMS при настройке PHP ранее.

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 в вашем браузере, и вы попадете на следующую страницу.

Главная страница Craft CMS

Чтобы получить доступ к административной странице, перейдите по URL https://craftcms.example.com/admin, и вы попадете на страницу входа.

Страница входа Craft CMS

Введите свои учетные данные администратора и нажмите клавишу Войти, чтобы войти в систему. Вы попадете на следующую панель управления.

Панель управления Craft CMS

Теперь вы можете начать использовать Craft CMS для создания своего веб-сайта.

Шаг 13 - Резервное копирование и восстановление Craft CMS

Вы можете создать резервную копию базы данных 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. Один из них — из панели администратора. Когда обновление будет доступно, вы получите уведомление. Нажмите на уведомление, чтобы выполнить обновление. Craft CMS автоматически создаст резервную копию базы данных перед выполнением обновления.

Вы также можете обновить его через терминал.

Чтобы проверить все доступные обновления, выполните следующую команду.

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

Если обновление доступно, выполните следующую команду, чтобы применить его.

$ php craft update all

Заключение

На этом наше руководство завершено, в котором вы узнали, как установить программное обеспечение Craft CMS на сервер Debian 12. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.