Переносим сайт на свой сервер
Система FreeBSD 8.2. Настройка производилась по этому>>> мануалу.
Для начала — создадим пользователя, у которого будет доступ к каталогу сайта:
# adduser
Username: abobrov
…
Home directory [/home/bobrov]: /usr/local/www/apache22/data/user/abobrov/
Home directory permissions (Leave empty for default):
…
Username : abobrov
Password : *****
Full Name : abobrov
Uid : 1003
Class :
Groups : abobrov
Home : /usr/local/www/apache22/data/user/abobrov/
Home Mode :
Shell : /usr/local/bin/bash
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (bobrov) to the user database.
Add another user? (yes/no): no
Goodbye!
На всякий случай, проверим корректно ли работает доступ по FTP, в качестве которого выступает ProFTPD, о настройке которого есть статья тут>>>:
$ lftp bobrov@77.120.106.40
Пароль:
lftp bobrov@77.120.106.40:
> ls
lftp bobrov@77.120.106.40:/>
ОК, теперь можно приступать к переносу файлов.
Заходим на старый сервер:
Посмотрим что тут есть:
Сделаем копию файлов:
$ tar cfp bobrov.tar www.a-bobrov.kiev.ua
Подключимся по FTP к новому серверу:
$ lftp bobrov@77.120.106.40
Password:
> mput bobrov.tar
17468928 bytes transferred in 2 seconds (10.41M/s)
lftp bobrov@77.120.106.40:/> ls
-rw-r—r— 1 bobrov bobrov 17468928 Feb 22 21:54 bobrov.tar
lftp bobrov@77.120.106.40:/>
Теперь извлечем архив:
Посмотрим что у нас тут:
Т.к. сайт ещё работает на старом сервере и настройки домена мы не меняли, то настроим свой компьютер на работу с новым сервером:
$ sudo nano /etc/hosts
(пользователям Windows искать файл надо в каталоге C:Windowssystem32driversetchosts )
Добавим запись вида:
Теперь, при запросе с нашего компьютера будем попадать на новый сервер.
Приступим к настройке сервера Apache.
Создадим отдельные файлы логов для виртуалхоста:
# touch /var/log/apachelogs/abobrov-access.log
# touch /var/log/apachelogs/abobrov-error.log
В файл конфигурации виртуалхостов, о создании которых есть статья тут>>>, добавляем новый блок:
ServerAdmin admin@a-bobrov.kiev.ua
DocumentRoot www/apache22/data/user/abobrov/a-bobrov.kiev.ua
ServerName a-bobrov.kiev.ua
ServerAlias www.a-bobrov.kiev.ua
ErrorLog /var/log/apachelogs/abobrov-error.log
CustomLog /var/log/apachelogs/abobrov-access.log common
Попробуем зайти на сайт, и получим ошибку соединения с базой данных. Отлично, почти все работает :-).
Осталось перенести дамп базы и изменить конфигурацию сайта.
Перейдем в управление MySQL:
Создадим новую базу:
mysql> create database abobrov_db1;
Query OK, 1 row affected (0.00 sec)
Создадим пользователя и назначим ему привилегии:
mysql> grant all on abobrov_db1.* to ‘abobrov_db1’@’localhost’ identified by ‘mypassword’; Query OK, 0 rows affected (0.00 sec)
Теперь загрузим дамп со старого сервера БД, который мы предварительно залили в домашний каталог нового пользователя:
Осталось отредактировать файл конфигурации сайта — изменить данные доступа к серверу MySQL.
Собственно, на этом перенос можно считать завершенным. Правда, при загрузке сайта появляется ошибка:
Fatal error: Call to undefined function curl_init() in /usr/local/www/apache22/data/user/abobrov/www.a-bobrov.kiev.ua/wp-content/plugins/postcloud/postcloud.php on line 151
Но это уже решается путем установки дополнительных расширений PHP, в данном случае:
# cd /usr/ports/ftp/php52-curl
# make install clean
Cookie
Опубликовано TheJoe на 29 сентябрь 2019 29 сентябрь 2019
предосторожность
Эта статья была опубликована более чем год назад, там, возможно, были события.
Пожалуйста, примите это во внимание.
Иногда бывает, что хостер доверия, что, к которому мы доверили управление этого сайта, решает закрыть свои двери, или коренным образом изменить условия плана хостинга.
В этих случаях мало что можно сделать. Одним из решений является смена хостеров. В этой статье мы позаботимся о том, чтобы настройки Apache были такими же, как они были установлены на старом сервере.. У вас должен быть SSH доступ к машинам.
1_ Копируем конфигурационные файлы Apache:
Эта команда скопирует настройки Apache со старого на новый компьютер. Теперь мы включаем все сайты, скопированные с символическими ссылками для каждого файла .конфиг скопированы в сайты с поддержкой.
Или используйте команду a2ensite это будет делать то же самое.
Перезапускаем Apache, чтобы изменения вступили в силу.
2_ Копируем сайт
Все основные CMS (или, может быть, все CMS) они сделаны из файлов, и с помощью этой команды мы скопировали их все. Надо сказать, что содержание, Комментарии, Категории и настройки сайта сохраняются отдельно в базе данных.. Итак, давайте скопировать это тоже.
3_ Мигрируем MySQL
Мы запустим эти команды после входа на старый сервер.
Здесь мы создали резервную копию базы данных на старом сервере., перенести его в новую и заполнить новую базу данных содержимым старой.
4_ Миграция DNS
Осталось только сбросить DNS, чтобы они указывали на IP нового сервера.. Эта операция должна быть согласована с хостером.
Как переместить директорию Apache на ОС Windows
Предположим, что потребовалось переместить директорию с веб-сервером Apache в другое место, напр., на другой локальный диск. Многие подумают: «Что за глупости? С чего это вдруг мне в голову должна придти мысль о внезапном перемещении директории с программой?». Есть множество программ, которые не сильно зависимы от окружения ОС. Такие программы не сильно привязаны к реестру ОС Windows, они переносные и их можно использовать без установки. Практически у всех программ есть такие переносимые версии называемые «портативными» (portable). Многие программы, несмотря на наличие инсталлятора, по сути такими и являются, даже будучи установленными по всем канонам ОС Windows.
Веб-сервер Apache относится именно к таким переносным программам. Есть смысл хранить такие программы в отдельной директории на другом жёстком диске, т.е. не на диске C в директории «Program Files». Зачем это надо? Да всё просто! Этим программам безразлично окружение, они работают практически в любых условиях. Зачем переустанавливать эти программы вместе с очередной переустановкой ОС? Такие экземпляры можно хранить отдельно, они спокойно переживают конец света переустановку ОС, и работают как ни в чём не бывало после некоторых незначительных настроек, в то время как многие другие программы надо ставить заново на новую ОС, что у многих регулярно слетает.
Алгоритм действий по переносу
Ситуацию с переносом программной директории в другое место пояснил. Как же перенести директорию веб-сервера в другое место? Нужно изменить пути в конфигурационных файлах программы и службы.
Служба программы в ОС
Изменение существующей службы
Нужно переписать путь исполняемого файла службы Apache. Служба обращается к конкретному исполняемому файлу, ей обязательно нужно знать новое местоположение исполняемого файла веб-сервера. Идём в следующую ветку реестра ОС Windows: «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices». Здесь, в списке служб, ищем название нужной службы, в данном случае это «Apache», и выбираем её. В окне редактора реестра Windows ищем параметр «ImagePath», нажимаем на него и в контекстном меню жмём пункт «Изменить», открывается новое окно, в нём, в строке «Значение» вставляем новый путь к исполняемому файлу. Служба готова к работе!
Создание новой службы
Если по каким-либо причинам не хочется изменять настройки имеющейся службы Apache, то её можно удалить, чтобы создать новую. Удалить и создать службу можно как средствами самого Apache, так и средствами ОС.
Удалить службу Apache:
Когда старой службы Apache нет, можно создать новую:
Сделанные изменения можно узреть в свойствах службы выбрав её здесь: Пуск ⇒ Панель управления ⇒ Администрирование ⇒ Службы ⇒ Apache.
Файлы конфигурации программы
Теперь осталось поменять пути в конфигурационных файлах самого веб-сервера. Открываем файл «httpd.conf», и средствами текстового редактора заменяем все старые значения адресов на новые. Там достаточно много, описывать не буду, всё делается легко и быстро в автоматическом режиме поиска и замены. Так же не забудьте поменять пути в файле виртуальных хостов «httpd-vhosts.conf», и в файле конфигурации PHP — «php.ini», если он у вас задействован на сервере.
Вот и всё, сервер перенесён и готов к работе.
Ставим Lamp и переносим www директорию. Или свой web хостинг на Ubuntu/Debian.
В данной статье мы рассмотрим как установить пакет Lamp, перенесем web диеркторию из /var/www, и заставим apache работать под нужным нам пользователем.
Шаг 1 Устанавливаем apache командой:

Шаг 2 Устанавливаем MySQL
Задаем пароль для root-пользователя в процессе установки.
Шаг 3 Устанавливаем PHP
После установки перезагружаем Apache.
Проверим работу php, создадим файл test.php в /var/www.
Откроем файл для редактирования
И внесем следующий код
Шаг 4 Устанавливаем PhpMyAdmin
Для установки выполняем команду
Когда установка завершится, перейдем на http://localhost/phpmyadmin и войдем в phpmyadmin ( используя имя пользователя MySQL (по умолчанию «root«) и пароль ( его вы задали в процессе установки).

Переносим директорию www в домашню папку пользователя.
По умолчанию web директория находится в папке /var/www и права доступа выставлены пользователю www-data, что для нас не очень удобно.
Создадим в домашне диретории www и log. В первой будут лежать файлы нашего сайта, во второй логи.
Открываем файл /etc/apache2/sites-available/default.
И находим следующие строчки:
И заменяем их на следующие:
Перезапускаем Apache
Шаг 5 Устанавливаем apache2-mpm-itk и допиливыем apache.
Для того, чтобы каждый раз не выставлять права на файлы, настроим apache, чтобы он выполнял скрипты из под нашего пользователя.
Устновим пакет apache2-mpm-itk:
Добавим строчку в файл /etc/apache2/sites-avialable/default перед стройчкой :
Теперь все нащи скрипты будут выполнятся от нашего пользователя.
Миграция с одного физического сервера на другой
Типичная ситуация, стартует проект, под него берут самый простенький сервер, который трудится полгода, проект вырастает и просит большой и злобный сервер.
Обычно ставят на новую железку новую ОС, поднимают софт, настраивают, переносят контент, базы и прочее, меняют DNS и через двое суток выключают старый сервер. Казалось бы простая процедура, сотни раз её делал любой сисадмин. НО, в процессе как показывает практика что-то забывается и уже на боевом сервере нужно делать правки и настройки, тащить старые костыли и адаптировать их на новом месте.
Этот вариант иногда неизбежен, например когда сервера в разных датацентрах. Но если сервера (новый и старый) стоят в соседних стойках, то можно просто перенести ОС на новую железку а старую сразу погасить. О том как это сделать я и напишу небольшую статью-чеклист. Итак поехали!
Умолчания:
— Сервера в одном датацентре у одного колокатора/дедикатора
— Вы договорились с колокатором/дедикатором о том что перецепите ip адреса со старого сервера на новый. Если этого не сделать могут быть косяки в случае если сервера в разных VLAN-ах.
— Вам дают IP-KVM как минимум на новый сервер, в идеале может понадобиться и на старый если вдруг хочется сохранить его доступность.
— Колдовство буду показывать на примере CentOS 5.x
— У вашего серверодателя есть pxe сервер с аварийным (т.н. rescue) образом CentOS 5.x и вашей платформы.
— Вы знаете root пароль от исходного сервера.
— Вы переписали, на чистый лист бумаги, со старого сервера настройки сети и разметку диска.
Итак, все условия выполнены, начинаем работу!
Загружаем новый сервер по сети, для этого у Supermicro например, нужно включить в BIOS pxe boot для первого сетевого адаптера, перезагрузить сервер и нажать F12. В случае если на сетевом коммутаторе включен STP на аксесных портах при появлении сообщении о попытке получить ip по dhcp нажать кнопку pause и выждать 30 секунд. После чего жмем пробел и загружаемся в CentOS 5.x 64 rescue.
Создаем файловую систему:
Монтируем корневую партицию в /mnt/sysimage
Создаем структуру каталогов в /mnt/sysimage/, например так:
Монтируем партиции в строгом соответствии со старым сервером:
Начинаем синхронизацию данных со старого сервера, вот тут нам понадобится root доступ на старый сервер. Предположим что на старом сервере у нас ip 1.1.1.1
Как только данные синхронизируются переходим на старый сервер и останавливаем все службы, например mysql/httpd/nginx/proftpd и прочее что у вас есть.
Теперь чрутимся в «новый сервер» и начинаем вносить изменения которые необходимы для того чтобы сервер загрузился:
Если на старом сервере у вас были sda/sdb/sdc а на новом md0/md1/md2 или наоборот то нужно сделать соответствующие правки в /etc/fstab и /boot/grub/grub.conf
Записи в fstab из:
И переходим к правкам grub.conf
Пожалуйста, обратите внимание на panic=30 в строке инициализации ядра, это нужно на случай если где-то ошиблись и сервер выпал в Kernel Panic. Без этой panic=30 сервер будет ждать Hardware reset, с ней же он через 30 секунд перезагрузится.
Теперь нам нужно поставить grub:
Граб не ругнувшись установился, значит всё нормально. На всякий случай проверяем:
Теперь нам надо создать новый initrd, т.к. в старом может не оказаться например mdadm.
Включаем firstboot командой:
И перезагружаем сервер несколько раз нажав Ctrl+D
Пока сервер перезагружается идем на старый и в зависимости от того нужен он нам дальше или нет отключаем сеть или меняем ip адрес. Если ненужен то для всех сетевых адаптеров в конфиге /etc/sysconfig/network-scripts/ifcfg-ethX (где X номер сетевого адаптера) правим ONBOOT=yes на ONBOOT=no и «останавливаем» сеть /etc/init.d/network stop. Если старый сервер нужен нам то в тех же конфигах задаем новые сетевые настройки и «перезапускаем» сеть /etc/init.d/network restart
Итак со стары сервером мы закончили, переходим к новому. В IP-KVM мы уже видим синее окошко ncurses которое выдал нам firstboot, переходим к настройке сети и вбиваем старые настройки сети. После чего перезагружаем сервер для чистоты эксперимента.
Возможно всё вышесказанное покажется вам сложным и рука потянется написать комментарий в духе «ну и зачем этот геморрой?», не спешите, на практике все операции выполняются очень быстро и даунтайм минимален.
Если вы нашли ошибку в тексте, пожалуйста напишите мне в личку, я буду крайне благодарен.
Если нужно прояснить какие-то моменты, не стесняясь спрашивайте! Выше описанную процедуру проводил как минимум пол-сотни раз.
Если вопросы миграции вам интересны, могу рассказать о миграции контейнера OpenVZ с сервера на который нет root доступа или о миграции физической машины в контейнер OpenVZ.




