Власний VPS дає повний контроль над WordPress: вибір версії PHP, Redis-кеш, HTTP/2, без обмежень на плагіни та ресурси.
Крок 1: LEMP-стек (Nginx + MySQL + PHP)
sudo apt update
sudo apt install -y nginx mysql-server php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-gd php8.2-zip php8.2-imagick php8.2-redis
Крок 2: База даних
sudo mysql -u root -p
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'СкладнийПароль';
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
Крок 3: Завантажити WordPress
cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo mv wordpress yourdomain.com
sudo chown -R www-data:www-data yourdomain.com
Крок 4: Конфіг Nginx
sudo nano /etc/nginx/sites-available/yourdomain.com
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
index index.php;
location / { try_files $uri $uri/ /index.php?$args; }
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Крок 5: SSL Let's Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Часті помилки під час встановлення WordPress на VPS
Error establishing a database connection
502 Bad Gateway
connect() to unix:/run/php/php8.2-fpm.sock failed (13: Permission denied)
The uploaded file exceeds the upload_max_filesize directive
| Повідомлення | Причина | Рішення |
|---|---|---|
| Error establishing a database connection | Невірні дані у wp-config.php або MySQL не запущено | Перевірити systemctl status mysql і звірити DB_USER/DB_PASSWORD із тим, що створювали у кроці 2 |
| 502 Bad Gateway | Nginx не може достукатися до PHP-FPM — сокет не збігається або демон не запущений | Перевірити systemctl status php8.2-fpm і шлях до сокета у fastcgi_pass |
| connect() to unix:/run/php/php8.2-fpm.sock failed (13: Permission denied) | Nginx працює від користувача www-data, а сокет PHP-FPM створений з іншими правами | У пулі PHP-FPM виставити listen.owner = www-data і listen.group = www-data |
| The uploaded file exceeds the upload_max_filesize directive | Ліміт завантаження в php.ini менший за розмір файлу теми, плагіна чи медіа | Підняти upload_max_filesize і post_max_size у конфігу PHP-FPM, перезапустити сервіс |
Готовий хостинг проти власного VPS
| Параметр | VPS з ручним встановленням | Готовий хостинг WordPress |
|---|---|---|
| Вибір версії PHP | Будь-яка, встановлюється вручну | Обмежений тим, що доступно на тарифі |
| Налаштування Redis і кешу | Повний контроль, власні параметри | Часто вже вбудовано, але без тонкого налаштування |
| Час до першого запуску сайту | 30–60 хвилин за цією інструкцією | 5–10 хвилин через автовстановлювач |
| Відповідальність за оновлення ОС і PHP | Повністю на адміністраторі | Бере на себе хостинг-провайдер |
Якщо ручне налаштування надмірне для задачі, встановлення через панель хостингу описано у статті WordPress у cPanel.
Коли ставити WordPress на голий VPS не варто
- Немає досвіду адміністрування Linux і немає часу його отримати — при поломці php-fpm або Nginx сайт впаде повністю, і відновити його без панелі складніше
- Сайт простий (візитка, блог) без навантаження — переплата за адміністрування VPS не окупиться, звичайний shared-хостинг впорається не гірше
- Потрібні автоматичні оновлення системи безпеки без ручного втручання — на VPS оновлення PHP і ядра потрібно відстежувати самостійно
- Команда звикла до інтерфейсу cPanel чи ISPmanager для щоденних задач (пошта, бекапи, домени) — на голому VPS усе це доведеться робити через консоль
Перевірка результату встановлення
# Nginx і PHP-FPM підняті та активні
systemctl is-active nginx php8.2-fpm mysql
# Конфігурація Nginx синтаксично вірна
sudo nginx -t
# Сайт відповідає кодом 200, а не 502/500
curl -o /dev/null -s -w '%{http_code}\n' http://yourdomain.com/
- Відкрийте
http://yourdomain.com— має з'явитися майстер встановлення WordPress на п'ять кроків, а не помилка PHP - Пройдіть майстер, вкажіть назву сайту та дані адміністратора, потім увійдіть у
/wp-admin/ - Перевірте, що SSL справді працює:
curl -I https://yourdomain.com/має повернути 200, а не помилку сертифіката - Переконайтеся, що фонові завдання WordPress (wp-cron) виконуються — опублікуйте відкладений допис і перевірте, що він вийшов вчасно
Після встановлення налаштуйте регулярні бекапи — вони не створюються автоматично на голому VPS на відміну від хостинг-панелей, див. статтю бекап WordPress. Захист від брутфорсу та базові правила безпеки розглядає матеріал безпека WordPress.
Часті питання
Чи варто переносити вже наявний сайт WordPress на VPS тим самим способом, що описаний у статті?
Інструкція описує встановлення з нуля, а перенесення готового сайту — окреме завдання: потрібно скопіювати файли теми, плагінів і медіа, вивантажити та імпортувати базу даних, а потім оновити адресу сайту в налаштуваннях. Підготовлений тут LEMP-стек і сертифікат стануть основою, але саму процедуру перенесення контенту стаття не розглядає, для неї потрібні додаткові кроки.
Чи запустяться Nginx, MySQL та PHP-FPM автоматично після перезавантаження сервера?
Пакетні менеджери зазвичай увімкнули автозапуск цих служб ще під час встановлення, тому після перезавантаження сайт здебільшого продовжує працювати без ручних дій адміністратора. Після першого перезавантаження варто один раз перевірити статус кожної служби і за потреби окремо увімкнути автозапуск — інакше після збою живлення сайт залишиться недоступним до втручання людини.
Чи варто одразу змінювати дані адміністратора, задані в майстрі встановлення WordPress?
Так, логін і пароль адміністратора краще одразу задати надійними і несхожими на стандартні на зразок admin, оскільки саме сторінка входу в панель найчастіше стає ціллю автоматичного підбору паролів ботами. Додатково варто обмежити доступ до сторінки входу і підключити захист від перебору, а не чекати на першу підозрілу активність у журналах сервера.
Як додати на той самий VPS другий сайт — чи потрібен окремий користувач MySQL і власна конфігурація Nginx?
Так, для кожного нового сайту варто створити окрему базу даних і окремого користувача MySQL із правами лише на неї, а також власний серверний блок конфігурації Nginx зі своїми шляхами і сертифікатом. Один і той самий PHP-FPM можна залишити спільним пулом для легких сайтів або розділити на окремі пули, якщо сайти помітно різняться навантаженням на процесор.