Перенос сайта на PHP/MySQL на VPS Linux Infrawire даёт выделенные ресурсы и полный контроль над стеком. Секрет безболезненной миграции — подготовить всё на новом сервере, проверить до изменения DNS и только потом переключить трафик. Это руководство следует именно такому порядку.
📋 Предварительные требования
- Linux VPS с Ubuntu 24.04 или Debian 12 (IP-адрес и пароль root указаны в вашем личном кабинете)
- Доступ к виртуальному хостингу (файловый менеджер, FTP/SSH и инструмент для баз данных, например phpMyAdmin)
- Доступ к DNS-зоне вашего домена
- Домен
example.comи IP вашего VPS, ниже обозначенный какVPS_IP
1. Составьте опись старого сайта
Запишите, что нужно сайту: версия PHP, расширения, имя базы данных, задания cron, правила .htaccess, SSL-сертификат и, главное, где размещена ваша почта. В старой панели управления посмотрите версию PHP; при наличии SSH-доступа:
Bashphp -v php -m | sort crontab -l
Сразу же уменьшите TTL DNS-записей до 300 секунд, как минимум за сутки до миграции, чтобы итоговое переключение прошло быстро.
2. Экспорт файлов и базы данных
С VPS можно забрать файлы напрямую, если старый хостинг предоставляет SSH:
Bashmkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/
Без SSH скачайте архив по FTP или через файловый менеджер и загрузите его командой scp. Экспортируйте базу через mysqldump (или кнопку «Экспорт» в phpMyAdmin):
Bashmysqldump --single-transaction -u DBUSER -p DBNAME > db.sql
3. Подготовьте стек на VPS
Bashsudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v
В Ubuntu 24.04 поставляется PHP 8.3, в Debian 12 — PHP 8.2; сокет называется /run/php/php8.3-fpm.sock или /run/php/php8.2-fpm.sock. Создайте сайт Nginx в /etc/nginx/sites-available/example.com:
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
Nginx игнорирует .htaccess: перенесите его правила перезаписи в блоки location.
4. Импорт файлов и базы данных
Bashsudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql
Затем отредактируйте конфигурацию приложения (например, wp-config.php), указав новые имя базы, пользователя и пароль. Хост теперь — localhost.
5. Проверка перед переключением
На своём компьютере направьте домен на VPS, отредактировав файл hosts (/etc/hosts в Linux и macOS, C:\Windows\System32\drivers\etc\hosts в Windows):
BashVPS_IP example.com www.example.com
Или проверьте без каких-либо изменений:
Bashcurl -I --resolve example.com:80:VPS_IP http://example.com/
Просмотрите сайт, войдите в аккаунт, отправьте форму и проверьте журналы в /var/log/nginx/error.log. После этого удалите строку из файла hosts.
6. Смена DNS и почта
Заморозьте изменения контента на старом сайте, повторите rsync и экспорт/импорт базы, чтобы перенести свежие изменения, затем измените запись A на VPS_IP, а запись AAAA — на IPv6-адрес VPS. Когда DNS обновится, выпустите сертификат:
Bashsudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com
Почта: меняйте только записи A/AAAA. Записи MX, SPF и DKIM не трогайте, если почтовые ящики остаются у прежнего провайдера. Отказывайтесь от старого хостинга только после нескольких дней без проблем.
🔧 Устранение неполадок
502 Bad Gateway
Сокет PHP в fastcgi_pass не соответствует установленной версии. Проверьте командами ls /run/php/ и systemctl status php8.3-fpm.
«Error establishing a database connection»
Неверные учётные данные или хост в файле конфигурации. Проверьте: mysql -u dbuser -p dbname.
403 или пустая страница
Проверьте владельца и права (chown -R www-data:www-data), а также sudo tail -n 50 /var/log/nginx/error.log и журналы PHP.
После переключения всё ещё виден старый сайт
DNS-кэши ещё активны. Проверьте dig +short example.com и дождитесь истечения TTL.
✅ Теперь ваш сайт работает на собственном VPS: перенос прошёл без простоя, и у вас есть безопасный путь назад.