Гид по технологиям

Установка Craft CMS на Ubuntu 20.04 LTS

• 10 min read • DevOps • Обновлено 26 Nov 2025
Установка Craft CMS на Ubuntu 20.04
Установка Craft CMS на Ubuntu 20.04

Craft CMS — лёгкая и гибкая CMS на PHP. В этом пошаговом руководстве показано, как подготовить сервер Ubuntu 20.04, установить стек LEMP (Nginx, MariaDB, PHP), настроить Composer, развернуть Craft, сконфигурировать Nginx, выставить права и обеспечить базовую безопасность. Включены чеклисты для ролей, советы по отладке, резервному копированию и улучшению производительности.

Зачем это руководство

Это руководство предназначено для разработчиков и системных администраторов, которым нужно установить Craft CMS на сервер с Ubuntu 20.04 LTS. Оно покрывает все основные шаги от обновления системы до проверки работоспособности установки через веб-интерфейс.

Кому полезно

  • Системным администраторам, разворачивающим LEMP для PHP-приложений.
  • Разработчикам, запускающим Craft для сайтов и веб-приложений.
  • Командам, которым нужен воспроизводимый чеклист установки.

Краткие определения

  • CMS: система управления контентом, упрощает публикацию страниц и медиа.
  • LEMP: Linux + Nginx + MariaDB/MySQL + PHP-FPM.
  • Composer: менеджер зависимостей PHP.

Содержание

  • Предварительные требования
  • Подготовка сервера и обновление системы
  • Установка зависимостей
  • Настройка LEMP (Nginx, MariaDB, PHP-FPM)
  • Создание базы данных для Craft
  • Установка Composer и самого Craft
  • Настройка Nginx для Craft
  • Права и безопасность файлов
  • SSL: быстрый сертификат Let’s Encrypt
  • Отладка и часто встречаемые ошибки
  • Резервное копирование и восстановление
  • Производительность
  • Роли и чеклисты
  • Критерии приёмки
  • Частые вопросы
  • Итог

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

Перед началом убедитесь, что у вас есть:

  • Сервер с Ubuntu 20.04 LTS и подключением по SSH.
  • Ненулевой пользователь с sudo-привилегиями (рекомендуется не работать под root).
  • Доменное имя, указывающее на сервер (например craft.example.com) — для публичного доступа и SSL.
  • Базовые навыки работы в терминале.

Важно: все команды в этом руководстве выполняются в терминале от имени пользователя с sudo, если не указано иначе.


Подготовка сервера и обновление системы

Войдите на сервер по SSH (пример):

ssh user@your_instance_ip

Затем обновите пакеты и систему:

sudo apt update && sudo apt upgrade -y

Если при обновлении возникли проблемы с пакетами, запустите исправление:

sudo apt-get -f install

и, при необходимости:

sudo dpkg --configure -a

Эти команды помогут очистить состояния пакетов и завершить конфигурацию.

Force installation of packages

Alt: Скриншот терминала с примером принудительной установки пакетов и исправлением зависимостей.


Установка базовых утилит и зависимостей

Установите часто используемые инструменты, которые понадобятся в процессе:

sudo apt install -y curl wget vim git unzip socat

Кратко про назначение:

  • curl и wget — скачивание файлов и взаимодействие с внешними ресурсами.
  • vim — текстовый редактор (можно заменить nano).
  • git — контроль версий.
  • unzip — распаковка ZIP-архивов.
  • socat — удобный инструмент для проброса сокетов (иногда полезен при дебаге).

Install dependencies

Alt: Скриншот установки базовых пакетов через apt.


Установка LEMP (Nginx, MariaDB, PHP-FPM)

Craft CMS написан на PHP и обычно работает с базой данных MySQL/MariaDB. Установим Nginx и MariaDB, затем PHP с нужными расширениями.

sudo apt-get install nginx mariadb-server -y

Установите PHP и рекомендуемые модули для Craft:

sudo apt-get install php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-zip php-intl php-xml -y

Пояснения по ключевым пакетам:

  • php-fpm — процессный менеджер для PHP, работает с Nginx через сокет или TCP.
  • php-mysql — модуль для соединения с MySQL/MariaDB.
  • php-gd и php-imagick — обработка изображений.
  • php-mbstring и php-intl — поддержка многоязычных строк и интернационализации.

После установки отредактируйте конфигурацию PHP-FPM для повышения лимитов, необходимых Craft:

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

Измените/добавьте следующие параметры:

memory_limit = 512M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Europe/Moscow

Примечание: вместо Europe/Moscow укажите вашу временную зону в формате, поддерживаемом PHP (список: https://www.php.net/manual/timezones.php). В примерах часто встречается Asia/Kolkata, но выберите свою зону.

Перезапустите PHP-FPM:

sudo systemctl restart php7.4-fpm

Проверьте статус:

sudo systemctl status php7.4-fpm

Check PHP status

Alt: Скриншот вывода systemctl status для php7.4-fpm.


Создание базы данных и пользователя

Откройте консоль MariaDB/MySQL от root:

sudo mysql -u root -p

Если root в MariaDB настроен на аутентификацию через unix_socket, можно попасть без пароля:

sudo mysql

Внутри консоли выполните команды:

CREATE DATABASE craftdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON craftdb.* TO 'craftuser'@'localhost' IDENTIFIED BY 'StrongPasswordHere';
FLUSH PRIVILEGES;
EXIT;

Замените StrongPasswordHere на сложный пароль. Рекомендуется хранить его в менеджере паролей.

Пояснения:

  • utf8mb4 — предпочтительная кодировка для корректной поддержки смайликов и всех символов Unicode.
  • grant позволяет пользователю craftuser работать только с базой craftdb.

Установка Composer и Craft CMS

Установите Composer — менеджер зависимостей PHP:

sudo curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Проверьте версию:

composer --version

Теперь подготовим директорию для проекта (веб-корень):

sudo mkdir -p /var/www/html/craft
sudo chown $USER:$USER /var/www/html/craft
cd /var/www/html/craft

Установите Craft через Composer:

composer create-project craftcms/craft .

Примечание: команда установит последнюю стабильную версию в текущую директорию. Если требуется конкретная версия, укажите её, например composer create-project craftcms/craft:^3.7 .

После установки верните права каталога под веб-сервер:

sudo chown -R www-data:www-data /var/www/html/craft
sudo find /var/www/html/craft -type d -exec chmod 755 {} \;
sudo find /var/www/html/craft -type f -exec chmod 644 {} \;

Дополнительно для директорий, куда Craft должен записывать файлы (storage, web/uploads, config) назначьте права записи:

sudo chmod -R ug+rw /var/www/html/craft/storage /var/www/html/craft/web/uploads
sudo chown -R www-data:www-data /var/www/html/craft/storage /var/www/html/craft/web/uploads

Важно: ограничивайте права как можно жёстче — давайте запись только тем каталогам, где это действительно нужно.

Install craft cms using composer

Alt: Скриншот установки Craft с помощью Composer в терминале.


Конфигурация Nginx для Craft

Создайте файл конфигурации Nginx для сайта:

sudo nano /etc/nginx/conf.d/craft.conf

Пример содержимого:

server {
  listen 80;
  server_name craft.example.com;
  root /var/www/html/craft/web;
  index index.php;

  location / {
    try_files $uri/index.html $uri $uri/ /index.php?$query_string;
  }

  location ~ [^/]\.(php)(/|$) {
    try_files $uri $uri/ /index.php?$query_string;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTP_PROXY "";
  }

  location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires max;
    log_not_found off;
  }
}

Пояснения:

  • server_name — замените на фактическое доменное имя.
  • root указывает на папку web внутри установки Craft.
  • блок location для статических файлов ускоряет отдачу ресурсов.

Проверьте конфигурацию и перезагрузите Nginx:

sudo nginx -t
sudo systemctl reload nginx

Check nginx config

Alt: Скриншот проверки конфигурации Nginx с успешным результатом.


Доступ к панели управления Craft

Откройте браузер и перейдите по адресу http://craft.example.com. Если DNS ещё не настроен, можно временно использовать IP-адрес сервера.

При первом запуске установщик Craft запросит данные базы данных и создаст таблицы.

Примеры действий в установщике:

  • Укажите hostname: localhost
  • Database: craftdb
  • Username: craftuser
  • Password: пароль, который вы задали

После установки перейдите в панель администратора и создайте учётную запись администратора сайта.

Admin welcome

Alt: Экран приветствия установщика Craft CMS.

Control panel

Alt: Скриншот панели управления Craft CMS после успешной установки.

Если появляется “503 Service Unavailable”:

  • Проверьте права на каталоги и файлы. Файлы не должны быть записываемы публично, но каталоги, где Craft пишет, должны быть доступны веб-процессу.
  • Убедитесь, что PHP-FPM работает и socket указан верно в конфигурации Nginx.
  • Посмотрите логи Nginx и PHP-FPM: /var/log/nginx/error.log и /var/log/php7.4-fpm.log.

SSL: получение сертификата Let’s Encrypt (рекомендуется)

Для публичного сайта обязательно включите HTTPS. Используйте Certbot для получения и автоматического обновления сертификата:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d craft.example.com

Следуйте подсказкам Certbot. После успешного получения сертификата Certbot обновит конфигурацию Nginx и добавит задачу в cron для автоматического обновления.

Проверка автоматического обновления (симуляция):

sudo certbot renew --dry-run

Больше о правах и безопасности файлов

Рекомендации:

  • Владелец файлов: www-data для рабочего каталога Craft.
  • Каталоги, требующие записи: storage, web/uploads, config только если вы используете динамическое изменение через UI.
  • Запрещайте запись в остальные директории.

Пример рекомендуемых команд:

sudo chown -R www-data:www-data /var/www/html/craft
sudo find /var/www/html/craft -type d -exec chmod 755 {} \;
sudo find /var/www/html/craft -type f -exec chmod 644 {} \;

Дополнительные меры безопасности:

  • Отключите индексирование директорий в Nginx.
  • Ограничьте доступ к файлу .env и конфигам.
  • Регулярно обновляйте PHP, Nginx и Craft.

Резервное копирование и восстановление

Рекомендуемая стратегия бэкапов:

  • Бэкап базы данных: выполняйте дамп регулярно.
mysqldump -u craftuser -p craftdb > /var/backups/craftdb-$(date +%F).sql
  • Бэкап файлов проекта и загруженных медиа (web/uploads): используйте rsync или tar.
sudo tar -czf /var/backups/craft-files-$(date +%F).tar.gz /var/www/html/craft
  • Храните бэкапы вне сервера (S3, удалённый rsync-сервер) и проверяйте процесс восстановления.

Восстановление базы данных:

mysql -u craftuser -p craftdb < /var/backups/craftdb-2021-01-01.sql

Критические рекомендации:

  • Проверяйте бэкапы на предмет целостности (периодически выполняйте восстановление в тестовой среде).
  • Храните минимум 2 поколения бэкапов и ретеншн по времени.

Производительность и кеширование

Советы по ускорению Craft:

  • Включите кеширование страницы и фрагментов в настройках Craft.
  • Используйте OPcache для PHP (обычно устанавливается по умолчанию в PHP 7.4). Проверьте в /etc/php/7.4/fpm/php.ini параметры opcache.
  • Раздавайте статические ресурсы через CDN.
  • Настройте gzip/ Brotli сжатие в Nginx.
  • Минимизируйте изображения и используйте WebP, если это допустимо.

Пример включения gzip в nginx.conf:

http {
  gzip on;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
  gzip_min_length 256;
}

Отладка и диагностика ошибок

Где смотреть логи:

  • Nginx ошибки: /var/log/nginx/error.log
  • Nginx доступ: /var/log/nginx/access.log
  • PHP-FPM: /var/log/php7.4-fpm.log (путь может отличаться)
  • Craft логи: /var/www/html/craft/storage/logs/

Типичные проблемы и решения:

  1. 502 Bad Gateway или 504 Gateway Timeout
  • Проверьте, что php7.4-fpm запущен: sudo systemctl status php7.4-fpm
  • Проверьте совпадение пути сокета fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  1. 503 Service Unavailable
  • Проверьте права на каталоги /var/www/html/craft и подкаталоги.
  • Проверьте, нет ли maintenance-файла в web/.
  1. Ошибки подключения к базе данных
  • Убедитесь, что credentials в config/db.php или .env совпадают с теми, что вы создали.
  • Попробуйте подключиться через mysql клиент с теми же данными.
  1. Проблемы с загрузкой изображений
  • Увеличьте upload_max_filesize и post_max_size в php.ini.
  • Проверьте owner и права папки web/uploads.

Миграция с WordPress или другой CMS

Краткий подход:

  • Экспортируйте контент из старой CMS (XML/CSV/экспорт постов).
  • Спроектируйте структуру полей и секций в Craft, сопоставьте сущности (статьи, страницы, медиа).
  • Напишите набор миграционных скриптов на PHP или используйте ETL-инструменты.
  • Проверьте импорт на тестовой среде, затем выполните в проде.

Когда это не подходит

  • Если у вас очень сложная структура данных с множеством плагинов WordPress, полная автоматическая миграция может быть невозможна — потребуется ручная корректировка.

Роли и контрольные списки

Ниже приведены краткие чеклисты для разных ролей в проекте.

Системный администратор

  • Обновил систему и установил необходимые пакеты.
  • Настроил Nginx, PHP-FPM и MariaDB.
  • Настроил автоматическое обновление сертификатов SSL.
  • Создал политiku бэкапов и проверил восстановление.
  • Настроил мониторинг и алерты на доступность сервера.

Разработчик

  • Развернул Craft через Composer.
  • Настроил переменные окружения и config/deploy.
  • Проверил права на папки и корректность обработки файлов.
  • Настроил локальную среду разработки, совместимую с продакшеном.

Контент-менеджер / дизайнер

  • Создал секции, поля и шаблоны в панели Craft.
  • Проверил загрузку и обработку изображений.
  • Проверил шаблоны на кроссбраузерность и адаптивность.

Критерии приёмки

Минимальные условия успешной установки:

  • Сайт доступен по HTTP/HTTPS и показывает установочный/административный интерфейс Craft.
  • Установщик успешно подключился к базе данных и создал таблицы.
  • PHP-FPM работает и обрабатывает PHP-запросы (нет 502/504 ошибок).
  • Права файлов установлены корректно, загрузка медиа работает.
  • SSL-сертификат обновляется автоматически (при наличии домена).

Decision flowchart для выбора схемы установки

flowchart TD
  A[Нужен публичный сайт?] -->|Да| B[Имеется домен и DNS?]
  A -->|Нет| C[Использовать IP или внутренную сеть]
  B -->|Да| D[Настроить Nginx и получить SSL]
  B -->|Нет| E[Настроить DNS перед SSL]
  D --> F[Установка Craft через Composer]
  E --> F
  C --> F
  F --> G[Проверить права и логи]
  G --> H[Завершено]

Короткие советы по безопасности

  • Используйте сложные пароли и двухфакторную аутентификацию для учётных записей администратора Craft.
  • Обновляйте Craft и плагины по мере выхода обновлений.
  • Применяйте WAF (web application firewall) при высоких рисках атак.
  • Закрывайте административные панели по IP или через VPN, если это возможно.

Тесты и приёмка

Примерные тесты, которые стоит выполнить перед передачей проекта в эксплуатацию:

  • Функциональность CMS: создание, редактирование и удаление записи.
  • Загрузка изображений разного формата и размера.
  • Вход/выход администратора и ролей.
  • Проверка работы кэша и очистки кеша.
  • Тест восстановления из бэкапа (полный цикл).

Частые вопросы

Q: Можно ли ставить Craft на Ubuntu 22.04?

A: Да. Отличия обычно в версиях PHP и путях до сокета php-fpm. Подберите соответствующие пакеты (php8.1/php8.2) и адаптируйте конфигурации.

Q: Нужен ли Composer на продакшене?

A: Composer нужен для установки зависимостей. На продакшене обычно устанавливают зависимости и деплоят уже готовый артефакт, либо запускают composer install во время деплоя. Рекомендуется избегать выполнения composer create-project непосредственно на продакшен-сервере в автоматическом режиме без контроля версий.

Q: Что делать при ошибках прав доступа к файлам?

A: Проверьте владельца (www-data) и права (директории 755, файлы 644), разрешите запись только в требуемые каталоги (storage, web/uploads).

Q: Как восстановить сайт из бэкапа базы и файлов?

A: Восстановите архив файлов в рабочую директорию и импортируйте SQL дамп в новую или существующую базу данных. Проверьте совпадение конфигурации (db credentials) и права доступа.


Итог

Вы развернули Craft CMS на Ubuntu 20.04: подготовили сервер, установили LEMP, создали базу, установили Composer и Craft, настроили Nginx и права, получили SSL и описали сценарии бэкапа и отладки. Это базовая, но практичная конфигурация — дальше вы можете адаптировать её под нагрузку и требования проекта.

Важно: регулярно проверяйте обновления и сохраняйте бэкапы. Удачи в создании сайтов на Craft!

Ресурсы и полезные ссылки


FAQ (для быстрого копирования ответов)

  • Как сменить версию PHP? Установите нужный пакет (php8.1-fpm), обновите fastcgi_pass в конфигурации Nginx и перезапустите службы.
  • Как проверить работу OPcache? Используйте phpinfo() или специальный status-скрипт.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро