Перенос сайта с Centos 7 + Vesta CP на Debian 11

Перенос сайта с Centos 7 + Vesta CP на Debian 11

Перенос сайта с Centos 7 + Vesta CP на Debian 11 — полное описание процесса переноса старой версии сайта с одного VPS на другой. Изначально я планировал лишь описать кратко весь процесс переноса, но позже, узнав, что Centos более популярен, чем я думал, а также, учитывая относительную популярность Vesta CP, решил сделать этот пост в формате инструкции, вдруг кто-то так же, как и я, захочет сделать такой вот резкий перенос. Такой резкий переход был вызван обстоятельствами, сам бы я, скорее всего, не стал бы его делать, так как пока ещё всё было в целом неплохо. Сам перенос занял у меня 2 дня. Имею в виду не двое суток, а часть времени в один день и часть в другой. Но об этом подробнее далее.

Перенос сайта с Centos 7: подготовка к переносу

Почему был сделан перенос? Переход был вызван внешними обстоятельствами в виде полного закрытия SWIFT-переводов. Мне не хотелось его производить, так как проблем в целом не было, да и в старом хостинге плюсов было сравнительно больше минусов, то есть нужды совсем не было. Но всё же пришлось это сделать.

Почему именно Debian 11? CentOS заброшен ради коммерческого продукта, CentOS 9 никогда не увидит свет, у Debian же всё гораздо лучше. Да и вообще, он мне приглянулся ещё раньше. Причина изначального выбора CentOS состояла в том, что я не разбирался в дистрибутивах и панелях управления. По причине отсутствия знаний я выбрал Vesta CP. Как оказалось позже — зря. Проект заброшен и с ним множество проблем, особенно с почтой, Fail2ban. А раз уж я теперь на порядок лучше разбираюсь в Linux’е, решил и вовсе от неё отказаться.

На выбор у меня ушёл где-то час, долго рассматривал все плюсы и минусы своего выбора. Многие почему-то проклинали Debian 11, советуя остаться на более ранних версиях, но меня это не пугало. Когда выбор был сделан, я начал проводить первую стадию переноса. Я очистил кеш у плагина для оптимизации, обновил WordPress и некоторые плагины, чтобы этим не заниматься потом, а кеш же очистил для того, чтобы быстрее загрузить все файлы. На скачивание всех файлов у меня ушло, если не ошибаюсь, часов 5. Да, долго, но необходимо. Усугублялось это тем, что сайт работал как обычно, его можно было посещать. Далее нужно было загрузить уже базу данных. Для этого я использовал phpmyadmin. Аренда VPS уже заканчивалась, потому нельзя было допустить возможности ошибок с базой данных. Я загрузил 5 разных файлов базы данных — в gzip, zip, обычный файл, с разными настройками. Тип выбирал обычный, а не быстрый. К счастью, всё это мне позволил небольшой весь БД — ZIP-файл весил лишь 9 мегабайт.

Перенос сайта с Centos 7 + Vesta CP на Debian 11

Далее уже был выбран новый VPS, я его посмотрел, разобрался, и оставил на потом. Сам же процесс переноса начался уже на следующий день. Переносить файлы на новый VPS было примерно на 30% быстрее, потому я успокоился и выдохнул. Ну, конечно, сама загрузка шла уже после того, как я установил всё необходимое, а именно стек.

Перенос сайта с Centos 7 + Vesta CP на Debian 11

Перенос сайта с Centos 7 + Vesta CP на Debian 11

Теперь от теоретической части переходим к практической. Сразу же после установки новой операционной системы по традиции:

apt-get update && apt-get upgrade -y

К слову, на новом хостинге я был удивлён браузерной версии консоли. Такое я видел впервые, и был удивлён тому, что столь бесполезную вещь кто-то реализовал. Кажется удобным, но она так ужасно лагала, что пришлось вернуться к старому и проверенному методу, который ещё и гораздо удобнее. Ещё и узнал недавно о платном аналоге этой утилиты, над чем посмеялся. Если у вас Windows, то советую вам использовать PuTTY. Хотя, скорее всего, вы и сами знаете, она крайне популярна.

Перенос сайта с Centos 7 + Vesta CP на Debian 11

Далее меняем пароль

passwd ПАРОЛЬ

Устанавливаем LAMP’у (Сервер Apache2 + Базу данных MariaDB + Php)

apt-get install apache2
apt-get install mariadb-server
apt-get install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

Проводим первичную настройку БД

mysql_secure_installation

Вот небольшая таблица к этому пункту:

ВопросПояснениеЧто выбирать
Enter current password for rootНужно ввести пароль от rootВвести пароль
Change the root password?Предлагается изменить парольn
Remove anonymous users?Спрашивается нужно ли удалить анонимных пользователейy
Remove test database and access to it?Спрашивается нужно ли удалить анонимную базу данныхy
Reload privilege tables now?Спрашивается нужно ли именно сейчас обновить эти правилаy

