Перенос сайта c виртуального хостинга на VPS с помощью LAMP

В этой статье мы расскажем, как перенести сайт с виртуального хостинга на VPS.

В качестве примера рассмотрим перенос простого сайта под управлением CMS WordPress на виртуальный сервер с ОС Ubuntu 18.04 и дополнительным ПО — в данном случае речь идет о т.н. LAMP-стеке.

Установка LAMP

Стек LAMP — это набор программного обеспечения с открытым исходным кодом, включающий в себя операционную систему Linux, веб-сервер Apache, базу данных MySQL и интерпретатор PHP.

При создании сервера, а также при переустановке ОС на существующем сервере из нашей панели управления доступна установка LAMP в автоматическом режиме. После установки на почту владельца аккаунта направляется письмо с необходимыми для первоначальной настройки данными. Если при нажатии на кнопку «Открыть виртуальный хост» в письме вы увидите приветственную страницу веб-сервера — это значит, что установка ПО была успешно завершена и можно приступить к дальнейшей настройке сервера.

Для переноса сайта необходимо скопировать файловую структуру сайта, а также резервную копию базы данных, которую требуется предварительно создать.

Создание резервной копии базы данных

Для выгрузки резервной копии базы данных легко использовать раздел BackUp в панели управления виртуальным хостингом. Подробнее о создании резервной копии можно узнать в разделе «Архивирование текущих данных» нашего руководства по разделу BackUp. Узнать, с какой базой данных работает ваш сайт, вы можете из конфигурационного файла сайта.

Список имен конфигурационных файлов для популярных CMS

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

Копирование файлов сайта на VPS

Для копирования файлов сайта удобно использовать Файловый менеджер.

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

2. Нажмите на кнопку «Локальный сервер» в верхней панели файлового менеджера для перехода к домашней директории виртуального хостинга в активной панели.

3. Во второй панели перейдите в директорию /var/www/ — в ней временно разместим файл резервной копии базы данных.

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

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

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

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

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

7. При установке LAMP в автоматическом режиме был сконфигурирован один виртуальный хост, файлы которого располагаются в директории /var/www/html/. Создадим новую директорию для файлов переносимого сайта на виртуальном сервере /var/www/wolfersen.ru/ и скопируем в нее файлы сайта с виртуального хостинга.

Настройка виртуального хоста

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

Добавьте в начало файла строку ниже, после чего сохраните изменения и закройте файл:

ServerName localhost

2. Далее требуется настроить виртуальный хост для нового сайта. Конфигурация виртуального хоста веб-сервера, созданного по-умолчанию, располагается в файле /etc/apache2/sites-available/000-default.conf

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

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

3. В конфигурации виртуального хоста необходимо указать домен вашего сайта в качестве значения ServerName и ServerAlias

ServerName wolfersen.ru
ServerAlias www.wolfersen.ru

4. Исправить путь к директории с файлами сайта

DocumentRoot /var/www/wolfersen.ru

5. Для разрешения файлов .htaccess необходимо установить директиву AllowOverride внутри блока Directory, отвечающего за корневую директорию сайта. Для этого добавьте в конец файла следующие строки:

<Directory /var/www/wolfersen.ru/>
  Options All -Indexes
  AllowOverride All
</Directory>

6. После чего сохраните и закройте файл.

Пример готового виртуального хоста:

<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 с паролем, установленным при создании сервера.

1. Для использования директив перенаправления в .htaccess активируем модуль веб-сервера mod_rewrite. Для этого в консоли необходимо ввести команду:

a2enmod rewrite

2. Для того, чтобы изменения вступили в силу потребуется перезапустить веб-сервер:

systemctl restart apache2

Настройка прав доступа

1. Для корректной работы веб-сервера необходимо изменить владельца файлов в корневой директории сайта на
www-data — это пользователь, под которым запускается и работает веб-сервер Apache.

chown -R www-data:www-data /var/www/wolfersen.ru

2. Также необходимо задать корректные права для файлов и директорий сайта:

find /var/www/wolfersen.ru/ -type d -exec chmod 750 {} \;
find /var/www/wolfersen.ru/ -type f -exec chmod 640 {} \;

Создание базы данных

1. Для создания новой базы данных для сайта зайдем в MySQL, набрав в консоли команду:

mysql

2. Создадим базу данных с названием wordpress (можно использовать удобное вам название) командой:

mysql> CREATE DATABASE wordpress;

3. Создадим нового пользователя с именем 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';

4. Применим изменения:

mysql> FLUSH PRIVILEGES;

5. Импортируем файл резервной копии базы данных переносимого сайта в созданную нами новую базу (необходимо указывать абсолютный путь к файлу резервной копии):

mysql> USE wordpress;
mysql> SOURCE /var/www/dump.sql;

6. После успешного импорта можно выйти из MySQL:

mysql> EXIT;

7. В завершение необходимо удалить файл резервной копии базы данных:

rm /var/www/dump.sql

Настройка конфигурационного файла сайта

Далее необходимо исправить реквизиты подключения к БД в конфигурационном файле сайта.

1. Для этого откроем файл в режиме правки, используя файловый менеджер. В нашем примере CMS WordPress — конфигурационный файл имеет имя wp-config.php

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

3. После этого сохраните изменения и закройте файл.

Проверка результата переноса

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

Изменение А-записи домена

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