Установка Craft CMS на Ubuntu 18.04 с Nginx и сертификатом Let's Encrypt
Важно: перед началом убедитесь, что у вас есть непривилегированный пользователь с 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 = 256MPHP-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://
Если все шаги выполнены верно, появится мастер установки Craft.
Шаг 7 — Завершение установки через веб-интерфейс
После перехода на URL установки вы увидите страницу установки. Нажмите кнопку «Install Craft».

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

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

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

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

После успешной установки вы попадёте в панель администратора 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-разработчика.
Таблица совместимости (основные версии)
| Компонент | Поддерживаемые версии |
|---|---|
| PHP | 7.0 и выше (в примере 7.2) |
| MySQL/MariaDB | MySQL 5.5+, MariaDB 5.5+ |
| PostgreSQL | 9.5+ |
| Ubuntu | 18.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. Затем завершите установку через веб-мастер. Обязательно примените базовые меры безопасности и настройте автоматическое продление сертификатов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента