Предыдущую часть читаем здесь → Как поднять LEMP сервер для локальной разработки: часть 1 — VirtualBox и установка Ubuntu Server

Приветствую тебя, мой дорогой друг. Надеюсь, ты переварил первую часть, отдохнул и готов к очередному танцу с бубном. Шучу, на самом деле все, о чем я далее буду писать, это довольно тривиальные задачи, обычна рутина сисадмина. Однако для людей невовлеченных в тему некоторые вещи могут показаться довольно странными и малопонятными. Поэтому постараюсь излагать как можно проще, да простят меня бывалые :)

Отступление и немножко вводной теории. В первой части мы успели познакомиться с виртуальной машиной и инсталлировали Ubuntu Server в качестве гостевой системы. И что удивительно, в последней уже настроена сеть и подключен Интернет. Мы можем устанавливать пакеты, ping-овать IP адреса и домены (с DNS также все в норме), подключаться к другим машинам и серверам по различным портам и делать абсолютно все, будто работаем не в виртуальной машине, а в обычной операционной системе. Все вышеперечисленно является возможны благодаря сетевому интерфейсу NAT, который включен по умолчанию и работает «из коробки». В большинстве случаев его достаточно, чтобы вообще не вдаваться в тонкости конфигурации сетей (как говорят американские коллеги — «не чини, что не сломано»). В большинстве, но не в нашем. Все дело в отсутствующем статическом IP адресе, который нам жизненно необходим, дабы связать две машины (хост-систему и гостевую песочницу Ubuntu) в одну сеть. И я сейчас не имею ввиду проброс портов (здесь можно как-раз таки обойтись и без статического ай-пи адреса), а говорю о полноценной сети, в которой мы сможем дружить и общаться между двумя системами по любым протоколам и портам (ftp, ssh или http/https), стучать на конкретный IP-адрес и демон. В конце-концов выделить нашим будущим сайтам IP адрес и сделать их доступными извне. И поможет нам во всем этом так званый сетевой интерфейс «VirtualBox Host-Only Ethernet Adapter».

Настройки VirtualBox. Запускаем программу и переходим в раздел настроек: File => Preferences => Network (Файл => Настройки => Сеть).

VirtualBox — network NAT

По умолчанию включен ранее упомянутый NAT интерфейс. В этой закладке мы ничего не трогаем (NAT отлично работает). Интересует нас сейчас закладка Host-only Networks (Вирутальные сети хоста). Добавляем в ней новый интерфейс, для этого нужно кликнуть на маленькую иконку плюса. Система чуть подумает и соберет новый интерфейс с созвучным именем типа «VirtualBox Host-Only Ethernet Adapter» или просто «vbox0» (зависит от сборки и никакой роли не играет). Теперь тебе необходимо сконфигурировать только-что созданный адаптер. Жмем на иконку выкрутки и получаем окно, как на скриншоте ниже — Host-only Network Details (Детали Виртуальной Сети Хоста):

VirtualBox — Host-only Network Details

Adapter (Адаптер). Вы можете задать любые адреса и маски, однако не забудьте далее использовать их. Или просто следуйте моему примеру:

IPv4 Address (IPv4 адрес)
192.168.56.1
Pv4 Network Mask (IPv4 маска сети)
255.255.255.0

Поскольку мы будем работать в локальной песочнице, то параметры IPv6 нам задавать незачем, оставляем поля «IPv6 address» и «IPv6 Network Mask Length» пустыми.

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

VirtualBox — DHCP сервер

Настройки LEMP. Только что мы добавили новый сетевой интерфейс в VirtualBox, но теперь его нужно включить для нашей гостевой системы LEMP. Выбираем LEMP в списке операционных систем (по идее она у тебя должна быть единой :)), а далее из контекстного меню: Settings => Network (Настройки => Сеть). Перед нами появится список адаптеров. По умолчанию включен только один адаптер NAT (его не трогаем, он должен оставаться включенным). Переходим на вторую закладку Adapter2 (Адаптер 2) и включаем его => Enable Network Adapter (Включить Сетевой Адаптер). Из списка типов подключения указываем ранее созданный нами Host-Only Adapter (Виртуальный Адаптер Хоста) и сохраняем настройки.

VirtualBox — Enable 2 network adapter

Настройка Ubuntu Server. Мы успешно разобрались с VirtualBox в целом и с LEMP в частности. Теперь пришло время настроить конфигурацию самой Ubuntu Server. Ну что ж, запускаем систему, логинимся на правах рута и приступаем.

Midnight Commander. Если, мой друг, ты впервые столкнулся с консольной бездной, то я рекомендую все таки установить коммандер. Как показывает мой опыт, пользователям извращенным GUI, он как глоток свежего воздуха. Да и бывалые системные администраторы частенько изменяют монохромному с MC :) Выполняем следующую команду: $ sudo apt-get install mc
Важно! Мы должны запускать коммандер на правах суперпользователя, иначе не сможем редактировать конфигурационные файлы. Если ты не желаешь постоянно вводить пароль, а это делать придется частенько, можешь предварительно один раз ввести команду $ sudo su. Вот такой вид демонстрирует установленная файловая оболочка.

Ubuntu Server — Midnight Commander

Классический файловый менеджер для консольных систем. Возможно кто-то даже воскликнет, да это же старичок Norton Commander из MS-DOS! Похож, но не он :) . Немного освойтесь в оболочке, походите по каталогам, посмотрите на иерархию директорий, а затем закройте MC — [F10]. Еще один совет: в рутинной работе часто приходится переключаться между файловой оболочкой и командной строкой. И чтобы не закрывать и запускать постоянно MC, можете свернуть/развернуть программу комбинацией клавиш [Ctrl]+[o].

Сетевые интерфейсы. Все, что мы настраивали раньше в VirualBox, должно быть видно в нашей гостевой системе Ubuntu. Чтобы проверить доступные сетевые интерфейсы, выполняем команду $ ip add. В результате чего должно появиться информация, как на скриншоте ниже. Давайте разберем ее.

Ubuntu Server — ip add
lo
локальная петля (нам она не интересна)
enp0s3
NAT интерфейс
enp0s8
Host-only Networks / Виртуальная сеть хоста

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

/etc/netplan/*.yaml. Еще одна оговорка, до недавних времен за конфигурацию сети в Ubuntu Server отвечал файл «/etc/network/interfaces». В последних версиях системы, и так будет впредь, конфигурацию перенесли в файл «/etc/netplan/*.yaml». В Интернете существует куча топиков, как настроить статический IP адрес через старый конфигурационный файл «/etc/network/interfaces», которого разумеется у нас нет и быть не может. Примите на веру, от теперь настройка возможна только через конфигурационный файл «/etc/netplan/*.yaml»! Почему я вместо имени файла указал * (звездочку)? Название может быть разным. К примеру, у меня это файл «50-cloud-init.yaml». Не суть важно, файл в директории всего один, точно не промазать.

Вновь запускаем Midnight Commander — $ sudo mc. Переходим в каталог «/etc/netplan/» и находим там наш файл «50-cloud-init.yaml» (как я сказал выше, он там должен быть один). Будем его редактировать — [F4]! Поскольку мы впервые запускаем редактор, система предложит на выбор разные варианты. Но не для того мы устанавливали MC, чтобы сломать глаза vim-ом (vim — встроенный консольный редактор файлов). Задаем опцию «usr/bin/mcedit» (цифра 3) и жмем [ENTER]. А далее изменяем файл, как на скриншоте ниже.

Ubuntu Server — netplan, 50-cloud-init.yaml
network:
    ethernets:
        enp0s3:
            dhcp4: true
        enp0s8:
            addresses [192.168.56.20/24]
            dhcp4: no
version: 2

Как видно, конфигурация весьма простая. Для NAT интерфейса (enp0s3) мы оставили dhcp4. А вот для виртуальной сети хоста (enp0s8) явно задали ip адрес и отключили dhcp4. И да, в описании нет ошибки, мы пишем «dhcp4: truе», если хотим включить, и «dhcp4: no» — выключить. Вариант «falsе» не работает, впрочем как и вариант «yes» вместо true тоже не работает. Еще один важный момент, в конфигурационном файле запрещены символы табуляции, не используйте [Tab], только пробелы (количество пробелов не важно, все они игнорируются). Сохраняем файл — [F2] и выходим из менеджера — [F10]. Чтобы новые параметры вступили в силу без перезагрузки системы, задаем команду $ sudo netplan apply. Если все сделано верно, консоль не выдаст никаких ошибок. И нам остается только проверить и убедиться, что все работает, как и задумано.

Ping. Проверяем ping — $ ping google.com. Отлично, Интернет доступен, DNS работает.

Ubuntu Server — ping

IP адрес. Пришло время узреть наш статический IP адрес — $ ip add. Так вот ты какой, статический IP адрес — 192.168.56.20. Все, как мы и запрашивали в конфигурации. Теперь, зная свой постоянный IP адрес, можно проверить ping на него, но уже с нашей хост-системы. Выполните команду ping 192.168.56.20 в своей десктоп операционной системе и убедитесь, что она видит гостевую Ubuntu по указанному адресу.

Ubuntu Server — статический IP адрес

SSH соединение. Давай-ка попробуем подключиться по ssh к гостевой машине из нашей десктопной системы. Если в качестве хост-системы у тебя Linux, тогда просто набираем команду $ ssh to4ka@192.168.56.20, принимаем сертификат шифрования данных и вводим данные доступа удаленной машины. В Windows системах потребуется инсталлировать open ssh клиент putty. Для Windows 10 можно обойтись и без putty, просто включим дополнение OpenSSH Client (Windows => Settings =>  Apps =>  Manage optional feature). Теперь можно конектиться непосредственно из командной строки (cmd).

А теперь немного разбавим тесты GUI программой. Используем свой любимый файловый менеджер (FileZilla, Total Commander, Windows Commander … да что угодно) и подключимся по sftp протоколу.

Хост
sftp://192.168.56.20
Пользователь
to4ka
Пароль
qwerty
Ubuntu — Filezilla

Вуаля, и вся удаленная машина, как на ладони. Статический IP адрес дает нам неограниченные возможности в плане коммуникации наших систем, в этом мы еще убедимся в процессе настройки сервера. В конечном итоге, после установки всего необходимого (Nginx, PHP, Mysql, PhpMyadmin …) наша локальная песочница будет функционировать, как полноценный удаленный веб-сервер, но об этом уже в следующей части.


2020-04-02
  164