Перенесення сайту на VPS


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

Етапи перенесення

Перенесення сайту на VPS складається з наступних етапів:

  1. Копіювання файлів на локальний комп'ютер.
  2. Експорт бази даних.
  3. Встановлення веб-сервера, СУБД та іншого програмного забезпечення на віртуальний сервер (ВС).
  4. Налаштування ПЗ на VPS.
  5. Завантаження файлів з локальної системи на ПС.
  6. Редагування конфігурації двигуна (CMS)
  7. Імпорт бази даних на ЗС.
  8. Перенесення домену.

Копіювання файлів сайту на локальний комп'ютер

Підключіться до віртуального хостингу по FTP. Найкраще для цього використовувати FileZilla, оскільки цей FTP-клієнт добре працює з великою кількістю файлів. Перейдіть до каталогу, який містить файли сайту. Як правило, це каталог public_html. Якщо ви раніше адміністрували сайт, то, напевно, знаєте, як називається цей каталог. Якщо виникли труднощі, зверніться до саппорту хостинг-провайдера.

Експорт бази даних на локальний комп'ютер

Увійдіть до панелі керування старого хостингу. У ній часто є посилання на phpMyAdmin - ця програма використовується для роботи з БД.

Далі дії будуть такими:

  1. Виберіть базу даних, яку потрібно перенести.
  2. Відкрийте вкладку Експорт.
  3. Виберіть метод експорту Звичайний.
  4. Натисніть кнопку Вперед.
  5. Збережіть дамп.

Встановлення веб-сервера, СУБД та іншого програмного забезпечення на VPS

Підключіться до сервера через ssh. Після цього насамперед оновимо список пакетів і самі пакети (до ЗС компанії Xelent відразу надається root-доступ, тому ніякі додаткові команди на кшталт sudo не потрібні):

apt update
apt upgrade
Далі встановимо Apache (веб-сервер) і файловий менеджер mc (потрібний для спрощення переміщення по файловій системі та редагування файлів):
apt install apache2 mc

Перейдіть до директорії /etc/apache2/sites-enabled і відкрийте файл 00-default.conf. Ми не створюватимемо окремі web-сервери для кожного сайту. Будемо вважати, що у нас є один сайт і його конфігурація буде зберігатися в 00-default.conf. Реальний приклад конфігурації наведено на наступному малюнку.

Основні директиви:

  • ServerName – тут потрібно вказати домен;
  • DocumentRoot – вказує, де зберігатимуться документи сайту, ми використовуємо каталог за замовчуванням /var/www/html
  • ServerAdmin – можна вказати адресу електронної пошти адміністратора сервера.

Запустимо web-сервер:

systemctl start apache2.service

Встановимо СУБД MySQL, команди:

apt install mysql-server mysql-client
mysql_secure_installation

Перша команда встановлює необхідні пакети – сервер та клієнт. Друга запускає налаштування так званої безпечної інсталяції, в ході якої буде зроблено:

  1. Установка пароля для MySQL-користувача root. Зверніть увагу, що цей користувач і системний користувач root – дві різні сутності, тому постарайтеся, щоб паролі в них були різні.
  2. Видалення тестової БД.
  3. Заборона підключення до сервера баз даних ззовні лише з локального вузла. Це означає, що до СУБД зможе підключитися програмне забезпечення, що працює тільки на цьому VPS, а не всі охочі. Не турбуйтеся: до вашого сайту зможуть підключатися всі користувачі, просто вони не зможуть підключатися безпосередньо до БД, що небажано з точки зору безпеки.

Після цього потрібно ввести команду:

mysql -u root -p
CREATE DATABASE site;
CREATE USER siteuser@localhost IDENTIFIED BY '123456789';
GRANT ALL PRIVILEGES ON site.* TO siteuser@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

Тут запускається клієнт і від імені MySQL-користувача root виконуються запити. Перший запит створює базу даних site, другий – створює користувача siteuser, від імені якого CMS звертатиметься до СУБД. Третій запит – надання повноважень користувачеві siteuser до всіх таблиць бази даних site. Звичайно, замість '123456789' вкажіть якийсь складний пароль. Останній запит здійснює застосування повноважень, а команда exit - вихід з клієнта mysql. Для встановлення PHP і всіх необхідних (у більшості випадків) пакетів використовується така довга команда:

apt install php php-cli openssl php-curl php-gd php-mcrypt php-xml php-intl php-zip php-mbstring php-soap php-mysql php-json libapache2-mod-php php-xsl composer

Вона встановить останню версію інтерпретатора, доступну для вашого дистрибутива. Наприклад, для Ubuntu 16.04 – це буде 7.0, для 18.04 – 7.2.

Довідатися версіюможна командою:

php -v

Встановимо максимальний розмір пам'яті сценарію. Відкрийте файл конфігурації (X – версія):

sudo mcedit /etc/php/7.X/apache2/php.ini

У ньому потрібно змінити ліміт пам'яті і відразу зберегтися:

memory_limit = 1024M

Додамо необхідні модулі Apache (введіть команду):

a2enmod rewrite

Також, щоб нормально працювали SEF URL деяких CMS, потрібно відкрити /etc/apache2/sites-enabled/000-default.conf і додати до секції VirtualHost рядки:


Options Indexes FollowSymLinks MultiViews
AllowOverride All

Все, можна повторно перезапустити Apache.

Завантаження файлів з локальної системи на VPS

Завантажте файли в каталог /var/www/html або будь-який інший, який ви вказали в DocumentRoot. Якщо ви використовуєте Bitvise SSH Client для підключення до SSH, завантажити файли можна у вікні Bitvise SFTP. Використовуйте команду контекстного меню Upload.