Миграция веб-сервера. Новогодний выпуск.


Привет!
Это первое видео в новом году. C наступившим Новым годом!
Желаю вам всего самого-самого! Чтобы мечты сбывались, цели достигались и всё было как положено!

Краткий план сегодняшнего видео:
– удалить лишний софт, если таковой имеется на новом сервере. В моём случае это была система мониторинга cacti;
– обновить всё на новом и старом сервере – привести по возможности всё к одинаковым версиям ПО, чтобы меньше было конфликтов…;
– настроить LAMP на новом сервере;
– сделать бекап на старом сервере;
– перенести БД wordpress из бекапа в MySQL;
– завести нужного пользователя для wordpress (www-data) – не требуется в моём случае;
– перенести wordpress папку с сохранением всех прав!;
– перенести файлы настроек apache;
– проверить и активировать все модули и сайты apache;
– перезапустить apache;
– перенести DNS запись на новый ip;
– остановить apache на старом сервере, когда новая dns запись актуализируется;

Опциаонально:
– проверить iptables на новом сервере;
– добавить бекап пользователя mybackup;
– настроить локальный бекап на новом сервере (бекап нужных директорий);
– настроить бекап нового сервера на бекапа сервер.

Начнём прямо по списку.
(*)Сначала нужно удалить все ненужные программы с нового сервера. Под новым сервером я понимаю не сервер из коробки, а тот сервер на который вы планируете мигрировать ваш вебсервер. Это лучше сделать для того чтобы высвободить любые возможные ресурсы – диск, оперативка, процессор, если что-то ненужное болтается в памяти, то лучше его удалить. Плюс, лучше всё вычистить до миграции, чтобы не вычищать после миграции и не задеть что-либо.
sudo apt-get remove cacti
После удаления непосредственна ненужного софта – в моём случае это была система мониторинга cacti – я использовал её в видео с тестами хостера Hetzner. Можно вычистить весь софт, библиотеки, возможно драйверы которые не используются установленными на сервере программами – это делается командой
sudo apt-get autoremove
(*)Следующим шагом будет обновление всего имеющегося софта на новом и старом сервере до наиболее актуального с целью приведения версий софта к одинаковым версиям, чтобы не поиметь проблемы с конфликтом версий после миграции. Если по каким-то причинам вы целенаправленно используете не самые новые версии какого-либо пакета на старом сервере, например, старая версия более стабильная, то обновлять нужно конечно выборочно и руками.
sudo apt-get update
sudo apt-get dist-upgrade

(*)Следующим шагом будет установка веб сервера и всего сопутствующего на новом сервере, в моём случае это LAMP – linux, apache2, mysql, php. Установить обычной командой
x sudo apt-get install lamp
нельзя, можно воспользоваться утилитой tasksel, если её нет, то можно установить её из репозитория или установить lamp непосредственно указав все необходимые пакеты. У меня есть статья и видео на канале о установке LAMP, можете почитать и посмотреть об этом более подробно там. Но вообще всё достаточно просто.
sudo apt-get install tasksel
Если вы следите за моим каналом и вообще делаете всё как положено, то у вас есть бекап вашего старого веб.сервера.
У меня на сервере есть специальный скрипт который бекапит нужные мне данные на веб.сервере. На выходе скрипта у меня есть файл tarball в котором содержатся все нужные файлы. Сам скрипт производит резервное копирование нужных мне баз данных моего веб сервере. У меня их две так как у меня два веб сайта на одном сервере, так же производится сохранение директорий с самим wordpress-ом и плюс директории и файлы с настройками системы в целом. Подробнее о том как настроить бекап своего сервера смотрите в посте у меня на сайте и в видео.
Как я уже говорил, у вас должен быть бекап tarball файл старого веб сервера – он может быть у вас на сервере с бекапами или на самом старом сервере (у меня он есть на обоих серверах). Его нужно перенести на новый сервер – я это делаю утилитой scp – secure copy.
scp -rp html.tar.gz user@yourdomain.org:/home/use/
Перед распаковкой архива на новом сервере необходимо убедиться что пользователь или пользователи под которыми работал у вас веб сервер на старом месте есть на новом сервере. Так как миграцию я буду производить с сохранением прав и настроек доступа. Для этого можно проверить под каким пользователем работал у вас apache на старом сервере и кому принадлежали файлы. На новом сервере нужно проверить наличие нужных пользователей в файле /etc/passwd.
Для восстановления файлов я создал отдельную директорию на новом сервере, в неё я произведу распаковку файла бекапа с сохранением всех правд доступа, информации о времени доступа и тп. Делается это утилитой tar и ключами которые вы видите на экране. В директории куда я произведу разархивацию будут не только нужные мне файлы, но и всё то что я бекапил на старом сервере, по этому я создал новую временную директорию и после миграции я смело её удалю.
mkdir myrecoverHTML
sudo tar -xvpzf html.tar.gz -C myrecoverHTML/

Переношу только нужные, востанавливаемые файлы. Далее переношу их на нужное место, я делаю командой cp с ключами -rp чтобы сохранить права доступа к файлам и скопировать все вложенные директории и файлы. После копирования в директории /var/www/html нужно удалить стандартный apache2 стартовый файл index.html, смигрированный wordpress имеет свой index.php.
sudo cp -rp /home/user/myrecoverHTML/var/www/html/* /var/www/html/

(*)Теперь перейдём к миграции БД. Это можно сделать утилитой phpmyadmin, но можно всё сделать и из командной строки. Для этого нужно создать на новом сервере БД с аналогичным именем той что была на прошлом сервере (если хотите конечно):
mysql -u root -p
create database myfirstdb;
create database WPDB_mylifeblog;

Далее нужно перенести данные из бекапа в эту БД. Для этого я воспользуюсь командой mysql с указанием имени БД и в качестве источника восстановления указу файл с бекапом БД с моего старого сервере:
mysql -u root -p myfirstdb < /home/user/myfirstdb.sql mysql -u root -p WPDB_mylifeblog < /home/user/WPDB_mylifeblog.sql

(*)Теперь нужно заняться настройками apache. Начну с переноса настроек. Из директории куда я распаковал свой бекап я забираю файл с настройками apache apache2.conf и переношу его в директорию /etc/apache2/. Предварительно можно сохранить оригинальный файл с настройками apache.
sudo cp -pr /home/user/myrecoverHTML/var/www/html/apache2.conf /etc/apache2/

(*)Далее следует заняться активацией модулей, сайтов и настроек apache. Это очень важный момент и его не стоит забывать.
Вы можете просто перенести директорию /etc/apache2 с сохранением всех файлов, симлинков и тп, у меня настроек мало по этому я просто произвёл перенос файла с настройками сайта в файл /etc/apache2/sites-available и активировал новый конфиг, так же я произвёл активацию модуля rewrite для того чтобы ссылки на моём сайте могли иметь / в указании пути к странице.
user@server:/etc/apache2$ ls -la conf-enabled/
user@server:/etc/apache2$ ls -la sites-enabled/

Делается это командой sudo a2enmod rewrite.

(*)Теперь необходимо создать симлинк на новый файл конфигурации сайтов с помощью команды (и удалить старый конфиг). У меня два сайта, по этому требуются спец настройки:
:/etc/apache2$ sudo a2ensite it-inside.conf
:/etc/apache2$ sudo a2dissite 000-default.conf
ls -la sites-enabled

(*)После того как все настройки произведены и все нужные модули, конфиги и сайты активированы, нужно просто перезапустить apache.
sudo service apache2 restart
Если возникнут какие-либо ошибки, то их нужно будет исправить.

(*)После того как apache на новом сервере работает и никаких ошибок не наблюдается, необходимо изменить DNS записи у своего домен-провайдера. Для надёжности вы можете сначала протестировать свой сайт на локальной машине - для этого нужно изменить-добавить локальную запись в файл hosts на своём компьютере указав в качестве ip-address адрес нового сервера. Если всё работает так как нужно, производим изменение A записи для своего сайта-домена у домен-хостера. Применение изменений может занять до 48 часов, но обычно это намного быстрее. У меня всё сменилось минут за 10.
Подробнее смотри в видео.

(*)После тестирования тестирования нужно остановить apache на старом сервере. Если вы планируете вообще отказаться от старого сервера, то необходимо проверить какие ещё службы запущены на вашем старом сервере и в случае чего перенести эти сервисы на новый сервер.
Далее сервер можно отключать.
После отключения веб. сервера на старом месте, ещё раз проверяем, что всё работает правильно.

----------------------
На этом всё.
Спасибо за внимание. Подписывайтесь на канал, задавайте вопросы в комментариях.
Удачи!