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

Чтобы получить доступ к административной странице, перейдите по 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. Один из них — из панели администратора. Когда обновление будет доступно, вы получите уведомление. Нажмите на уведомление, чтобы выполнить обновление. Craft CMS автоматически создаст резервную копию базы данных перед выполнением обновления.
Вы также можете обновить его через терминал.
Чтобы проверить все доступные обновления, выполните следующую команду.
$ cd /var/www/html/craftcms/
$ php craft update
Если обновление доступно, выполните следующую команду, чтобы применить его.
$ php craft update all
Заключение
На этом наше руководство завершено, в котором вы узнали, как установить программное обеспечение Craft CMS на сервер Debian 12. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.