Craft CMS – это система управления контентом с открытым исходным кодом для создания веб-сайтов. Это безопасная и масштабируемая CMS с обширной экосистемой плагинов и высококачественными бесплатными и платными плагинами. Имеет интуитивно понятную, удобную панель управления для создания контента и выполнения административных задач. Она построена на PHP-фреймворке Yii. Шаблонный движок 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 - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 14:01:19 UTC; 3s ago Docs: http://nginx.org/en/docs/ Process: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 59397 (nginx) Tasks: 2 (limit: 10866) Memory: 1.9M CPU: 10ms CGroup: /system.slice/nginx.service ??59397 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??59398 "nginx: worker process"
Шаг 3 – Установка PHP и расширений
Rocky Linux 9 по умолчанию поставляется с PHP 8.1. Чтобы всегда оставаться на последней версии PHP или если вы хотите установить несколько версий PHP, нам нужно использовать репозиторий REMI.
Первым шагом будет получение репозитория Epel.
$ sudo dnf install epel-release -y
Затем установите репозиторий Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Проверьте наличие доступных потоков PHP.
$ dnf module list php -y Name Stream Profiles Summary php 8.1 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 9 - x86_64 Name Stream Profiles Summary php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
По умолчанию используется версия 8.1. На момент написания этого руководства Craft CMS совместима с PHP 8.2. Поэтому включите репозиторий Remi для PHP 8.2.
$ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.2
Установите 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 - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 14:05:58 UTC; 6s ago Main PID: 61410 (php-fpm) Status: "Ready to handle connections" Tasks: 6 (limit: 10866) Memory: 16.6M CPU: 96ms CGroup: /system.slice/php-fpm.service ??61410 "php-fpm: master process (/etc/php-fpm.conf)" ??61411 "php-fpm: pool www" ??61412 "php-fpm: pool www" ??61413 "php-fpm: pool www" ??61414 "php-fpm: pool www" ??61415 "php-fpm: pool www"
Шаг 4 – Настройка PHP-FPM
Откройте php.ini
для редактирования.
$ sudo nano /etc/php.ini
Чтобы задать размер загружаемых файлов, измените значения параметров upload_max_filesize
и post_max_size
переменные. Это значение определяет размер файла, который вы можете загрузить в Craft CMS. Для наших целей мы установили 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. Он также является менеджером зависимостей PHP-фреймворка Laravel, на котором основана CMS Craft.
Загрузите скрипт установки 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 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 22:28:34 UTC; 2s ago Docs: https://www.postgresql.org/docs/16/static/ Process: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 72148 (postgres) Tasks: 7 (limit: 10866) Memory: 17.4M CPU: 45ms CGroup: /system.slice/postgresql-16.service ??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/ ??72149 "postgres: logger " ??72150 "postgres: checkpointer " ??72151 "postgres: background writer " ??72153 "postgres: walwriter " ??72154 "postgres: autovacuum launcher " ??72155 "postgres: logical replication launcher " Dec 04 22:28:33 craftcms.nspeaks.com systemd[1]: Starting PostgreSQL 16 database server... Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG: redirecting log output to logging collector process Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] HINT: Future log output will appear in directory "log". Dec 04 22:28:34 craftcms.nspeaks.com systemd[1]: Started PostgreSQL 16 database server.
Вы можете увидеть, что служба включена и работает по умолчанию.
Запустите оболочку PostgreSQL.
$ sudo -i -u postgres psql
Создайте базу данных Craft CMS.
postgres=# CREATE DATABASE craftcms;
Создайте пользователя Craft CMS и выберите надежный пароль.
postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';
Измените владельца базы данных на пользователя Craft CMS.
postgres-# ALTER DATABASE craftcms OWNER TO craftuser;
Предоставьте все привилегии в базе данных пользователю Craft CMS.
postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;
Выйдите из оболочки.
postgres-# \q
Убедитесь, что ваши учетные данные работают.
$ psql --username craftuser --password --host localhost craftcms Password: psql (16.1) Type "help" for help. craftcms=>
Выйдите из оболочки, набрав \q
.
Шаг 7 – Установка и настройка Redis
Rocky Linux 9 поставляется с Redis 6.2 по умолчанию. Однако мы будем использовать 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: "Ready to accept connections" Tasks: 5 (limit: 10866) Memory: 7.5M CPU: 176ms CGroup: /system.slice/redis.service ??72877 "/usr/bin/redis-server 127.0.0.1:6379" Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Starting Redis persistent key-value database... Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Started Redis persistent key-value database.
Следующим шагом будет добавление аутентификации на сервер Redis. Начиная с Redis v6.0, лучшим способом добавления аутентификации является использование ACL (списков контроля доступа). Откройте /etc/redis/redis.conf
файл для редактирования.
$ sudo nano /etc/redis/redis.conf
Найдите строку # aclfile /etc/redis/users.acl
и откомментируйте ее, удалив хэш (#
) перед ним.
aclfile /etc/redis/users.acl
Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении запроса.
Далее создайте и откройте файл /etc/redis/users.acl
файл для редактирования.
$ sudo nano /etc/redis/users.acl
Добавьте в него следующую строку.
user navjot on +@all ~* >yourpassword
Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении запроса.
Перезапустите сервер Redis, чтобы внести изменения.
$ sudo systemctl restart redis
Откройте оболочку Redis.
$ redis-cli
Используйте команду PING
команду. Это приведет к ошибке аутентификации.
127.0.0.1:6379> PING (error) NOAUTH Authentication required.
Используйте AUTH
для входа в систему.
127.0.0.1:6379> AUTH navjot yourpassword OK
Используйте PING
снова.
127.0.0.1:6379> PING OK
Выход из оболочки.
127.0.0.1:6379> exit
Вам также потребуется установить расширение PHP Redis.
$ sudo apt install php-redis
Шаг 8 – Установите Craft CMS
Перед установкой Craft CMS вы можете проверить, удовлетворяет ли ваш сервер всем требованиям для его запуска, с помощью следующей команды.
$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash
Вы получите следующий результат.
Running Craft Server Check… Craft CMS Requirement Checker This script checks if your web server configuration meets the requirements for running a Craft CMS installation. It checks if the server is running the right version of PHP, if appropriate PHP extensions have been loaded, and if php.ini file settings are correct. Results: -------- PHP 8.2+: OK BCMath extension: OK ctype extension: OK cURL extension: OK DOM extension: OK Fileinfo extension: OK GD extension or ImageMagick extension: OK iconv extension: OK Intl extension: OK JSON extension: OK Multibyte String extension (with Function Overloading disabled): OK OPcache extension (with save_comments): OK OpenSSL extension: OK PCRE extension (with UTF-8 support): OK PDO extension: OK Reflection extension: OK SPL extension: OK Zip extension: OK ignore_user_abort(): OK password_hash(): OK proc_close(): OK proc_get_status(): OK proc_open(): OK proc_terminate(): OK allow_url_fopen: OK ini_set calls: OK Memory Limit: OK ------------------------------------------ Errors: 0 Warnings: 0 Total checks: 27
Если все в порядке, можно приступать. Создайте корневой каталог веб-сайта.
$ sudo mkdir /var/www/html/craftcms -p
Установите текущего пользователя в качестве владельца этого каталога.
$ sudo chown -R $USER:$USER /var/www/html/craftcms
Переход в каталог.
$ cd /var/www/html/craftcms
Скачайте и установите Craft CMS с помощью Composer. Точка (.
) в конце команды означает, что установка должна быть выполнена в текущем каталоге.
$ composer create-project craftcms/craft .
Во время установки вам будет предложено ввести несколько данных, касающихся базы данных, учетной записи администратора. URL-адрес сайта и его язык, как показано ниже.
> @php craft setup/welcome ______ .______ ___ _______ .___________. / || _ \ / \ | ____|| | | ,----'| |_) | / ^ \ | |__ `---| |----` | | | / / /_\ \ | __| | | | `----.| |\ \----./ _____ \ | | | | \______|| _| `._____/__/ \__\ |__| |__| A N E W I N S T A L L ______ .___ ___. _______. / || \/ | / | | ,----'| \ / | | (----` | | | |\/| | \ \ | `----.| | | | .----) | \______||__| |__| |_______/ Generating an application ID ... done (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d) Generating a security key ... done (iMdcUi6wQyf9MshEda__vZcCwILbclxz) Welcome to Craft CMS! Are you ready to begin the setup? (yes|no) [no]:yes Which database driver are you using? (mysql or pgsql) [mysql] pgsql Database server name or IP address: [127.0.0.1] Database port: [5432] Database username: [root] craftuser Database password: Database name: craftcms Database table prefix: Testing database credentials ... success! Using default schema "public". Saving database credentials to your .env file ... done Install Craft now? (yes|no) [yes]:yes Username: [admin] navjot Email: [email protected] Password: Confirm: Site name: Tutorials Site URL: https://craftcms.example.com Site language: [en-US] *** installing Craft
Заставьте Redis работать с Craft CMS
Установите yiisoft/yii2-redis
пакет.
$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"
Откройте /var/www/html/craftcms/config/app.php
файл для редактирования.
$ nano config/app.php
В нем вы увидите следующее содержание.
use craft\helpers\App; return [ 'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS', ];
Измените его следующим образом.
use craft\helpers\App; return [ 'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS', 'components' => [ 'cache' => function() { $config = [ 'class' => yii\redis\Cache::class, 'keyPrefix' => Craft::$app->id, 'defaultDuration' => Craft::$app->config->general->cacheDuration, // Full Redis connection details: 'redis' => [ 'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost', 'port' => 6379, 'username' => App::env('REDIS_USERNAME') ?: null, 'password' => App::env('REDIS_PASSWORD') ?: null, ], ]; return Craft::createObject($config); }, ], ];
Сохраните файл, нажав кнопку Ctrl + X и ввести Y при появлении запроса. Это позволит использовать Redis в качестве кэш-хранилища для Craft CMS. Вы также можете использовать Redis для хранения данных сессии PHP, очереди заданий и в качестве драйвера мьютекса. Конфигурацию для него можно найти в Документация Craft CMS.
Вам также необходимо добавить конфигурацию Redis в файл .env
файл.
$ nano .env
Добавьте следующий код в конец файла.
REDIS_HOSTNAME=localhost REDIS_USERNAME=navjot REDIS_PASSWORD=yourpassword
Выберите опции, как показано выше. После завершения измените группу каталога на nginx
. Таким образом, доступ к Craft CMS получит как текущий пользователь, вошедший в систему, так и Nginx.
$ 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 (Extra Packages for Enterprise 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/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