В этой статье мы расскажем, как перенести сайт с виртуального хостинга на VPS.
В качестве примера рассмотрим перенос простого сайта под управлением CMS WordPress на виртуальный сервер с ОС Ubuntu 18.04 и дополнительным ПО — в данном случае речь идет о т.н. LAMP-стеке.
Мы разработали видеоинструкцию, где в удобном формате объяснили как осуществляется перенос сайта c виртуального хостинга на VPS cо стеком LAMP
Установка LAMP
Стек LAMP — это набор программного обеспечения с открытым исходным кодом, включающий в себя операционную систему Linux, веб-сервер Apache, базу данных MySQL и интерпретатор PHP.
При создании сервера, а также при переустановке ОС на существующем сервере из нашей панели управления доступна установка LAMP в автоматическом режиме. После установки на почту владельца аккаунта направляется письмо с необходимыми для первоначальной настройки данными. Если при нажатии на кнопку «Открыть виртуальный хост» в письме вы увидите приветственную страницу веб-сервера — это значит, что установка ПО была успешно завершена и можно приступить к дальнейшей настройке сервера.


Для переноса сайта необходимо скопировать файловую структуру сайта, а также резервную копию базы данных, которую требуется предварительно создать.
Создание резервной копии базы данных
Для выгрузки резервной копии базы данных легко использовать раздел BackUp в панели управления виртуальным хостингом. Подробнее о создании резервной копии можно узнать в разделе «Архивирование текущих данных» нашего руководства по разделу BackUp. Узнать, с какой базой данных работает ваш сайт, вы можете из конфигурационного файла сайта.
- WordPress
- /wp-config.php - Joomla
- /core/config/config.inc.php либо /manager/includes/config.inc.php - PHPShop
- /phpshop/inc/config.ini - 1C-Bitrix
- /bitrix/php_interface/dbconn.php - Drupal
- /sites/default/settings.php - DLE
- /engine/data/dbconfig.php - HostCMS
- /hostcmsfiles/config_db.php - InstantCMS
- /includes/config.inc.php - Amiro
- /_local/config.ini.php - vBulletin
- /include/config.php - WebAsyst
- /kernel/wbs.xml /dblist/КЛЮЧ_БАЗЫ_ДАННЫХ.xml
/temp/scdb/.settings.КЛЮЧ_БАЗЫ_ДАННЫХ
(кэш ключа, можно удалить) - Magento
- /app/etc/local.xml - Invision Power Board
- /conf_global.php

Копирование файлов сайта на VPS
Для копирования файлов сайта удобно использовать Файловый менеджер.
- В разделе VPS выберите виртуальный сервер, на который намерены осуществить перенос сайта, и откройте файловый менеджер, нажав на соответствующую иконку меню.


- Нажмите на кнопку «Локальный сервер» в верхней панели файлового менеджера для перехода к домашней директории виртуального хостинга в активной панели.
- Во второй панели перейдите в директорию
/var/www/— в ней временно разместим файл резервной копии базы данных. - Найдите в корне домашней директории виртуального хостинга предварительно созданный файл резервной копии базы данных, выберите в контекстном меню опцию «Переместить» (или выделите файл и нажмите комбинацию
Shift + 5) и подтвердите действие.

В случае, если сайт расположен на другом аккаунте, вы можете подключится к этому аккаунту по FTP/SFTP в одной из панелей Файлового менеджера. Для этого необходимо:
- Нажать на кнопку «Удаленный сервер» в верхней панели меню Файлового менеджера

- Создать новое соединение в открывшемся окне. Для настройки соединения необходимо указать:
— Тип соединения — при выборе SFTP убедитесь, что для аккаунта включен SSH-доступ.
— Технический домен в качестве имени сервера — он имеет вид ваш_логин.beget.tech.
— Порт — 21 для FTP, 22 для SFTP.
— Логин аккаунта в качестве имени пользователя.
— Пароль к аккаунту. - После этого нажмите «Сохранить».
- Для установки соединения дважды кликните в строке с именем добавленного подключения.

- После перемещения архив можно распаковать также с помощью инструментов файлового менеджера.

- Далее необходимо скопировать файлы и папки сайта на VPS. В нашем примере файлы сайта на виртуальном хостинге размещены в директории
~/wolfersen.ru/public_html/— точное имя директории, к которой прилинкован домен, можно узнать в разделе «Сайты» панели управления виртуальным хостингом. - При установке LAMP в автоматическом режиме был сконфигурирован один виртуальный хост, файлы которого располагаются в директории
/var/www/html/. Создадим новую директорию для файлов переносимого сайта на виртуальном сервере/var/www/wolfersen.ru/и скопируем в нее файлы сайта с виртуального хостинга.


Настройка виртуального хоста
- Для того, чтобы веб-сервер корректно определял имя сервера по-умолчанию, рекомендуется добавить директиву
ServerNameв глобальную конфигурацию веб-сервера. Для этого откройте файл/etc/apache2/apache2.confв режиме правки:

