Перейти к содержимому

WordPress на облачном сервере: nginx, PHP и MariaDB

Облачные серверы4 мин чтения

Как установить WordPress на облачный сервер VDS/VPS с Ubuntu 26.04: nginx, PHP 8.5 и MariaDB, база данных, настройки веб-сервера, бесплатный сертификат HTTPS, обновления и резервные копии.

Содержание

Для сайта на WordPress, которому не нужны собственные настройки сервера, обычно достаточно виртуального хостинга: там веб-сервер, PHP и базы данных уже настроены, а следить за обновлениями системы не требуется. Чем хостинг отличается от облачного сервера и когда стоит выбрать сервер, рассказано в статье Хостинг или облачный сервер.

Ниже описана установка на Ubuntu 26.04. В Ubuntu 24.04 команды те же, но устанавливается PHP 8.3, поэтому в путях к файлам PHP и в имени его службы вместо 8.5 укажите 8.3. Вход на наши серверы выполняется под учётной записью root (подробнее — в статье Как подключиться к серверу по SSH), поэтому sudo в командах не указан.

Вместо example.ru подставьте свой домен. Он должен указывать на IP-адрес сервера (A-запись), иначе на шаге с сертификатом certbot не сможет подтвердить домен.

Установка nginx, PHP и MariaDB

apt update
apt install nginx mariadb-server php-fpm php-mysql php-curl php-xml php-mbstring php-intl php-zip php-imagick

В Ubuntu 26.04 будут установлены PHP 8.5 и MariaDB 11.8. Это соответствует требованиям WordPress (PHP 8.3 или новее, MariaDB 10.11 или новее); PHP 8.5 поддерживается начиная с WordPress 6.9. Перечисленные модули PHP WordPress использует для работы с базой данных, изображениями, архивами и внешними запросами.

База данных и пользователь

Войдите в MariaDB командой mariadb: под root пароль не нужен. Создайте базу и пользователя для сайта, придумав надёжный пароль:

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'надёжный-пароль';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
EXIT;

Имя базы, имя пользователя и пароль понадобятся при установке WordPress. Другие операции с базами описаны в статье о MySQL и MariaDB.

Загрузка WordPress

cd /tmp
curl -O https://ru.wordpress.org/latest-ru_RU.tar.gz
tar -xzf latest-ru_RU.tar.gz
mv wordpress /var/www/example.ru
chown -R www-data:www-data /var/www/example.ru

Архив с сайта ru.wordpress.org содержит русскую версию WordPress. Владельцем файлов назначен пользователь www-data, от имени которого работает PHP. Благодаря этому WordPress сможет сам создать файл настроек wp-config.php при установке, а затем обновляться и устанавливать плагины и темы без доступа по FTP.

Настройка nginx

Создайте файл /etc/nginx/sites-available/example.ru:

server {
    listen 80;
    server_name example.ru www.example.ru;
    root /var/www/example.ru;
    index index.php;

    client_max_body_size 64m;

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

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.5-fpm.sock;
    }

    location ~* \.(css|js|gif|ico|jpeg|jpg|png|svg|webp|woff2)$ {
        expires max;
        log_not_found off;
    }
}
  • try_files: запросы к несуществующим файлам передаются WordPress, благодаря чему работают постоянные ссылки вида /about/.
  • Правило с deny all запрещает выполнять PHP-файлы в папке загрузок. Если злоумышленнику удастся загрузить туда сценарий, запустить его он не сможет.
  • client_max_body_size: наибольший размер запроса, а значит, и загружаемого файла. Такое же ограничение нужно задать в настройках PHP.

Включите сайт и проверьте настройки:

ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Размер загружаемых файлов

По умолчанию PHP принимает файлы размером не более 2 МБ, поэтому крупные изображения и архивы в раздел «Медиафайлы» не загрузятся. Измените в файле /etc/php/8.5/fpm/php.ini две строки:

upload_max_filesize = 64M
post_max_size = 64M

и перезапустите PHP командой systemctl restart php8.5-fpm.

Сертификат HTTPS

Выпустите сертификат Let's Encrypt до установки WordPress: тогда сайт сразу будет работать по HTTPS, и пароль администратора не будет передаваться в открытом виде.

apt install certbot python3-certbot-nginx
certbot --nginx -d example.ru -d www.example.ru

certbot добавит в настройки nginx раздел для HTTPS и будет продлевать сертификат автоматически; подробнее — в статье о сертификатах certbot. Межсетевой экран ufw в образе Ubuntu выключен. Если вы его включили, до запуска certbot разрешите порты 80 и 443, как описано в статье Как открыть порт на сервере.

Установка WordPress в браузере

Откройте в браузере https://example.ru. Мастер установки попросит данные для подключения к базе: имя базы данных, имя пользователя и пароль, созданные ранее. В поле «Сервер базы данных» оставьте localhost, префикс таблиц можно не менять. Затем укажите название сайта, имя и пароль администратора и адрес электронной почты.

Важно Не откладывайте установку после настройки nginx. Пока она не завершена, мастер установки доступен любому, кто откроет сайт, и посторонний может выполнить установку вместо вас.

После установки закройте файл настроек от других пользователей сервера:

chmod 640 /var/www/example.ru/wp-config.php

Что делать дальше

  • Обновления WordPress. Новые установки WordPress по умолчанию обновляются автоматически, включая основные выпуски. Плагины и темы обновляйте в разделе «Обновления» консоли WordPress или включите для них автообновление на странице «Плагины».
  • Обновления системы. PHP, nginx и MariaDB обновляются вместе с системой командами apt update и apt upgrade. Перед крупными обновлениями делайте снимок сервера.
  • Защита сервера. Настройте вход по SSH-ключу и защиту от подбора паролей, как описано в статье Как защитить сервер.
  • Память. Если у сервера 1 ГБ памяти, добавьте файл подкачки: он снизит риск аварийного завершения MariaDB и PHP при нехватке памяти.
  • Резервные копии. Снимок хранится 7 дней и удаляется при переустановке системы, поэтому резервную копию он не заменяет. Регулярно сохраняйте базу и файлы сайта и переносите копии за пределы сервера, например на свой компьютер. Копии создают следующие команды:
mariadb-dump wordpress > /root/wordpress.sql
tar -czf /root/wordpress-files.tar.gz -C /var/www example.ru

Не нашли ответ? Напишите в поддержку — подскажем.