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

Установка Craft CMS на Ubuntu 18.04 с Nginx и сертификатом Let's Encrypt

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

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

Что такое Craft CMS в двух строках

Craft — это CMS с открытым исходным кодом, написанная на PHP. Подходит для создания кастомных сайтов с гибкой моделью содержимого и большой экосистемой плагинов.

Основные варианты запроса (SEO intent)

Primary intent: установка Craft CMS Возможные вариации: установка Craft на Ubuntu, настройка Craft с Nginx, Craft с Let’s Encrypt, установка Craft CMS PHP 7.2, настройка Composer для Craft


Требования

Craft требует:

  • PHP 7.0 или новее и расширения: ctype, cURL, GD или ImageMagick, iconv, JSON, mbstring, OpenSSL, PCRE, PDO MySQL или PDO PostgreSQL, PDO, Reflection, SPL, Zip, Intl, DOM.
  • MySQL 5.5+ (InnoDB) или MariaDB 5.5+ либо PostgreSQL 9.5+.
  • Не менее 256 МБ памяти, выделенной PHP.
  • Не менее 200 МБ свободного места на диске.

Факт-бокс — ключевые требования:

  • Минимум PHP: 7.0+
  • Память PHP: ≥256 MB
  • Место на диске: ≥200 MB
  • Поддерживаемые БД: MySQL/MariaDB, PostgreSQL

Подготовка (Prerequisites)

  • Сервер с Ubuntu 18.04 LTS.
  • Непривилегированный пользователь с правами sudo.

Первичные шаги

Проверка версии Ubuntu:

lsb_release -ds  
# Ubuntu 18.04.1 LTS

Настройка часового пояса:

sudo dpkg-reconfigure tzdata

Обновление пакетов:

sudo apt update && sudo apt upgrade -y

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

sudo apt install -y curl wget vim git unzip socat

Шаг 1 — Установка PHP и расширений

Установите PHP и необходимые расширения:

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-curl php7.2-gd php-imagick php7.2-json php7.2-mbstring php7.2-mysql php7.2-pgsql php7.2-zip php7.2-intl php7.2-xml

Проверка версии PHP:

php --version  

# PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )

Измените в конфигурации PHP-FPM минимальный лимит памяти до 256M:

sudo vim /etc/php/7.2/fpm/php.ini

Найдите и установите:

memory_limit = 256M

PHP-FPM по умолчанию запускается и включается в автозагрузку на Ubuntu 18.04, поэтому дополнительный запуск обычно не требуется.

Шаг 2 — Установка MySQL/MariaDB и создание базы данных

Craft поддерживает MySQL/MariaDB и PostgreSQL. В этом руководстве используется MySQL.

Установка MySQL:

sudo apt install -y mysql-server

Проверка версии MySQL:

mysql --version  
# mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper

Запустите скрипт безопасной настройки:

sudo mysql_secure_installation

Ответьте на вопросы по безопасности (рекомендуется отвечать утвердительно для удаления тестовых пользователей/баз и запрета удалённого входа root).

Подключитесь к MySQL как root и создайте базу и пользователя:

sudo mysql -u root -p
# введите пароль

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> exit

Замените dbname, username и password на свои значения.

Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)

HTTPS не обязателен, но настоятельно рекомендуется. В этом руководстве используется acme.sh — простой shell-клиент для получения сертификатов.

Установка acme.sh:

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

Проверка версии:

/etc/letsencrypt/acme.sh --version
# v2.8.0

Получение RSA и ECDSA сертификатов (пример для example.com):

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256

После этого сертификаты будут в:

  • RSA: /etc/letsencrypt/example.com
  • ECDSA: /etc/letsencrypt/example.com_ecc

Важно: при использовании standalone mode acme.sh запускает собственный временный HTTP-сервер. Остановите Nginx на время выдачи сертификата или используйте DNS/HTTP-валидацию, если это необходимо.

Шаг 4 — Установка и настройка Nginx

В этом руководстве используется Nginx. Мы добавим официальный репозиторий mainline и установим модули.

Добавьте ключ репозитория:

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

Добавьте репозиторий (пример):

sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit

Обновите список пакетов и установите Nginx:

sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt

Запустите и включите сервис:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Проверка версии:

sudo nginx -v
# nginx version: nginx/1.15.8

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

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

Вставьте следующий блок конфигурации (пример). Этот блок оставлен почти как в исходнике, он упрощён для компактности:

server {  

  listen 80;  
  listen [::]:80;  
  listen 443 ssl;  
  listen [::]:443 ssl;  
  
  server_name example.com www.example.com;  
  
  root /var/www/craft/web;  
  
  index index.php;  
  
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;  
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;  
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;  
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;  
  
  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.2-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 "";  
  }  
  
}

Примечание: для полноценных production-конфигураций посетите https://github.com/nystudio107/nginx-craft. Здесь показан упрощённый пример.

Установите пользователя в nginx.conf на www-data:

sudo vim /etc/nginx/nginx.conf

Убедитесь, что строка user установлена:

user www-data www-data;

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

sudo nginx -t
sudo systemctl reload nginx.service

