Когда WordPress работает в окружении, которое вы контролируете, сайт становится быстрее и предсказуемее. VDS даёт свободу: можно ставить свои модули PHP, менять параметры MySQL, настраивать кэширование и повышать безопасность. Всё это помогает вам заранее избежать болей, которые часто встречаются на shared-хостингах.
NOTE:
Если вы только купили сервер:
Подключитесь к серверу
Выполните подготовку сервера к работе
Это уменьшает вероятность конфликтов
NOTE:
Если вы работаете от пользователя root, то в командах не нужно использовать sudo
sudo apt update && sudo apt upgrade -y
После обновления система получает свежие версии библиотек
WordPress работает на связке из веб-сервера, базы данных и PHP. Поэтому ставим всё сразу.
Про Apache есть отдельная статья: Настройка Apache на VDS с убунту, можно ознакомиться с настройками отдельно от установки wordpress.
sudo apt install apache2 -y
Подробнее про apt: Как установить и удалить программу в Linux через терминал
Apache выбирают за простоту и гибкость. Он хорошо дружит с WordPress, а его конфиги легко расширять.
После установки проверьте:
systemctl status apache2
Если статус active (running), то все установлено верно.
Подробнее о systemctl можно узнать из статьи: Как перезапустить сервис в Linux
Про MySQL уже писали в статье Установка MySQL на сервер Linux, в ней более подробно разобрана работа с БД, но тут сделаем только самое необходимое:
sudo apt install mysql-server -y
MySQL нужен WordPress для хранения контента и настроек. После установки рекомендую провести базовую защиту:
sudo mysql_secure_installation
Тут система задаст несколько вопросов. Если что-то не знаете, то выбирайте значения по умолчанию, они безопасны.
WordPress довольно требователен к модулям, поэтому сразу ставим готовый набор:
sudo apt install php php-mysql php-xml php-gd php-curl php-mbstring php-zip php-intl -y
NOTE:
Команда может выполняться достаточно долго ☕️
После установки перезапускаем Apache:
sudo systemctl restart apache2
Подключаемся к MySQL:
sudo mysql
Создаём базу и пользователя:
passwird123!!! - замените на свой пароль
CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'Passwird123!!!'; GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Почему utf8mb4? Он поддерживает все символы, включая смайлики. WordPress это любит.
Если вы получаете ошибку Your password does not satisfy the current policy requirements, то усложните пароль, добавив буквы разного регистра, цифры, спец. знаки
Переходим в корень сайта:
cd /var/www/html
sudo rm index.html
rm - удаление файлов
Скачиваем WordPress:
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xvf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
mv - перемещение файлов
Настраиваем права, чтобы WordPress мог обновлять плагины и темы:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
Подробнее о правах в linux: Мини-гайд по правам доступа в Linux
Создаём конфиг:
sudo nano /etc/apache2/sites-available/wordpress.conf
Вставляем:
ваш-домен.ru - замените на ваш домен или ip-адрес
<VirtualHost *:80>
ServerName ваш-домен.ru
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/wp_error.log
CustomLog ${APACHE_LOG_DIR}/wp_access.log combined
</VirtualHost>
Почему AllowOverride All?
Потому что WordPress использует .htaccess для ЧПУ и ряда важных функций.
Активируем сайт:
sudo a2ensite wordpress
sudo a2enmod rewrite
sudo systemctl reload apache2
Открываем:
http://ваш-домен.ru
Заполняем название сайта, логин и пароль администратора. Если что-то не загрузилось - проверьте права на папку или включён ли rewrite.
Без HTTPS сайт будет выдавать предупреждения. Поэтому ставим сертификат Let's Encrypt:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache
sudo apt install unattended-upgrades
Этот интерфейс часто используют боты.
В .htaccess:
<Files xmlrpc.php> Order allow,deny Deny from all </Files>
<Files xmlrpc.php>
Order allow,deny Deny from all
</Files>
Хоть базовое, но оно ускоряет работу.
Плагин WP Super Cache подойдет
Сделайте это один раз - и потом не будете бояться экспериментов.
Плагин: UpdraftPlus