Виртуальный хостинг хорош на старте, но рано или поздно упирается в потолок: сайт тормозит под нагрузкой, нельзя поставить нужное расширение PHP, соседи по серверу съедают ресурсы, а поддержка отвечает «оптимизируйте сайт».
VPS снимает эти ограничения. Разберём переезд так, чтобы посетители не заметили простоя.
Что нужно от сервера
| Посещаемость в сутки | Память | Ядра |
|---|---|---|
| до 1000 | 2 ГБ | 2 |
| 1000–5000 | 4 ГБ | 2 |
| 5000+ или магазин | 8 ГБ | 4 |
WooCommerce требовательнее обычного блога примерно вдвое — закладывайте запас.
Локация. Для российской аудитории берите сервер в России: скорость отклика напрямую влияет на позиции в поиске и на поведение посетителей. Подобрать можно в каталоге по странам.
Шаг 1. Ставим веб-сервер, PHP и базу
Мы соберём связку nginx + PHP-FPM + MariaDB. Она заметно экономнее классического Apache.
root@vps:~#apt update && apt upgrade -yroot@vps:~#apt install -y nginx mariadb-server php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl unzipЗащитим базу данных:
root@vps:~#mysql_secure_installationОтвечайте: root-пароль — задать, анонимных пользователей — удалить, удалённый вход root — запретить, тестовую базу — удалить.
Шаг 2. Создаём базу под сайт
root@vps:~#mysql -u root -pВнутри выполните:
CREATE DATABASE wp_site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'ПРИДУМАЙТЕ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON wp_site.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Кодировка utf8mb4 обязательна — иначе на сайте поломаются эмодзи и часть символов.
Шаг 3. Забираем данные со старого хостинга
База. В панели старого хостинга откройте phpMyAdmin, выберите базу, вкладка «Экспорт», формат SQL, скачайте файл.
Есть SSH-доступ к старому хостингу — быстрее так:
user@old:~#mysqldump -u СТАРЫЙ_ЮЗЕР -p СТАРАЯ_БАЗА | gzip > backup.sql.gzФайлы. Заберите содержимое папки сайта — обычно public_html или www. Достаточно каталога wp-content и файла wp-config.php, само ядро WordPress мы скачаем свежее.
Шаг 4. Разворачиваем на новом сервере
root@vps:~#mkdir -p /var/www/mysite && cd /var/www/mysiteroot@vps:~#wget https://ru.wordpress.org/latest-ru_RU.tar.gzroot@vps:~#tar -xzf latest-ru_RU.tar.gz --strip-components=1root@vps:~#rm latest-ru_RU.tar.gzЗагрузите со своего компьютера папку wp-content:
user@local:~#scp -r ./wp-content root@НОВЫЙ_IP:/var/www/mysite/Импортируйте базу:
root@vps:~#gunzip -c backup.sql.gz | mysql -u wp_user -p wp_siteНастройте права — это частая причина ошибок «не удалось записать файл»:
root@vps:~#chown -R www-data:www-data /var/www/mysiteroot@vps:~#find /var/www/mysite -type d -exec chmod 755 {} \;root@vps:~#find /var/www/mysite -type f -exec chmod 644 {} \;Шаг 5. Настраиваем wp-config.php
root@vps:~#cd /var/www/mysite && cp wp-config-sample.php wp-config.php && nano wp-config.phpВпишите данные базы:
define( 'DB_NAME', 'wp_site' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', 'ваш_пароль' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
Ключи безопасности сгенерируйте на официальном сервисе и вставьте вместо заготовок.
Шаг 6. Конфигурация nginx
root@vps:~#nano /etc/nginx/sites-available/mysiteserver {
listen 80;
server_name мойсайт.ру www.мойсайт.ру;
root /var/www/mysite;
index index.php;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~* \.(jpg|jpeg|png|gif|webp|css|js|woff2)$ {
expires 30d;
access_log off;
}
location ~ /\.ht { deny all; }
}
Строка try_files отвечает за человекопонятные адреса — без неё все страницы кроме главной будут отдавать 404.
root@vps:~#ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/root@vps:~#nginx -t && systemctl reload nginxШаг 7. Проверяем ДО переключения домена
Ключевой момент для переезда без простоя: посмотреть сайт на новом сервере, пока домен ещё указывает на старый.
Откройте на своём компьютере файл hosts (на Windows C:\Windows\System32\drivers\etc\hosts, на macOS и Linux /etc/hosts) и добавьте строку:
123.45.67.89 мойсайт.ру www.мойсайт.ру
Теперь только ваш компьютер будет открывать сайт с нового сервера. Проверьте главную, внутренние страницы, админку, формы, картинки.
Не забудьте убрать строку
После успешного переезда удалите её из hosts, иначе будете видеть не то, что видят посетители, и потом долго искать несуществующие проблемы.
Шаг 8. Переключаем домен и ставим HTTPS
Убедились, что всё работает — меняйте A-запись домена на новый IP. Обновление занимает от нескольких минут до пары часов.
Когда домен заработает, выпускайте сертификат:
root@vps:~#apt install -y certbot python3-certbot-nginxroot@vps:~#certbot --nginx -d мойсайт.ру -d www.мойсайт.руПодробнее — в гайде про nginx и HTTPS.
Шаг 9. Меняем адреса внутри базы
Если старый сайт работал по http, а новый по https, в базе останутся старые ссылки, и часть картинок не загрузится. Замените их:
root@vps:~#cd /var/www/mysiteroot@vps:~#wget -O wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharroot@vps:~#php wp-cli.phar search-replace 'http://мойсайт.ру' 'https://мойсайт.ру' --allow-rootНе делайте замену через SQL напрямую
В WordPress часть настроек хранится в сериализованном виде, где записана длина строки. Простой UPDATE ... REPLACE ломает такие записи, и слетают настройки темы и виджетов. WP-CLI учитывает это правильно.
Держим старый хостинг ещё неделю
Не отключайте старый сервер сразу. Пока обновляются DNS-записи, часть посетителей ещё будет приходить туда. Неделя — безопасный запас, и есть куда откатиться, если вылезет неожиданное.
Что сделать после переезда
Бэкапы. На хостинге их делал провайдер, теперь это ваша забота. Настройте резервное копирование базы и папки wp-content.
Защита. WordPress — самая атакуемая система в интернете. Обязательно пройдите базовые меры безопасности.
Мониторинг. Раньше за доступностью следил хостинг. Поставьте Uptime Kuma, чтобы узнавать о падении первым.
Подобрать сервер под сайтДля обычного сайта на WordPress достаточно 2 ГБ памяти, для магазина берите 4 ГБ.
Смотреть тарифы