Установка Drupal 8 на Ubuntu с Nginx, MariaDB и SSL
Введение
Drupal — известная свободная система управления содержимым (CMS) на PHP. Доступна бесплатно под лицензией GNU GPL. Drupal подходит для сайтов любого размера: от личных блогов до корпоративных и государственных порталов. Основной компонент называется Drupal Core — он обеспечивает управление контентом, пользователей, меню, оформление и администрирование. Сообщество предлагает множество модулей — в исходном материале упоминается более 31 000 модулей. Текущая версия, использованная в этом руководстве, — 8.0.
В этом руководстве показано, как установить Drupal 8 на Ubuntu с Nginx, MariaDB и PHP-FPM, а также как подключить SSL (самоподписанный сертификат). Приведённые команды выполняются из-под root или с sudo.
Основные этапы (коротко)
- Обновление системы.
- Установка Nginx и PHP-FPM.
- Настройка Nginx для работы с PHP-FPM.
- Установка и настройка MariaDB.
- Генерация самоподписанного SSL.
- Конфигурация виртуального хоста для Drupal.
- Установка Drupal (git/drush) и финальные настройки.
Важное примечание
Ubuntu 15.10 указана в исходных требованиях. Это устаревшая версия Ubuntu; для боевой эксплуатации рекомендуется использовать текущую LTS-версию Ubuntu и соответствующую версию PHP (например, PHP 7.x или выше). В примерах ниже сохранены команды и файлы, как в оригинальном материале, но при переносе на современные системы замените пакеты php5 на пакеты php7.х и проверьте совместимость модулей.
Требования
- Ubuntu 15.10 — 64‑бит.
- root-права или доступ через sudo.
Шаг 1 — Обновление системы
Войдите на сервер по SSH, переключитесь на root и обновите репозитории:
sudo su
sudo apt-get updateШаг 2 — Установка Nginx и PHP-FPM
Nginx (engine-x) — быстрый HTTP-сервер с небольшим потреблением памяти. Его можно использовать как прокси для HTTP/HTTPS, а также для POP3/IMAP. В этом руководстве Nginx будет выполнять роль SSL‑включённого HTTP‑сервера.
Установите Nginx:
sudo apt-get install nginx -yУстановите php-fpm и расширение GD, которое требуется Drupal:
apt-get install php5-fpm php5-cli php5-gd php5-mysql -yНа современных системах замените пакеты php5- на php7.х-.
Шаг 3 — Настройка Nginx и PHP-FPM
Настроим PHP-FPM и Nginx, чтобы Nginx отправлял PHP-запросы PHP-FPM.
Перейдите в директорию конфигурации PHP-FPM и отредактируйте php.ini:
cd /etc/php/fpm/
vim php.iniНайдите строку, отвечающую за cgi.fix_pathinfo, и установите её в 0 (пример в исходном материале указывал строку 773):
cgi.fix_pathinfo=0Сохраните и выйдите из редактора.
Отредактируйте виртуальный хост Nginx по умолчанию:
cd /etc/nginx/sites-available/
vim defaultВключите директивы работы с php-fpm — в исходнике предложено раскомментировать секцию примерно с 45 по 52 строку:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}Проверьте конфигурацию nginx и перезапустите службы:
nginx -t
systemctl restart nginx
systemctl restart php5-fpmПроверьте работу PHP-FPM, создав phpinfo в корневой веб директории:
cd /var/www/html/
echo "" > info.phpОткройте в браузере http://

Шаг 4 — Установка и настройка MariaDB
MariaDB — форк MySQL и функционально является заменой MySQL.
Установите MariaDB:
sudo apt-get install mariadb-client mariadb-server -yЗапустите сервис MariaDB:
systemctl start mysqlОбратите внимание: имя службы обычно mysql, поэтому используется systemctl start mysql.
Запустите безопасную начальную настройку MariaDB:
mysql_secure_installationСоздайте базу данных и пользователя для Drupal. В примере используется база drupaldb и пользователь drupaluser с паролем drupaluser@ — замените пароль на надёжный при установке.
mysql -u root -p
create database drupaldb;
create user drupaluser@localhost identified by 'drupaluser@';
grant all privileges on drupaldb.* to drupaluser@localhost identified by 'drupaluser@';
flush privileges;
\q
База данных drupaldb и пользователь drupaluser созданы.
Шаг 5 — Генерация самоподписанного SSL-сертификата
Перейдите в директорию /etc/nginx и создайте папку ssl:
mkdir -p /etc/nginx/ssl
cd /etc/nginx/sslСоздайте самоподписанный сертификат с помощью openssl:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crtЗаполните запрошенные поля. Ограничьте права доступа к приватному ключу:
chmod 600 drupal.keyПримечание: самоподписанный сертификат подходит для тестовых сред. Для публичного сайта используйте сертификаты от доверенных центров (например, Let’s Encrypt).
Шаг 6 — Конфигурация виртуального хоста для Drupal
Мы будем устанавливать Drupal в /var/www/drupal8 с доменом drupal8.me — замените домен на ваш.
mkdir -p /var/www/drupal8Создайте файл виртуального хоста:
cd /etc/nginx/sites-available/
vim drupal8Вставьте конфигурацию Nginx для Drupal (оставлена исходная конфигурация):
server {
server_name drupal8.me;
root /var/www/drupal8; ## <-- Your only path reference.
listen 80;
listen [::]:80;
listen 443 default ssl;
ssl_certificate /etc/nginx/ssl/drupal.crt;
ssl_certificate_key /etc/nginx/ssl/drupal.key;
# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Very rarely should these ever be accessed outside of your lan
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}
location ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
# Block access to "hidden" files and directories whose names begin with a
# period. This includes directories used by version control systems such
# as Subversion or Git to store control files.
location ~ (^|/)\. {
return 403;
}
location / {
# try_files $uri @rewrite; # For Drupal <= 6
try_files $uri /index.php?$query_string; # For Drupal >= 7
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
# In Drupal 8, we must also match new paths where the '.php' appears in the middle,
# such as update.php/selection. The rule we use is strict, and only allows this pattern
# with the update.php front controller. This allows legacy path aliases in the form of
# blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
# any paths like that, then you might prefer to use a laxer rule, such as:
# location ~ \.php(/|$) {
# The laxer rule will continue to work if Drupal uses this new URL pattern with front
# controllers other than update.php in a future release.
location ~ '\.php$|^/update.php' {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# Fighting with Styles? This little gem is amazing.
# location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
try_files $uri @rewrite;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}Сохраните файл, создайте символическую ссылку в sites-enabled и перезапустите Nginx:
ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxШаг 7 — Установка и настройка Drupal
Установите git и drush. Drush — командная оболочка для управления Drupal:
sudo apt-get install git drush -yСкачайте Drupal в каталог установки:
cd /var/www/drupal8
git clone --branch 8.0.x http://git.drupal.org/project/drupal.gitИли через drush:
drush dl drupal-8Переместите файлы в корень сайта:
mv drupal/* /var/www/drupal8/Настройте файлы конфигурации сайта. Перейдите в sites/default и скопируйте шаблонные файлы:
cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.ymlСоздайте директорию files и назначьте права на запись для установки:
mkdir files/
chmod a+w *Откройте в браузере https://drupal8.me (или https://ваш_домен). Установщик Drupal предложит выбрать язык и профиль установки. В исходном примере была выбрана “English” и профиль “Standard”. На этом шаге укажите параметры подключения к базе данных (drupaldb, drupaluser и пароль), которые вы создали ранее.



Дождитесь завершения установки.

Задайте параметры сайта: имя сайта, учётную запись администратора, email.

После установки вы попадёте на стартовую страницу сайта.

Если появится сообщение о правах доступа к файлам settings.php и services.yml, верните им более строгие права:
cd sites/default/
chmod 644 settings.php services.ymlПоздравляем — Drupal 8 установлен с Nginx и SSL на Ubuntu 15.10.
Проверка работоспособности и критерии приёмки
- Сайт доступен по HTTPS и перенаправляет HTTP → HTTPS.
- На главной странице отображается установленная тема Drupal.
- Подключение к базе данных успешно (нет ошибок при установке и в журнале).
- PHP-info файл удалён или перемещён (info.php не должен быть доступен в проде).
- Права на settings.php и services.yml установлены как 644, директория sites/default/files доступна для записи сервером веб-приложений.
Быстрая проверка и отладка
- Проверка конфигурации Nginx:
nginx -t- Журналы Nginx (ошибки и доступ):
journalctl -u nginx
tail -f /var/log/nginx/error.log- Проверка статуса php-fpm:
systemctl status php5-fpm- Проверка подключения к MariaDB:
mysql -u drupaluser -p -D drupaldbБезопасность и рекомендации для продакшна
Important: для публичного сайта не используйте самоподписанные сертификаты. Используйте Let’s Encrypt или другой сертификационный центр.
Рекомендации:
- Используйте защищённые пароли для учётных записей БД и админа Drupal.
- Переключитесь на поддерживаемую версию Ubuntu LTS и актуальную версию PHP (PHP 7.x и выше) для лучшей производительности и безопасности.
- Отключите доступ к info.php и другим временным файлам.
- Ограничьте права на файлы и директории: settings.php и services.yml — 644, приватные ключи — 600.
- Включите брандмауэр (ufw) и откройте только порты 80 и 443.
- Регулярно обновляйте ядро Drupal и модули.
Альтернативные подходы
- Вместо Nginx можно использовать Apache + PHP-FPM. Apache проще для некоторых конфигураций .htaccess, но Nginx даёт лучшую производительность в статических нагрузках.
- Для управления зависимостями и развертывания на продакшне используйте Composer и инструментальную цепочку CI/CD.
- Для SSL в автоматическом режиме применяйте Certbot от Let’s Encrypt.
Когда этот подход не подходит
- Если вы разрабатываете проект на современных релизах PHP и Ubuntu, используйте пакеты для PHP 7.x и соответствующие настройки php-fpm (сокет и путь могут отличаться).
- Для крупных корпоративных развёртываний рекомендуется кластеризация базы данных, балансировка нагрузки и отдельный сервер файлов (CDN) для медиа.
Чек-листы по ролям
Администратор сервера:
- Обновить систему и пакеты.
- Установить Nginx и PHP-FPM.
- Настроить SSL (рекомендованно — Let’s Encrypt).
- Настроить брандмауэр и SELinux/AppArmor при необходимости.
Разработчик:
- Установить Drush и Composer.
- Настроить окружение разработки (Xdebug, IDE).
- Проверить совместимость модулей и тем.
Системный интегратор / DevOps:
- Настроить автоматические бэкапы БД и файлов.
- Настроить мониторинг (uptime, метрики PHP‑FPM).
- Настроить деплоймент (CI/CD), миграции конфигурации Drupal.
Быстрый чек‑лист команд (шпаргалка)
- Проверка nginx: nginx -t
- Перезапуск nginx: systemctl restart nginx
- Проверка php-fpm: systemctl status php5-fpm
- Запуск MariaDB: systemctl start mysql
- Создание SSL: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt
Мини‑методология развертывания (6 шагов)
- Подготовить ОС и обновить пакеты.
- Установить веб‑сервер и интерпретатор PHP.
- Настроить виртуальный хост и PHP-FPM.
- Установить СУБД и создать базу/пользователя.
- Развернуть Drupal и выполнить установщик.
- Проверить доступность, настроить безопасность и мониторинг.
Критерии приёмки
- Главная страница сайта открывается по HTTPS без ошибок.
- Страница авторизации Drupal доступна и функционирует.
- Права на файлы корректны, и нет предупреждений в админке о записи файлов.
- Резервное копирование БД и файлов настроено и протестировано.
Заключение
Drupal — гибкая и расширяемая CMS с богатой экосистемой модулей. Это руководство показывает базовую установку Drupal 8 с Nginx, PHP-FPM и MariaDB, а также настройку самоподписанного SSL для тестовых окружений. Для боевой эксплуатации адаптируйте версии PHP/OS к современным LTS‑релизам, используйте валидные SSL‑сертификаты и настройте регулярные обновления и бэкапы.
Дополнительные ресурсы и примечания
Notes:
- Всегда заменяйте примерные пароли и домены на реальные значения для вашей инфраструктуры.
- На современных дистрибутивах пути сокетов PHP‑FPM могут отличаться (/var/run/php/php7.х-fpm.sock). Проверьте конфигурацию php-fpm и fastcgi_pass.
- Если вы планируете масштабировать сайт, рассмотрите использование CDN для статических файлов и кластеризации базы данных.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента