В этой статье мы расскажем, как перенести сайт с виртуального хостинга на 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.