Далее добавляем нашу базу данных. Чтобы не морочиться потом с переносом как это делал я, название лучше задать как у старой.

mariadb
CREATE DATABASE ИМЯБАЗЫ DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL ON ИМЯДБШКИ.* TO 'ИМЯЮЗЕРА'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
FLUSH PRIVILEGES;
SHOW DATABASES;
EXIT;

Устанавливаем WordPress последней версии (этот пункт можете пропустить, если его вы переместили из старой папки на старом VPS полностью). Для начала загружаете в tmp, потом уже пересылаете в папку нужную.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress/ /var/www/НУЖНАЯПАПКА
sudo chmod 755 -R /var/www/НУЖНАЯПАПКА
sudo chown -R www-data:www-data /var/www/НУЖНАЯПАПКА

Теперь настройка WP-Config. Там нужно указать данные от базы данных, чтобы всё работало.

cd /var/www/НУЖНАЯПАПКА
mv wp-config-sample.php wp-config.php
nano wp-config.php

Настраиваем Apache

sudo nano /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
     ServerAdmin admin@IPИЛИДОМЕН
      DocumentRoot /var/www/НУЖНАЯПАПКА
     ServerName IPИЛИДОМЕН

     <Directory /var/www/НУЖНАЯПАПКА>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/IPИЛИДОМЕН_error.log
     CustomLog ${APACHE_LOG_DIR}/IPИЛИДОМЕН_access.log combined

</VirtualHost>
sudo ln -s /etc/apache2/sites-available/wordpress.conf /etc/apache2/sites-enabled/wordpress.conf
sudo a2enmod rewrite
sudo systemctl restart apache2

Далее устанавливаем FTP для переноса файлов и Phpmyadmin для импорта базы данных.

apt-get install vsftpd -y
apt-get install phpmyadmin

Теперь сам перенос. Копируем все файлы, импортируем базу данных через phpmyadmin. Phpmyadmin обычно располагается по следующему адресу «danil-pistoletov.org/phpmyadmin», то есть просто добавляется название к домену либо IP-адресу. Что касается FTP — подключаетесь по IP-адресу, логином идёт «root», паролем пароль от вашего root.

Как перенести старый домен сайта? Изменяете у сервиса, на котором его получили, DNS. А именно IP адрес новый ставите, DNS можете оставить. После этого обычно нужно немного подождать. Ну, конечно, там где нужно указать IP либо домен в пунктах выше нужно ставить сам домен, а не IP. Если вы сначала поставили IP, то ничего страшного в этом нет. Я сам изначально сделал так, поменять можно уже потом.

На всякий случай оставлю некоторые пояснения, вдруг что-то случится.

1. Если вы тоже переносили сайт с Vesta CP, но вместо сайта у вас появляется надпись вроде «coming soon» с ссылкой на эту проклятую Vesta, как то было у меня, удалите файл «index.html» из папки с файлами сайта.

2. Если сайт говорит об ошибке с базой данных проверьте создали ли вы её вообще с тем названием, которое указываете. Возможно, вы перепутали описания к пунктам с самими пунктами, в которые нужно вводить пароль, название базы данных и т.п. Если всё в норме — попробуйте перезагрузиться следующей командой:

sudo reboot

Phpmyadmin пишет что максимум 2 мегабайта на базу, а у вас больше? Нужно поменять настройки в «php.ini». У меня сейчас версия 7.4, поэтому действия такие:

cd /etc/php/7.4/apache2
nano php.ini

Советую делать это через FTP, чтобы открыть через текстовый файл и использовать поиск по файлу, а не листать. Меняем следующее, пункты могут находиться очень отдельно: (справа написан максимальный размер)

post_max_size = 128M
upload_max_filesize = 128M

3. У вас другая версия php либо по этому пути файл не находится? Воспользуйтесь командой «cd» для перемещения по папкам и командой «ls», чтобы посмотреть какие файлы есть в этой папке. Примерно так:

cd /etc/php
ls
cd /ВЕРСИЯ
ls
nano php.ini

4. Использование команды «nano ФАЙЛ» ничего не даёт? Если у вас отображается ошибка об отсутствии прав, попробуйте «sudo nano ФАЙЛ». Если пишет что команды нет, то вы меня удивляете. Либо используйте «vi ФАЙЛ», либо установите nano. Советую nano, он удобнее всего.

sudo apt install nano

Чтобы сохранить файл и выйти из редактора включаете английскую раскладку и нажимаете Ctrl+X (далее спросит нужно ли сохранить файл, отвечаете «y», далее нажимаете Enter для выбора того же расположения файла).