Как перенести сайт с виртуального хостинга на VPS и чтобы все заработало, через консоль. С картинками

Решил написать эту статейку прямо по горячим следам, так как только что закончил марафон по переносу своих сайтиков с вируального хостинга на VPS.
Конечно, для большинства прекрасных админов и любителей linux эта задача абсолютна тривиальна, но вот я, несмотря на упорство и знание английского, потратил на раскрытие темы кучу времени, по крупицам нагугливая — что и как, зачем и почему.
И теперь, я надеюсь, ребята которые также гуглят данный вопрос попадут на эту статью, и прочитают все от начала до конца, и настроят себе сайтики на VPS гораздо быстрее чем я.
Конечно же можно было бы купить специальную панель управления для своего сервера, или попросить хостера сделать перенос, но это не так интересно.

Ну и маленькое предупреждение — я ничего нового не придумал, и чисто интуитивно разобрался с происходящим, поэтому если у вас что-то не получится из того, что получилось у меня — то я ничем не помогу, если только морально поддержу немножко.
И до этого я пользовался только обыкновенным хостингом за три доллара, где обо всем думают за меня, и скиллы у меня немного другие, поэтому такая статья.

Как все начиналось

У каждого свои причины перехода на VPS, моя причина в том, что у меня на виртуальном хостинге свежий, только что установленный worpress, открывался примерно 3-5 секунд, на локальной машине в 10 раз быстрее. Написал своему любимому хостеру (ipage.com) они ответили, что, оказывается, для работы wordpress используются скрипты, да еще и к базе данных он подсоединяется, и поэтому все так долго и происходит. Нужно плагин для кэширования страниц ставить.
Я им вначале поверил, подумал что вордпресс действительно такой тормоз, но потом не поверил, потому что если бы он у всех работал бы с такой же скоростью, то никто бы его никогда не использовал.

Короче, я решил что нужно уже становиться взрослее и переезжать на VPS.
После быстрых мучительных раздумий, я выбрал Hetzner, просто потому что о нем было больше упоманинаний. Еще думал про Linode, но он оказался дороже, поэтому Hetzner.
Заказал самый простой тариф VQ 7, в конфигурации выбрал Debian + LAMP, указал данные кредитной карточки, прислал им фотку водительских прав. И все. Все получилось, мне в ответ пришли пара писем к одном из которых был доступ к непонятному мне роботу и в другом письме данные от моего уже готового VPS: IP-адрес, имя и пароль.

Как все продолжалось

«Хо-хо, отлично!» — подумал я. Набрал в браузере присланный мне айпи адрес, пуcть он будет 12.34.567.899
и увидел, что там вообще все прекрасно:

It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Значит самое время зайти по FTP, залить туда свой wordpress и радоваться.
Открываю Transmit, ввожу IP адрес, пользователь root, пароль — тот, который прислали, и что же я вижу:
706eacfc036e7d36f05edd968e9b1957
Я честно, минут 10 искал где лежит мой файл index.html, чтобы узнать в какую папку заливать свой вордпресс, но не нашел.

Как все развивалось

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

Первым делом нужно как-то подключиться к своему VPS. К сожалению там нет удаленного рабочего стола, там есть коммандная строка.
Для этого я запустил Терминал (программы-утилиты-терминал)
Те, кто используют windows — используйте putty, те кто испоьзует linux — вы и сами все знаете.
Дальше, в терминале пишем:

ssh root@12.34.567.899 

Нажимаем enter. (соответсвенно ssh — это ssh, root — это имя пользователя, 12.34.567.899 — это ваш IP )

Потом появится строчка

root@12.34.567.899's password: 

