Перейти до вмісту

Перенесення сайту на VPS: покроковий посібник

Оновлено 5 хв читанняКоманда DNSPeek

Щоб перенести сайт на VPS, спершу підготуйте сервер: оновлення, SSH-ключі, файрвол і той самий вебстек, на якому сайт працює сьогодні. Скопіюйте файли й базу даних, налаштуйте віртуальний хост для свого домену і перевірте сайт на IP VPS під справжнім доменом до зміни DNS. Перемкніть із коротким TTL, випустіть сертифікат, а пошту тримайте в окремого провайдера, а не на VPS.

Що змінюється, коли ви йдете з віртуального хостингу

На віртуальному хостингу провайдер відповідає за вебсервер, PHP, базу даних, пошту, резервні копії та оновлення безпеки. На некерованому VPS усе це тепер ваше. Перевага — контроль і передбачувані ресурси; ціна — нічого не налаштовано, доки ви цього не налаштуєте. Плануйте переїзд як два проєкти: спершу зберіть сервер, потім перенесіть на нього сайт.

Віртуальний хостинг порівняно з некерованим VPS
ЗавданняВіртуальний хостингНекерований VPS
Оновлення безпекиХостингВи (або автоматичні оновлення)
Вебсервер, PHP, база данихПопередньо встановленіВи встановлюєте й налаштовуєте їх
Хостинг поштиЗазвичай входитьКраще тримати в окремого провайдера
Резервні копіїЧасто входятьВи налаштовуєте їх, бажано поза сервером
СертифікатиАвтоматичноCertbot або подібний ACME-клієнт

Підготуйте сервер

Почніть із підтримуваного випуску Linux. Команди нижче наведено для Ubuntu або Debian; для інших дистрибутивів адаптуйте назви пакетів.

Термінал (на VPS)
# Updates and a non-root user with sudo
apt update && apt upgrade -y
adduser deploy && usermod -aG sudo deploy

# Firewall: SSH, HTTP and HTTPS only
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# Automatic security updates
apt install -y unattended-upgrades

Увійдіть за SSH-ключем, а потім вимкніть вхід за паролем для SSH. Установіть стек, потрібний сайту, наприклад nginx або Apache, PHP-FPM тієї самої версії та з тими самими розширеннями, що й на старому хостингу, і MySQL чи MariaDB. Однакова версія PHP вбереже від несподіванок; оновіть її пізніше окремим кроком.

Перенесення сайту крок за кроком

  1. Крок 1: Знизьте TTL

    За день до перемикання встановіть для A-записів TTL 300 секунд. Поточне значення перевірте за допомогою перевірки TTL.

  2. Крок 2: Захистіть VPS і встановіть стек

    Застосуйте оновлення, створіть користувача з sudo, увімкніть SSH-ключі та файрвол, а потім установіть потрібні сайту версії вебсервера, PHP і бази даних.

  3. Крок 3: Скопіюйте файли

    Скопіюйте сайт командою rsync -avz через SSH або завантажте архів зі старого хостингу й вивантажте його на VPS. Призначте власником користувача вебсервера.

  4. Крок 4: Імпортуйте базу даних

    Експортуйте її на старому хостингу, створіть базу даних і користувача на VPS, імпортуйте дамп і оновіть конфігурацію застосунку новими обліковими даними.

  5. Крок 5: Налаштуйте віртуальний хост

    Додайте блок server для домену і www, перепишіть правила .htaccess і перезавантажте вебсервер.

  6. Крок 6: Перевірте на IP VPS до зміни DNS

    Створіть посилання-превʼю з доменом і IP VPS і, доки не встановлено сертифікат, використовуйте режим «Лише HTTP» або «Пропускати перевірку». Пройдіться сайтом, надішліть форми, увійдіть в акаунт.

  7. Крок 7: Запустіть QA-звіт

    Проскануйте превʼю за допомогою QA-звіту, щоб виявити стандартні сторінки вебсервера, помилки 502 від PHP-FPM, відсутні правила rewrite і помилки PHP.

  8. Крок 8: Перемкніть DNS і випустіть сертифікат

    Виконайте фінальну синхронізацію файлів і бази даних, спрямуйте A-записи на VPS, потім випустіть сертифікат і стежте за поширенням за допомогою перевірки поширення DNS.

Налаштуйте віртуальний хост

Вебсервер вибирає сайт за доменним імʼям у запиті. Налаштуйте блок server одночасно для example.com і www.example.com:

/etc/nginx/sites-available/example.com
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

Якщо на старому хостингу сайт покладався на правила .htaccess, перепишіть їх для nginx: людинозрозумілі URL, редиректи й обмеження доступу самі не переносяться. Змініть шлях до сокета PHP-FPM відповідно до встановленої версії. Перевіряйте конфігурацію командою nginx -t перед кожним перезавантаженням і перевірте налаштування пулу PHP-FPM: стандартна кількість робочих процесів невелика, і завантажений сайт, якому бракує процесів, відповідає помилками 502 або 504.

HTTPS до перемикання

