Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 132

Ставим WordPress на свой VPS: PHP, база и финальная сборка

  • 3 минуты на чтение

Часть 8 из 12 · Серия «Свой сервер с нуля»

Прошлым вечером мы собрали фундамент: nginx отдаёт файлы, домен указывает на сервер, в адресной строке висит замочек HTTPS. Для статической страницы этого хватает с головой. Но вы наверняка хотели не просто страницу, а сайт, который можно наполнять и редактировать из браузера, не трогая сервер каждый раз. Блог, портфолио, контентный проект. Это и есть WordPress — самая популярная в мире система управления сайтом.

Сегодня — финальная сборка. Мы добавим на готовый фундамент три недостающих детали и соединим их между собой. Честно предупрежу сразу: здесь чуть больше движущихся частей, чем в прошлый раз. Три компонента должны договориться друг с другом, и если один настроен криво, сайт молчит. Но каждый шаг конкретен, а в местах, где обычно спотыкаются, я отдельно поставлю флажок.

Сначала — как это устроено в голове. В прошлый раз nginx просто отдавал готовые HTML-файлы, как официант приносит блюдо с витрины. WordPress работает иначе: это программа на языке PHP, которая собирает каждую страницу на лету и берёт содержимое из базы данных. Значит, серверу нужно дать две вещи, которых у него пока нет: обработчик PHP, чтобы запускать код WordPress, и базу данных, чтобы хранить ваши записи. А потом — связать всё это вместе.

Что уже есть и что добавляем

Есть: VPS, nginx, домен, направленный на сервер, и HTTPS — всё с прошлого вечера. Добавляем сегодня: PHP-FPM (движок, который выполняет код), MariaDB (базу данных), сам WordPress и настройку nginx, которая их соединит.

Шаг 1. Ставим PHP

Важный момент, который мы предсказали ещё в статье про холивар Nginx и Apache. Apache умеет выполнять PHP сам, встроенно. Nginx — нет, ему нужен отдельный обработчик, PHP-FPM. Ставим его вместе с расширениями, которые WordPress любит и без которых начинает ворчать:

sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
Перенос бесплатно
Хостинг стал тесным — переезжайте на свой VPS
Бесплатно поможем перенести проект без простоя и потери данных. Больше ресурсов, полный root-доступ и никаких тесных рамок.
Переехать на Siteko

Эти расширения отвечают за работу с базой, картинками, текстом и импортом. Поставить их сразу проще, чем потом догонять по одному, разбираясь, на что жалуется установщик.

Шаг 2. Ставим и настраиваем базу данных

Берём MariaDB — свободный и совместимый родственник MySQL:

sudo apt install mariadb-server
sudo mysql_secure_installation

Вторая команда — короткий мастер первичной защиты: задать пароль администратора базы, убрать тестовые данные и анонимный доступ. Пройдите его, это минута.

Теперь создадим отдельную базу и пользователя для WordPress. Заходим в консоль базы (sudo mysql) и выполняем:

CREATE DATABASE wordpress;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'надёжный_пароль';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Запишите три вещи: имя базы (wordpress), имя пользователя (wp_user) и пароль. WordPress спросит их при установке. И обратите внимание на деталь: пользователь имеет права только на эту одну базу и только с localhost — то есть база не торчит наружу в интернет. Ровно та самая ошибка с открытой наружу БД, которую мы разбирали в статье про грабли новичка, здесь обойдена по умолчанию.

Шаг 3. Скачиваем WordPress

Качаем строго с официального сайта — не с пиратских сборок и «готовых образов» с форумов, потому что именно так в сайт заносят бэкдоры в темах и плагинах:

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
1 месяц бесплатно
Первый сервер? Пусть будет нестрашным
Понятная панель, готовые шаблоны и поддержка, которая объясняет по-человечески. Поднимите проект, даже если SSH видите впервые.
Попробовать бесплатно

Распакованную папку wordpress переносим в корень сайта — туда же, куда в прошлый раз клали index.html, то есть в /var/www/ваш-сайт.

Шаг 4. Права на файлы

WordPress должен уметь писать в собственную папку — загружать картинки, ставить плагины и темы, обновлять себя. Веб-сервер работает от имени пользователя www-data, поэтому отдаём папку ему:

sudo chown -R www-data:www-data /var/www/ваш-сайт

Здесь важен баланс, и это вопрос честности. Прав должно хватать для работы, но не больше. Соблазн поставить «777 на всё» (полный доступ кому угодно) решает проблему на минуту и открывает дыру навсегда. Правильный путь — именно владение со стороны www-data, а не раздача прав всем подряд.

Шаг 5. Учим nginx работать с PHP

Это тот самый клей, что соединит детали. В конфиг сайта (из прошлой статьи) добавляем три вещи: index.php в список стартовых файлов, передачу PHP-запросов в PHP-FPM и правило для красивых ссылок WordPress. Серверный блок станет примерно таким:

index index.php index.html;

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

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

Один флажок здесь обязателен. Путь к сокету в последней строке зависит от версии PHP — у вас может быть не php8.3, а другая. Посмотреть точное имя можно командой ls /run/php/, и подставить своё. Если перепутать версию, PHP просто не будет отвечать.