Шаг 5 — Установка Composer

Composer — менеджер зависимостей PHP. Установим глобально:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php
php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Проверка версии:

composer --version
# Composer version 1.8.0 2018-12-03 10:31:16

Примечание: команды установки Composer со временем меняются. Если команда не работает, посетите https://getcomposer.org/download/.

Шаг 6 — Установка Craft CMS

Создайте корневую папку для сайта и измените владельца:

sudo mkdir -p /var/www/craft
cd /var/www/craft
sudo chown -R [your_username]:[your_username] /var/www/craft

Создайте проект через Composer:

composer create-project craftcms/craft .

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

sudo chown -R www-data:www-data /var/www/craft

Откройте в браузере:

http:///index.php?p=admin/install

Если все шаги выполнены верно, появится мастер установки Craft.

Шаг 7 — Завершение установки через веб-интерфейс

После перехода на URL установки вы увидите страницу установки. Нажмите кнопку «Install Craft».

Начало установки Craft

Примите лицензию нажатием кнопки «Got it».

Принятие лицензии

Заполните параметры подключения к базе данных и нажмите «Next».

Подключение к базе данных

Создайте аккаунт администратора и нажмите «Next».

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

Заполните информацию о сайте и нажмите «Finish up».

Добавление информации о сайте

После успешной установки вы попадёте в панель администратора Craft CMS.

Панель Craft CMS

Альтернативные подходы и когда их выбирать

  • Docker: используйте контейнеры, если вы хотите воспроизводимую среду и упрощённую доставку (CI/CD). Подходит для командной разработки и изоляции окружения.
  • Apache + mod_php/FPM: если вы уже управляете Apache-инфраструктурой и не готовы переходить на Nginx, Craft совместим и с Apache.
  • Managed hosting: если хотите избежать администрирования сервера, рассмотрите предложенные Craft хостинги или платформы PaaS.

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

  • Если у вас крайне ограниченные ресурсы (например, хостинг без доступа к установке пакетов), лучше выбрать managed-хостинг.
  • Если нужна высокая автоматизация масштабирования и контейнеризация — предпочтительнее Docker/Kubernetes.

Модель принятия решения (эвристика)

  • Требуется полный контроль над сервером → следуйте этому руководству.
  • Нужна быстрая развертка и масштабирование → Docker или PaaS.
  • Минимальный администрируемый хостинг → managed Craft хостинг.

Безопасность и hardening (рекомендации)

  • Отключите SSH-доступ по паролю, используйте ключи.
  • Регулярно обновляйте систему и PHP-расширения.
  • Ограничьте права на файлы: веб-пользователь www-data должен иметь только необходимые права.
  • Настройте автоматическое продление сертификатов (acme.sh поддерживает crontab для продления).
  • Защитите /admin или панель администратора через IP-фильтрацию, двухфакторную аутентификацию (если доступно) и надёжные пароли.
  • Ограничьте доступ к базе данных по IP, если возможно.

Пример команды для автоматического продления acme.sh (добавьте в cron):

/etc/letsencrypt/acme.sh --renew --home /etc/letsencrypt --cron

Чек-листы по ролям

Сисадмин:

  • Убедиться, что сервер обновлён.
  • Установить PHP и расширения.
  • Настроить Nginx и сертификаты.
  • Настроить резервное копирование и мониторинг.

Разработчик:

  • Проверить локальную совместимость PHP/Composer.
  • Тестировать миграции базы и плагины.
  • Настроить CI/CD для деплоя.

Контент-редактор:

  • Получить доступ к админ-панели.
  • Пройти обучение по созданию полей и структур контента.
  • Настроить шаблоны вывода через frontend-разработчика.

Таблица совместимости (основные версии)

КомпонентПоддерживаемые версии
PHP7.0 и выше (в примере 7.2)
MySQL/MariaDBMySQL 5.5+, MariaDB 5.5+
PostgreSQL9.5+
Ubuntu18.04 LTS (руководство ориентировано на неё)

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

  • Сайт доступен по HTTP/HTTPS.
  • Мастер установки Craft успешно завершён.
  • Админ-панель доступна и рабочая.
  • SSL-сертификат установлен и корректно обслуживается (если настроен).
  • Файловые и файлово/пользовательские права соответствуют требованиям безопасности.

Диагностика и распространённые ошибки

  • 502 Bad Gateway → проверьте, запущен ли php7.2-fpm и совпадает ли путь сокета в конфигурации Nginx.
  • Ошибки подключения к БД → проверьте имя хоста, учётные данные и права пользователя в MySQL.
  • Сертификат не выдан → если используется standalone-валидация, убедитесь, что порт 80 свободен или остановите Nginx на время выдачи.

Сопроводительные ссылки


Краткое резюме

Craft CMS легко развернуть на Ubuntu 18.04 с Nginx и SSL. Следуйте шагам: подготовка системы, установка PHP и расширений, настройка БД, получение сертификата (опционально), конфигурация Nginx и установка через Composer. Затем завершите установку через веб-мастер. Обязательно примените базовые меры безопасности и настройте автоматическое продление сертификатов.

Поделиться: 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 быстро