Здесь нужно внимательно набрать свой пароль (только вы его не увидите) и нажать enter
Все, круто, вход выполнен, вы в вашем VPS.
Я не ожидал увидеть тут рабочий стол с ярлыками и папками, управление мышкой и какие-то картинки, но того, что данные строки это все, что я могу и буду видеть — я тоже не ожидал.
Но да ладно, нужно теперь определиться, где же все-таки лежит этот файл index.html, который я видел в браузере, и куда делать FTP доступ.
Для справки — он находтся в папке www, папка www находтся в папке var
Чтобы в этом убедиться нужно сделать так:

cat /var/www/index.html 

после этого можно увидеть содержимое этого файла. Ну все верно, в общем, это наш файл.
Теперь нужно, чтобы к папке www можно было подключиться по FTP, чтобы заливать и редактировать файлы.
Для начала ставим специальный FTP-сервер (это же не виртуальный хостинг, тут его нет еще)

apt-get install vsftpd 

Все, он установлен. Теперь нужно отредактировать его конфиг.

nano /etc/vsftpd.conf 

35653a721c2988160cf734acf1665c89


Стрелочками клавиатуры перемещаем курсор среди этого текста, находим то, что нужно отредактировать, редактируем. Грубо говоря, если видите одну из строчек, которая внизу, то ее нужно либо раскомментировать (убрать # перед ней) либо поменять YES на NO или NO на YES

anonymous_enable=NO local_enable=YES write_enable=YES connect_from_port_20=NO chroot_local_user=YES local_umask=022 

Не буду вдаваться в подробности, для чего это нужно, потому что сам толком не знаю этих подробностей.

Дальше в самом конце данного файла дописываем эти вот строчки:

userlist_file=/etc/vsftpd.userlist userlist_enable=YES userlist_deny=NO 

Вот тут вдамся в подробности — эти строчки означают то, что в это конфиге мы прописали то, что будет существовать специальный список пользователей, которым будет в принципе разрешено пользоваться FTP.
Сохраняем файл (Ctrl+X — Y — Enter)
Вот, теперь, собственно, нужно создать тот самый список с пользователями, у которых будет доступ к FTP. Для этого нужно создать файл с именем vsftpd.userlist, в папке /etc (чтобы первая строчка в предыдущем блоке кода обрела смысл)

nano /etc/vsftpd.userlist 

Автоматически создавшись, откроется тот самый файл vsftpd.userlist, куда мы просто первой строкой впишем имя пользователя, для которого будет доступен FTP. К примеру ftpuser (а затем второй строкой второго юзера, третьей третьего (если потребуется) и т.д.)
И сохраним этот файл.

Теперь создано правило для FTP, по которому определенный пользователь может получить доступ, однако, пока еще не создано правило для самого сервера, поэтому нужно это исправить.

useradd -d /var/www -s /usr/sbin/nologin ftpuser 

Смысл этой строчки в том, что пользователь ftpuser добавляется как Пользователь, и все хорошо.

И сразу зададим пользователю пароль:

passwd ftpuser 

К слову, если написать не /var/www а /var/www/mysite или /etc/ то FTP доступ будет у этого пользователя именно к указанной папке, и всем папкам, которые в этих папках.
Все, теперь у этого пользователя есть возможность зайти по FTP в нужную папку, однако ничего изменять в этой папке он не сможет, потому что у него прав на это нет :-(

chown -R ftpuser /var/www 

 

chmod 775 /var/www 

Уже у финиша.
Теперь, чтобы не получить 500-ую ошибку, нужно, добавить одну строчку в файл:

nano /etc/shells 

в конце дописываем

/usr/sbin/nologin 

Сохраняем.

Теперь, не знаю зачем, нужно сделать группу пользователей и добавить в нее нашего юзера (а данном примере это группа разработчиков)

addgroup developers 

 

usermod -Gdevelopers ftpuser 

Все.
Совсем все.

Рестартуем наш FTP, и можно подключаться через Transmit используя вновь созданного пользователя с вновь созданным паролем.

service vsftpd restart 

424c1d0548626302e29d6bfde043a5ce
И да, это тот самый index.html.

На самом деле — не совсем все.
Поскольку тут должно рассказываться как перенести сайт, а не только как сделать FTP доступ. Поэтому помимо самого переноса файлов нужно еще и домен перенести и базу данных.
Но тут проще.
В самом начале, когда мы только подключались через терминал к нашему серверу, можно было прочитать, что

Note: Your MySQL password is in /password.txt (delete this with "erase_password_note") 

Читаем, что там написано:

cat /password.txt The MySQL root password is: BLhWSlw2 

Пароль от базы данных получен, теперь в браузере входим в phpmyadmin, использую root и этот пароль (12.34.567.899/phpmyadmin)
Переносим базу данных и редактируем конфиги нашего блога (о том как это делать вы нагуглите быстрее чем я напишу)

Отныне, по адресу 12.34.567.899, виден наш блог, но нужно же, чтобы он был виден по адресуwww.bytopblogue.com
Для этого нужно переписать DNS для домена.
У всех регистраторов это делайется по разному, но если в общих черных, нужно найти что-то типа Modify: A Record, и для вашего домена указать новый IP всесто старого.
Через 20, 30, 60 или 150 минут обновится кеш DNS и ваш сайт уже официально будет доступен на новом домене.

Тут-то можно и совсем закончить, однако есть еще важный момент.
У меня было там 4 сайта, для каждого сайта был свой домен и своя папочка с файлами. Все привязки и отвязки я делал через удобную панель управления.
Здесь панели управления нет, но есть конфигуратор apache
Все в том же терминале, открываем файл

nano /etc/apache2/httpd.conf 

В этом файле прописываем примерно следующее:

<VirtualHost localhost> ServerAdmin admin@localhost.com DocumentRoot "/var/www" ServerName localhost ErrorLog /var/www/log.log CustomLog /var/www/log.log common </VirtualHost> NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@site1.com DocumentRoot "/var/www/site1" ServerName www.site1.com ErrorLog /var/www/site1/log.log CustomLog /var/www/site1/log.log common </VirtualHost> <VirtualHost *:80> ServerAdmin admin@site2.com DocumentRoot "/var/www/site2" ServerName www.site2.com ErrorLog /var/www/site2/log.log CustomLog /var/www/site2/log.log common </VirtualHost> <VirtualHost *:80> ServerAdmin admin@site3.com DocumentRoot "/var/www/site3" ServerName www.site3.com ErrorLog /var/www/site3/log.log CustomLog /var/www/site3/log.log common </VirtualHost> 

Я думаю тут можно интуитивно разобраться, что сайт www.site2.com лежит в папке /site2, и таким же образом можно добавлять и больше и еше больше сайтов.
Сохраняем, перезапускаем apache.
Все.

Чем все закончилось

Да в общем-то все только начинается, потому что впереди еще миллионы вариантов оптимизаций, настроек, добавлений и удалений разных программ, но думаю что старт дан.
Также если опытные ребята найдут в статье какие-то неточности или появятся какие-то дополнения-улучшения — то я все дополню и подправлю. (ну по крайней мере у себя на сервере — точно)

Спасибо.

UPD
Я рад что статья вызвала горячие комментарии, потому что, возможно, среди самых грамотных комментаторов найдется тот, кого задела неграмотная подача материала в данной статье и он сам возьмет и напишет как надо сделать, чтобы было красиво и хорошо, сразу.
Я не рад, что скорее всего все ограничится только комментариями и всплесками активности интернет-воинов, а данный материал так и останется не раскрыт.

Аудитория данной статьи — те персоны, которые как и я до этого дня даже не предполагали что такое консоль, VPS и прочие приколы, но у которых возникла острая необходимость перенести сайт на VPS. А как показал гугл — я такой не один.

Конечно, есть неточности, косяки, возможно вредные советы, но это все почему? Потому что лично ты, уважаемый грамотный комментатор, еще не написал грамотной статьи на эту тему :)
Спасибо.