Дальше — привычный ритуал: проверяем конфиг и перезагружаем. И снова именно nginx -t поймает опечатку, если она закралась:

sudo nginx -t
sudo systemctl reload nginx
1 месяц бесплатно
Первый сервер? Пусть будет нестрашным
Понятная панель, готовые шаблоны и поддержка, которая объясняет по-человечески. Поднимите проект, даже если SSH видите впервые.
Попробовать бесплатно

Шаг 6. Финальная сборка через браузер

Самая приятная часть. Открываете https://ваш-домен.ru — и вас встречает установщик WordPress. Выбираете язык, вводите три записанных значения (имя базы, пользователя и пароль), затем придумываете название сайта, логин и пароль администратора и почту.

Один совет, который убережёт от половины проблем: не делайте логин admin и не ставьте простой пароль. По адресу входа /wp-admin боты круглосуточно перебирают пары «admin плюс что-нибудь» — это первое, что они пробуют. Помните мысль из статьи про ошибки: ваш сайт под прицелом с первой минуты.

Нажимаете «Установить» — и всё. У вас работающий WordPress. Заходите в админку по адресу /wp-admin, и дальше сайтом можно управлять прямо из браузера: писать статьи, менять оформление, ставить плагины. SSH для повседневной работы больше не нужен.

Честно про то, что сделать сразу после

WordPress удобен, но за популярность приходится платить вниманием. Это самая распространённая CMS в мире, а значит и самая атакуемая, и почти все взломы идут через одно — устаревшие плагины и темы. Поэтому сразу после установки стоит сделать несколько вещей: поставить плагин безопасности и ограничить число попыток входа в админку, настроить бэкапы (снапшот сервера плюс резервная копия базы), и взять за правило обновлять и сам WordPress, и плагины, как только выходят обновления. Это не паранойя, а гигиена — как мыть руки.

Если что-то пошло не так

Сообщение «Error establishing a database connection» — почти всегда неверные данные базы в установщике или незапущенная MariaDB. Браузер предлагает скачать index.php вместо того, чтобы показать страницу — значит, nginx не передаёт PHP в FPM: проверьте блок location ~ \.php$ и путь к сокету (та самая версия PHP). Белый пустой экран — часто не хватает какого-то PHP-расширения, подсказку ищите в логах. Ссылки на записи отдают ошибку 404 — не сработало правило try_files для красивых ссылок.

Компонент Команда или действие
PHP sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
База sudo apt install mariadb-server, создать базу и пользователя
WordPress скачать с wordpress.org в /var/www/ваш-сайт
Права sudo chown -R www-data:www-data /var/www/ваш-сайт
nginx + PHP добавить location ~ \.php$ и try_files, затем nginx -t и reload
Сборка открыть домен в браузере и пройти установщик

Вот и финальная сборка. Фундамент с прошлого вечера — nginx, домен, HTTPS — никуда не делся; мы просто поставили на него движок. Теперь сайтом можно управлять из браузера, как в любом конструкторе, но крутится он на вашем сервере и по вашим правилам, без чужих лимитов и абонентской платы за каждую мелочь. Ровно к этому вся серия и вела: не арендовать комнату в коммуналке, а понимать и держать в руках весь стек — от чёрного экрана до готового блога.

Перенос бесплатно
Хостинг стал тесным — переезжайте на свой VPS
Бесплатно поможем перенести проект без простоя и потери данных. Больше ресурсов, полный root-доступ и никаких тесных рамок.
Переехать на Siteko

Серия «Свой сервер с нуля»

Полный цикл — от выбора хостинга до рабочего сайта с почтой, Docker и бэкапами. Вы читаете часть 8 из 12.

  1. VDS, VPS, хостинг, облако — что это
  2. Nginx vs Apache: холивар, который пора закрыть
  3. Зачем арендовать сервер, если есть хостинг за 100 ₽
  4. SSH для тех, кто боится чёрного экрана
  5. Как не запороть сервер в первый день: топ ошибок
  6. SSH-ключи за 10 минут: вход без пароля
  7. Поднимаем свой сайт на VPS за вечер
  8. Ставим WordPress на свой VPS — вы здесь
  9. Свой почтовый сервер — героизм или мазохизм?
  10. Docker на VPS: спасение или пушка по воробьям
  11. Настраиваем домен и SSL, чтобы браузер не ругался
  12. Бэкапы, которые реально спасут

← Предыдущая: Поднимаем свой сайт на VPS за вечер · Следующая: Свой почтовый сервер — героизм или мазохизм? →

Хостинг Siteko

VDS с первого дня

Свой сервер Siteko под полным контролем

NVMe-диски, root-доступ и честные ресурсы без «соседей». Поднимите VPN, бота или прод-проект и масштабируйтесь без тесных рамок.

  • Root-доступ полная свобода настройки под ваш стек.
  • NVMe и свежее железо скорость заметна с первого запроса.
  • Перенос бесплатно поможем переехать без простоя.
Выбрать VDS