Звичайна HTTP-перевірка Let’s Encrypt працює лише тоді, коли домен уже вказує на VPS. Є три варіанти: випустити сертифікат одразу після перемикання (кілька хвилин на звичайному HTTP або із самопідписаним сертифікатом), скористатися DNS-перевіркою, яка працює до перемикання, якщо ваш DNS-провайдер має API, або скопіювати наявний сертифікат зі старого хостингу.

Для перевірки новий VPS без жодного сертифіката працює з превʼю DNSPeek у режимі Лише HTTP: відвідувачі однаково відкривають превʼю через HTTPS, а DNSPeek спілкується із сервером звичайним HTTP. Спершу налаштуйте застосунок довіряти HTTPS проксі, інакше редирект на примусовий HTTPS зациклиться. Налаштування PHP і nginx наведено в документації: Сервер без SSL.

Пошта: не переносьте її на VPS

Якщо старий віртуальний хостинг обслуговував і вашу пошту, переїзд — добра нагода їх розділити. Якісно підтримувати поштовий сервер (фільтрування спаму, репутація, DKIM, списки блокування) — окрема робота, а багато хмарних провайдерів за замовчуванням блокують вихідний порт 25. Перенесіть скриньки до окремого поштового провайдера, оновіть MX, SPF, DKIM і DMARC, а транзакційні листи сайту надсилайте через SMTP-сервіс з автентифікацією. Перевірте записи за допомогою перевірки MX-записів, перевірки SPF-запису і перевірки DMARC-запису.

Після перемикання

  • Випустіть або перевірте сертифікат за допомогою перевірки SSL.
  • Налаштуйте резервні копії, які зберігаються поза сервером: дампи бази даних і файли — в обʼєктне сховище чи на іншу машину, і перевірте відновлення.
  • Додайте базовий моніторинг: перевірки доступності, місця на диску і терміну дії сертифіката.
  • Відтворіть cron-завдання зі старого хостингу.
  • Пройдіть чекліст після переїзду.

Чекліст перенесення на VPS

VPS

  • Оновлення застосовано, автоматичні оновлення ввімкнено
  • Користувач із sudo замість root, SSH-ключі, вхід за паролем вимкнено
  • Файрвол дозволяє лише SSH, HTTP і HTTPS
  • Та сама версія PHP і розширення, що й на старому хостингу
  • Файли скопійовано, власника й права доступу встановлено
  • Базу даних імпортовано, конфігурацію застосунку оновлено
  • Віртуальний хост для домену і www; правила rewrite переписано
  • Сайт перевірено на IP VPS за допомогою посилання-превʼю
  • QA-звіт без критичних зауважень
  • Пошту перенесено до окремого провайдера; MX, SPF, DKIM, DMARC налаштовано
  • Фінальна синхронізація, DNS перемкнуто, сертифікат випущено
  • Резервні копії поза сервером і перевірене відновлення
  • Моніторинг доступності й диска налаштовано

Поширені запитання

Чи VPS швидший за віртуальний хостинг?

Часто так, бо процесор і памʼять зарезервовано для вас, а не розділено з багатьма іншими сайтами. Утім швидкість однаково залежить від налаштувань: параметри PHP-FPM, кешування і база даних важать не менше за залізо.

Чи можна отримати SSL-сертифікат на VPS до зміни DNS?

Так, через DNS-перевірку, якщо ваш DNS-провайдер її підтримує, або скопіювавши наявний сертифікат зі старого хостингу. Стандартна HTTP-перевірка працює лише тоді, коли домен уже вказує на VPS.

Як перевірити сайт на VPS до того, як спрямувати на нього домен?

Запитуйте сайт з IP VPS під його справжнім доменом. Посилання-превʼю робить це в будь-якому браузері, і ним можна поділитися; запис у файлі hosts робить це на вашому компʼютері. Якщо відкрити просто IP, зазвичай показується стандартна сторінка вебсервера.

Чи варто розміщувати пошту на своєму VPS?

Зазвичай ні. Поштові сервери потребують постійної уваги до фільтрування спаму, репутації і списків блокування, а багато хмарних провайдерів блокують вихідний порт 25. Окремий поштовий провайдер плюс SMTP-сервіс для сайту — простіше й надійніше.

Яка найпоширеніша помилка під час переїзду на VPS?

Забути про роботу, яку старий хостинг робив непомітно: резервні копії, оновлення безпеки, пошту й cron-завдання. Перед переїздом складіть список усього, що надавав старий хостинг, і вирішіть, хто відповідатиме за кожну частину на VPS.

Moving a site? Use the migration checklist

Every step from lowering the TTL to checking email after the switch, on one printable page. With a free account you keep your preview links in one place and run a QA report of the site on the new server.

Перевірте новий сервер до перемикання

DNSPeek дає вам одне HTTPS-посилання, яке показує ваш сайт із нового сервера, поки DNS ще вказує на старий. Відкривайте його на будь-якому пристрої, діліться ним із командою чи клієнтом і запускайте QA-сканування на тому самому посиланні.

Створити безкоштовне посилання-превʼю