Русский (Russian)

Перенос сайта с виртуального хостинга на Linux VPS

2 min
VPS/VDS-хостинг

Перенос сайта на 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-доступа:

Bash
php -v php -m | sort crontab -l

Сразу же уменьшите TTL DNS-записей до 300 секунд, как минимум за сутки до миграции, чтобы итоговое переключение прошло быстро.

2. Экспорт файлов и базы данных

С VPS можно забрать файлы напрямую, если старый хостинг предоставляет SSH:

Bash
mkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/

Без SSH скачайте архив по FTP или через файловый менеджер и загрузите его командой scp. Экспортируйте базу через mysqldump (или кнопку «Экспорт» в phpMyAdmin):

Bash
mysqldump --single-transaction -u DBUSER -p DBNAME > db.sql

3. Подготовьте стек на VPS

Bash
sudo 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:

Nginx
1server { 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}
Bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

Nginx игнорирует .htaccess: перенесите его правила перезаписи в блоки location.

4. Импорт файлов и базы данных

Bash
sudo 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):

Bash
VPS_IP example.com www.example.com

Или проверьте без каких-либо изменений:

Bash
curl -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 обновится, выпустите сертификат:

Bash
sudo 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: перенос прошёл без простоя, и у вас есть безопасный путь назад.

Следите за последними предложениями, скидками и специальными акциями.

Смотреть акции

Мы используем файлы cookie

Аналитические cookie улучшают работу сайта. Данные не продаются третьим лицам. Подробнее в политике конфиденциальности.