Со временем любой развивающийся проект задумывается о собственном сервере. Как мы уже неоднократно отмечали в нашем блоге, оптимальным вариантом является именно VPS. В этой статье мы рассмотрим поэтапно перенос сайта с хостинга на VPS.
Подключитесь к виртуальному хостингу по FTP. Лучше всего для этого использовать FileZilla, поскольку этот FTP-клиент хорошо работает с большим количеством файлов. Перейдите в каталог, содержащий файлы сайта. Как правило, это каталог public_html. Если вы раньше администрировали сайт, то наверняка знаете, как называется этот каталог. Если возникли сложности, обратитесь в саппорт хостинг-провайдера.
Копирование файлов на локальный компьютер
Войдите в панель управления старого хостинга. В ней часто есть ссылка на phpMyAdmin –это приложение используется для работы с БД.
Далее действия будут такими:
Экспорт базы данных
apt update apt upgrade
Далее установим Apache (веб-сервер) и файловый менеджер mc (нужен для упрощения перемещения по файловой системе и редактирования файлов):
apt install apache2 mc
Перейдите в директорию /etc/apache2/sites-enabled и откройте файл 00-default.conf. Мы не будем создавать отдельные web-серверы для каждого сайта. Будем считать, что у нас есть один сайт и его конфигурация как раз будет храниться в 00-default.conf. Реальный пример конфигурации приведен на следующем рисунке.
Конфигурация сервера: имя сервера затерто (поскольку производилась настройка реального сервера и его имя скрыто в интересах клиента)
Основные директивы:
Запустим web-сервер:
systemctl start apache2.service
Установим СУБД MySQL, команды:
apt install mysql-server mysql-client mysql_secure_installation
Первая команда устанавливает необходимые пакеты – сервер и клиент. Вторая запускает настройку так называемой безопасной инсталляции, в ходе которой будет произведено:
После этого нужно ввести команду:
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 = 512M
Добавим необходимые модули Apache (введите команду):
a2enmod rewrite
Также, чтобы нормально работали SEF URL некоторых CMS нужно открыть /etc/apache2/sites-enabled/000-default.conf и добавить в секцию VirtualHost строки:
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Все, можно повторно перезапускать Apache.
Загрузите ваши файлы в каталог /var/www/html или любой другой, который вы указали в DocumentRoot. Если для подключения по SSH вы используете Bitvise SSH Client, загрузить файлы можно в окне Bitvise SFTP. Используйте команду контекстного меню Upload.
Bitvise SFTP
После этого перейдите в каталог /var/www/html (или любой другой, указанный в конфигурации):
find . –exec chown www-data:www-data {} \;
Команда делает владельцем всех файлов и каталогов пользователя www-data, от имени которого работает веб-сервер (сейчас владелец root и пользователь www-data не сможет перезаписать файлы, созданные суперпользователем, в результате движок сайта не сможет записать кэш и другую информацию).
В файловом менеджере mc откройте для редактирования (кнопка F4) файл конфигурации движка. Его название и расположения зависит от используемой CMS (например, в случае WordPress – это wp-config.php). В нем нужно "прописать" новые параметры для доступа к БД:
Конечно, у вас будут другие, свои значения, которые вы указали при настройке MySQL.
Здесь все просто. Загрузите на сервер (по SSH) дамп базы данных, полученный при экспорте. Пусть он называется db.sql. Если он сжатый, то сначала его нужно распаковать:
unzip db.sql.zip
Теперь импортируем его в БД:
mysql –u siteuser –p site < db.sql
Разберемся что есть что: опция –u задает пользователя БД (siteuser), опция –p говорит о том, что нужно будет спросить пароль этого пользователя, site – это БД, а db.sql – импортируемая БД.
Осталось самое малое – открыть панель управления доменным именем. Если вы покупали домен вместе с хостингом, скорее всего, это будет панель управления хостингом. Если вы покупали домен у регистратора (например, на reg.ru), зайдите в личный кабинет. В настройках домена у вас сейчас прописаны NS-записи – удалите их. Вместо этого создайте A-запись, указывающую на IP-адрес вашего VPS.
Внимание! Многие после этого совершают одну большую ошибку, а именно – "забывают" пароль от старого хостинга или удаляют аккаунт. Если домен зарегистрирован непосредственно у регистратора доменного имени (nic.ru, reg.ru и т.д.), старый аккаунт можно удалить. А вот если вы покупали домен вместе с хостингом, то управление доменом будет производиться через панель управления старым хостингом. Да, за хостинг платить не нужно, но раз в году необходимо оплачивать продление доменного имени. Или же обратитесь в службу поддержки старого хостинга – они помогут перенести домен в другое место. Лучше всего перенести домен к регистратору доменных имен, а не к новому хостеру – так не придется проделывать эту процедуру еще раз при следующем "переезде".
На этом все. Процедура переезда с виртуального хостинга на VPS завершена.