Добавьте в начало файла строку ниже, после чего сохраните изменения и закройте файл:
ServerName localhost- Далее требуется настроить виртуальный хост для нового сайта. Конфигурация виртуального хоста веб-сервера, созданного по-умолчанию, располагается в файле
/etc/apache2/sites-available/000-default.conf
Перенесем эту конфигурацию в директорию/etc/apache2/sites-enabledс заменой уже существующей конфигурации (нажмите «ДА» при запросе на перезапись файла), после чего переименуем файл в wolfersen.ru.conf (обратите внимание, что в имени файла содержится имя директории, созданной для файлов сайта на предыдущем шаге).


Для редактирования конфигурации откроем файл в режиме правки.

- В конфигурации виртуального хоста необходимо указать домен вашего сайта в качестве значения ServerName и ServerAlias
ServerName wolfersen.ru
ServerAlias www.wolfersen.ru- Исправить путь к директории с файлами сайта
DocumentRoot /var/www/wolfersen.ru- Для разрешения файлов
.htaccessнеобходимо установить директивуAllowOverrideвнутри блокаDirectory, отвечающего за корневую директорию сайта. Для этого добавьте в конец файла следующие строки:
<Directory /var/www/wolfersen.ru/>
Options All -Indexes
AllowOverride All
</Directory>- После чего сохраните и закройте файл.
Пример готового виртуального хоста:
<VirtualHost *:80>
ServerName wolfersen.ru
ServerAlias www.wolfersen.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wolfersen.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/wolfersen.ru/>
Options All -Indexes
AllowOverride All
</Directory>
</VirtualHost>Для дальнейшей настройки потребуется подключиться к серверу по SSH — рекомендуем использовать для этого удобный вам SSH-клиент (например, Putty в Windows) или стандартный терминал в Linux или MacOS.
Если вы добавили SSH-ключ для авторизации без ввода пароля, достаточно набрать в терминале:
ssh root@xxx.xxx.xxx.xxxгде xxx.xxx.xxx.xxx — IP-адрес вашего сервера, который указан на главной странице панели управления VPS:

Иначе потребуется ввести пароль, указанный при создании сервера (если вы забыли пароль, в любой момент его можно сбросить в настройках сервера).
Если нет возможности воспользоваться SSH-клиентом, вы можете открыть терминал в нашей панели управления — необходимо выполнить вход на сервер под пользователем root с паролем, установленным при создании сервера.

- Для использования директив перенаправления в
.htaccessактивируем модуль веб-сервераmod_rewrite. Для этого в консоли необходимо ввести команду:
a2enmod rewrite- Для того, чтобы изменения вступили в силу потребуется перезапустить веб-сервер:
systemctl restart apache2Настройка прав доступа
- Для корректной работы веб-сервера необходимо изменить владельца файлов в корневой директории сайта на
www-data— это пользователь, под которым запускается и работает веб-сервер Apache.
chown -R www-data:www-data /var/www/wolfersen.ru- Также необходимо задать корректные права для файлов и директорий сайта:
find /var/www/wolfersen.ru/ -type d -exec chmod 750 {} \;
find /var/www/wolfersen.ru/ -type f -exec chmod 640 {} \;Создание базы данных
- Для создания новой базы данных для сайта зайдем в MySQL, набрав в консоли команду:
mysql- Создадим базу данных с названием wordpress (можно использовать удобное вам название) командой:
mysql> CREATE DATABASE wordpress;- Создадим нового пользователя с именем
wp_user:
mysql> CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'set_your_password';И назначим права для доступа нового пользователя wp_user к базе данных wordpress
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';- Применим изменения:
mysql> FLUSH PRIVILEGES;- Импортируем файл резервной копии базы данных переносимого сайта в созданную нами новую базу (необходимо указывать абсолютный путь к файлу резервной копии):
mysql> USE wordpress;
mysql> SOURCE /var/www/dump.sql;- После успешного импорта можно выйти из MySQL:
mysql> EXIT;- В завершение необходимо удалить файл резервной копии базы данных:
rm /var/www/dump.sqlНастройка конфигурационного файла сайта
Далее необходимо исправить реквизиты подключения к БД в конфигурационном файле сайта.
- Для этого откроем файл в режиме правки, используя файловый менеджер. В нашем примере CMS WordPress — конфигурационный файл имеет имя
wp-config.php

- В файле необходимо заменить значения констант
DB_NAME,DB_USERиDB_PASSWORDна те, которые мы указали при создании базы данных и пользователя базы данных.

- После этого сохраните изменения и закройте файл.
Проверка результата переноса
После переноса сайта рекомендуем проверить его работоспособность при открытии с виртуального сервера. Сделать это можно путем добавления соответствия IP-адреса VPS и домена сайта в файл hosts на вашем локальном компьютере.

Изменение А-записи домена
Если сайт работает корректно — можно изменить DNS-записи домена вашего сайта, указав в качестве А-записи IP-адрес вашего виртуального сервера. После вступления изменений в силу (это занимает до 15 минут) сайт по вашему домену будет открываться с VPS.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью, стек LAMP, наши продукты или свой проект с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.