- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

Короче, я решил что нужно уже становиться взрослее и переезжать на VPS [1].
После быстрых мучительных раздумий, я выбрал Hetzner [2], просто потому что о нем было больше упоманинаний. Еще думал про Linode [3], но он оказался дороже, поэтому Hetzner.
Заказал самый простой тариф VQ 7 [4], в конфигурации выбрал Debian + LAMP, указал данные кредитной карточки, прислал им фотку водительских прав. И все. Все получилось, мне в ответ пришли пара писем к одном из которых был доступ к непонятному мне роботу [5] и в другом письме данные от моего уже готового VPS [1]: 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, пароль — тот, который прислали, и что же я вижу:
Как перенести сайт с виртуального хостинга на VPS и чтобы все заработало, через консоль. С картинками
Я честно, минут 10 искал где лежит мой файл index.html, чтобы узнать в какую папку заливать свой вордпресс, но не нашел.

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

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

Первым делом нужно как-то подключиться к своему VPS [1]. К сожалению там нет удаленного рабочего стола, там есть коммандная строка.
Для этого я запустил Терминал (программы-утилиты-терминал)
Те, кто используют windows — используйте putty [6], те кто испоьзует 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 [1].
Я не ожидал увидеть тут рабочий стол с ярлыками и папками, управление мышкой и какие-то картинки, но того, что данные строки это все, что я могу и буду видеть — я тоже не ожидал.
Но да ладно, нужно теперь определиться, где же все-таки лежит этот файл index.html, который я видел в браузере, и куда делать FTP доступ.
Для справки — он находтся в папке www, папка www находтся в папке var
Чтобы в этом убедиться нужно сделать так:

cat  /var/www/index.html

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

apt-get install vsftpd

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

nano /etc/vsftpd.conf

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


Стрелочками клавиатуры перемещаем курсор среди этого текста, находим то, что нужно отредактировать, редактируем. Грубо говоря, если видите одну из строчек, которая внизу, то ее нужно либо раскомментировать (убрать # перед ней) либо поменять 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

Как перенести сайт с виртуального хостинга на VPS и чтобы все заработало, через консоль. С картинками
И да, это тот самый 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 [7]
Для этого нужно переписать 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 [8] лежит в папке /site2, и таким же образом можно добавлять и больше и еше больше сайтов.
Сохраняем, перезапускаем apache.
Все.

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

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

Спасибо.

Автор: Serezhka

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/19743

Ссылки в тексте:

[1] хостинга: https://www.reg.ru/?rlink=reflink-717

[2] Hetzner: http://www.hetzner.de/

[3] Linode: http://www.linode.com/

[4] VQ 7: http://www.hetzner.de/hosting/produktmatrix_vserver/vserver-produktmatrix

[5] непонятному мне роботу: https://robot.your-server.de/

[6] putty: http://www.putty.org/

[7] www.bytopblogue.com: http://www.bytopblogue.com

[8] www.site2.com: http://www.site2.com

[9] Источник: http://habrahabr.ru/post/158153/