Руководства по ubuntu server

Ubuntu Server is a version of the Ubuntu operating system designed and engineered as a backbone for the internet.

Ubuntu Server brings economic and technical scalability to your datacentre, public or private. Whether you want to deploy an OpenStack cloud, a Kubernetes cluster or a 50,000-node render farm, Ubuntu Server delivers the best value scale-out performance available.


In this documentation

Tutorials
Get started — a hands-on introduction to Ubuntu Server for new users
How-to guides
Step-by-step guides covering key operations and common tasks
Explanation
Concepts — discussion and clarification of key topics
Reference
Technical information — package specifications, APIs, architecture

Project and community

Ubuntu Server is a member of the Ubuntu family. It’s an open source project that welcomes community projects, contributions, suggestions, fixes and constructive feedback.

If you find any errors or have suggestions for improvements to pages, please use the link at the bottom of each topic titled: “Help improve this document in the forum.” This link will take you to the Server Discourse forum for the specific page you are viewing. There you can share your comments or let us know about bugs with any page.

  • Read our Code of Conduct
  • Get support
  • Join the Discourse forum
  • Download
  • Find out how to contribute to the Server Guide, or let us know your feedback and suggestions.

Thinking about using Ubuntu Server for your next project? Get in touch!

PDFs and previous releases

Below are links to the previous Ubuntu Server release server guides as well as an offline copy of the current version of this site:

Ubuntu 20.04 LTS (Focal Fossa) and later: PDF
Ubuntu 18.04 LTS (Bionic Beaver): Web and PDF

install-ubuntu-2204-lts-server-000.png

Ubuntu — один из самых популярных Linux дистрибутивов, широко применяющийся как в настольных системах, так и на серверах, а также в облаках и контейнерах. И, следует сказать, популярность эта вполне заслужена, долгое время Ubuntu шла в качестве более свежей и продвинутой версии Debian, но с некоторых пор идет своим путем, предлагая новые подходы и инструменты, но в тоже время сохраняя совместимость с родительским дистрибутивом. В данной статье мы пошагово рассмотрим установку и первоначальную настройку серверного дистрибутива Ubuntu 22.04 LTS.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Сразу отметим, никакого принципиального различия между серверной и настольной версиями Ubuntu давно уже нет, обе системы используют общую пакетную базу, но установщики у них разные. Настольная версия безальтернативно устанавливается в графическом режиме и ставит графическую оболочку, в то время как серверная имеет свой уникальный инсталлятор текстового режима Subiquity, который заменил использовавшийся ранее debian-installer.

Впервые Subiquity был представлен в выпуске 18.04 LTS, но только в качестве альтернативы, так как еще не поддерживал многие возможности, например, нельзя было создать программный RAID. К выпуску 20.04 LTS основные детские болезни были исправлены и Subiquity стал единственным инсталлятором серверного выпуска.

Начало установки

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

install-ubuntu-2204-lts-server-001.pngЕсли присутствует сеть, то установщик проверит наличие обновления программы установки и предложит ее обновить, причем произойдет это раньше, чем вам будет предложено настроить сетевой адаптер. Мы советуем согласиться с предложением и обновиться.

install-ubuntu-2204-lts-server-002.pngА вот раскладку клавиатуры по умолчанию мы советуем оставить английской, при этом русская будет добавлена автоматически и переключаться на нее вы сможете при помощи стандартного сочетания Alt + Shift.

install-ubuntu-2204-lts-server-003.pngСледующим шагом нас спросят, а что именно мы хотим установить. Доступны два варианта: Ubuntu Server и Ubuntu Server (minimized), второй вариант предусматривает использование в контейнерах и виртуальных машинах, не подразумевающих интерактивный вход и ручное управление. Это значит, что в такой системе отсутствуют утилиты ручного управления и если вы все-таки захотите администрировать ее руками, то вам придется развернуть ее до уровня Ubuntu Server. Поэтому установка minimized-версии для интерактивной настройки является бессмысленной.

install-ubuntu-2204-lts-server-004.png

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

install-ubuntu-2204-lts-server-006.pngЕсли же нам нужен статический IP-адрес, то мы можем настроить его прямо сейчас, для этого переходим к нужному сетевому интерфейсу и выбираем в настройках Edit IPv4, при этом можно обратить внимание на достаточно широкие возможности настройки сети, тут и объединение адаптеров через Bonding и VLAN-теги, но это уже выходит за рамки данной статьи.

install-ubuntu-2204-lts-server-007.pngНастройка сети также немного отличается от привычной, так как в первом поле мы должны указать подсеть (Subnet) в формате 192.168.233.0/24, где префикс /24 соответствует маске сети 255.255.255.0, остальные настройки не должны вызвать особых затруднений.

install-ubuntu-2204-lts-server-008.png

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

Разметка дискового пространства

Без преувеличения, разметка диска — самый важный этап установки системы, потому как с принятыми на данном этапе решениями вам придется жить все оставшееся время и не все из них можно будет впоследствии исправить без переустановки. Сегодня основной является схема «все файлы в одном разделе» и если вы не знаете как именно разметить диск, то следуйте ей. Также Ubuntu не использует раздел подкачки, создавая для этого файл в корне файловой системы, никакой существенной разницы с разделом подкачки у такого подхода нет, но в целом это удобнее. Выбор файловой системы также сводится к одному простому правилу, если вы не знаете какая именно файловая система вам нужна и для чего — выбирайте стандартную ext4.

Автоматическая разметка

Если у вас нет каких-то особых соображений, то использование автоматической разметки будет самым оптимальным вариантом, посмотрим, что предлагает нам Ubuntu в тех или иных сценариях. А вариантов не особо много: использовать весь диск и настроить диск как группу LVM, также можно отдельно включить шифрование LVM тома. В целом набор возможностей повторяют таковые в debian-installer, но выстроены более грамотно, в порядки иерархии применения. Пока что снимем флаг Set up this disk as an LVM group и посмотрим на самый простой вариант разметки.

install-ubuntu-2204-lts-server-009.pngВ этом случае будет автоматически размечен ESP раздел размером 953 МБ (для систем с UEFI) и ext4 на весь оставшийся размер диска.

install-ubuntu-2204-lts-server-010.pngНикаких сюрпризов и неожиданностей здесь нет, все просто и ожидаемо.

Автоматическая разметка с LVM

Вариант, предлагаемый по умолчанию и, казалось бы, никаких сложностей возникнуть не должно, но давайте внимательно изучим предлагаемую разметку. Прежде всего у нас кроме ESP раздела появился отдельный /boot размером 1,77 ГБ, так как загрузочный раздел должен располагаться за пределами LVM разметки. На оставшемся месте создана группа томов ubuntu-vg, внутри которой создается логический том ubutnu-lv, только вот его размер не соответствует размеру группы томов, в которой остается свободное место.

install-ubuntu-2204-lts-server-011.pngЕсли не обратить на это внимание и оставить все как есть, то при эксплуатации вы можете столкнуться с неприятной ситуацией, когда место неожиданно закончится. Поэтом сразу исправим разметку, для этого перейдите к логическому тому и в меню выберите Edit.

install-ubuntu-2204-lts-server-012.pngПосле чего укажите желаемый размер тома, максимальное значение указано рядом с полем Size, здесь же можно изменить тип файловой системы.

install-ubuntu-2204-lts-server-013.pngМы не знаем, является ли багом данное поведение, так как оно было зафиксировано еще в выпуске 20.04 и в обсуждении бага выражалось мнение, что мол так и задумано, так как LVM якобы не имеет смысла, если мы заполним группу томов полностью одним логическим томом. С некоторыми аргументами данной позиции можно согласиться, скажем с тем, что в таком случае нам будут недоступны моментальные снимки, но в целом такое поведение будет неожиданным, особенно для начинающего или невнимательного пользователя.

Тот, кому нужны снимки вряд-ли будет размечать диск автоматически, а тот, кто выбирает автомат рассчитывает на понятное поведение установщика. Если у нас указано использовать весь диск (Use an entire disk), то и размечать нужно все пространство полностью, а LVM впоследствии поможет нам более гибко управлять дисковым пространством. А текущий сценарий кроме недоумений и вопросов ничего предложить не может.

Настройка программного RAID

Настройка программного RAID в новом установщике Ubuntu достаточно серьезно отличается от настройки в debian-installer и может вызвать затруднения даже у опытного пользователя. Начнем с того, что пометим первый диск как загрузочный, для этого в меню диска следует выбрать Use As Boot Device.

install-ubuntu-2204-lts-server-014.png

Для UEFI систем будет автоматически создан ESP-раздел, создать такой раздел руками в Subiquity невозможно, затем проделываем ту же операцию со вторым диском, выбрав в его меню Add As Another Boot Device. После чего там будет создан второй ESP-раздел. Также это обеспечит установку загрузчика сразу на оба диска.

install-ubuntu-2204-lts-server-015.pngЗатем переходим к свободному пространству (free space) на дисках и создаем там раздел (или разделы) нужного размера, важное условие — в поле Format обязательно ставим Leave unformatted. Если в поле Size ничего не указывать, то будет создан раздел максимального размера. Аналогичные действия выполняем и для другого диска. Помним, что одно md-устройство — это один раздел.

install-ubuntu-2204-lts-server-016.pngПосле того как вы создали на обоих дисках одинаковые неформатированные разделы переходим в пункт Create software RAID (md), где указываем желаемый уровень RAID — в нашем случае зеркало — и выбираем используемые для него разделы.

install-ubuntu-2204-lts-server-017.pngПосле этого среди доступных дисковых устройств у нас появится md-устройство программного RAID, на свободном месте которого создаем новый раздел, где указываем файловую систему и точку монтирования (для системного раздела — /).

install-ubuntu-2204-lts-server-018.pngДля систем с UEFI данные действия только часть настройки, которую нужно продолжить после установки системы, более подробно об этом читайте в нашей статье:

Настраиваем программный RAID на UEFI-системах в Debian и Ubuntu

В целом настройка RAID в новом установщике достаточно проста и логична, но отдельные моменты делаются вразрез с устоявшимся опытом, это не хорошо и не плохо, просто нужно освоить эту методику и знать, что в Ubuntu теперь нужно делать так.

Завершение установки

Следующим шагом за разметкой дисков будет создание профиля, вас попросят указать ваше имя, имя компьютера, логин и пароль с подтверждением. Все просто, запутаться решительно негде.

install-ubuntu-2204-lts-server-020.pngСледующим шагом будет предложено установить SSH-сервер, не будем отказываться от этого предложения, также здесь есть возможность импортировать свой открытый ключ из GitHub или Launchpad. После импорта ключа появится возможность отключить аутентификацию по паролю через SSH иначе эта опция неактивна.

install-ubuntu-2204-lts-server-021.pngЗатем можно будет выбрать предустановленное ПО, но так как мы делаем минимальную установку, то пропускаем этот этап. Хотя, если вы поднимаете целевой сервер, то можете сразу выбрать необходимые вам роли.

install-ubuntu-2204-lts-server-022.pngЗа этим последует процесс установки, завершающей частью которого является скачивание и установка обновлений безопасности, при желании вы можете пропустить этот этап.

install-ubuntu-2204-lts-server-023.pngНа этом процесс установки завершен, вам останется только перезагрузить компьютер.

Вход в систему, повышение прав

После перезагрузки вы можете войти в систему как интерактивно, так и через SSH. Второй способ удобнее, так как консоль будет открыта на вашем рабочем столе, и вы можете просто копировать в нее нужные команды или, наоборот, результат их работы.

В Ubuntu учетная запись суперпользователя root отключена и административные права получает пользователь, созданный на этапе установки. Отдельные команды, требующие повышения прав можно выполнять через sudo, для долговременного повышения прав используйте:

sudo -s 

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

Если же вам по какой-либо причине требуется включить учетную запись суперпользователя, то это можно сделать, установив для нее пароль:

sudo passwd root

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

Настройка часового пояса

Инсталлятор Subiquity не предусматривает настройку часового пояса и после установки ваш сервер будет жить по времени Гринвичского меридиана, чтобы убедиться в этом выполните команду:

timedatectl

Поэтому правильная настройка времени входит в число первоочередных задач, это можно сделать разными способами, но наиболее удобной будет команда:

dpkg-reconfigure tzdata

Затем в интерактивном режиме выберите свой часовой пояс.

install-ubuntu-2204-lts-server-024.pngВсе изменения будут применены сразу.

Настройка сети

В Ubuntu для настройки сети используется утилита высокого уровня абстракции netplan. Работа с ней сперва может показаться непривычной, но netplan содержит многие приятные возможности, которые выводят работу с сетью на новый уровень. Более подробно о работе с netplan вы можете прочитать в нашей статье:

Настройка сети в Linux при помощи Netplan

Все сетевые настройки хранятся в файле /etc/netplan/00-installer-config.yaml, если вы выбрали динамическую настройку сети, то там будет примерно следующее содержимое:

network: 
version: 2
ethernets:
ens33:
dhcp4: true

Обратите внимание, что для файла настроек применяется формат YAML который использует для форматирования отступы в 2 или 4 пробела.

install-ubuntu-2204-lts-server-025.pngДля установки статического IP-адреса внесите в файл приведенные ниже настройки:

network:
version: 2
ethernets:
ens33:
dhcp4: false
addresses: [192.168.233.148/24]
gateway4: 192.168.233.2
nameservers:
addresses: [192.168.233.2,192.168.233.3]

Особых комментариев здесь не требуется, для записи IP-адреса используется запись вида адрес/префикс, что позволяет отдельно не указывать маску, а DNS сервера (nameservers) можно перечислить через запятую.

А вот дальше становится интереснее, чтобы проверить конфигурацию выполните:

netplan try

Если в течении двух минут вы не подтвердите сетевые настройки, то система откатится в первоначальное состояние. Это удобно, особенно если вы выполняете настройку сети удаленно, теперь в случае ошибки вам не придется собираться в дальнюю дорогу, достаточно просто подождать две минуты.

Если же все нормально, то просто примените настройки командой:

netplan apply

Одной только этой возможности уже достаточно, чтобы начать любить netplan, если вы не сделали этого ранее.

Настройка брандмауэра iptables

В отличие от Debian 11 в Ubuntu 22.04 LTS по-прежнему присутствует iptables, точнее nftables в режиме совместимости. И это во многом оправдано, новый межсетевой экран неплох, но на его внедрение нужно время, тогда как для iptables существует множество готовых инструкций и решений. Ниже мы набросаем минимальную конфигурацию брандмауэра и настроим ее автоматическое восстановление.

В консоли последовательно выполните команды:

iptables -A INPUT -i ens33 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ens33 -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -i ens33 -p icmp -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -i ens33 -j DROP

Данный набор правил разрешает уже установленные и связанные соединения, входящий ICMP и соединения по SSH, остальное блокируется. Но правила iptables не сохраняются при перезагрузке, чтобы исправить это установим пакет:

apt install iptables-persistent

В процессе установки нас спросят, хотим ли мы сохранить текущий набор правил, отвечаем утвердительно.

install-ubuntu-2204-lts-server-026.pngВ последствии правила удобнее править в файле /etc/iptables/rules.v4. При этом следует обязательно придерживаться следующих правил: первыми в цепочке идут два правила, выделенные желтым, последним обязательно должно быть правило, выделенное красным. Все остальные следует располагать между ними.

install-ubuntu-2204-lts-server-027.pngСохраняем файл и перечитываем правила:

iptables-restore < /etc/iptables/rules.v4

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

Подключаем Ubuntu Advantage

Ubuntu Advantage (UA) — это сервисный пакет от компании Canonical для пользователей Ubuntu, включает коммерческую поддержку и ряд расширенных сервисов направленных на повышение управляемости и безопасности ваших систем. Для личного и некоммерческого использования предоставляется бесплатный пакет на 5 ПК.

Наиболее интересными сервисами в пакете являются:

  • Extended Security Maintenance (ESM) — предоставляет обновления безопасности для всех бинарных пакетов находящихся в основном репозитории Ubuntu в течении дополнительных 5 лет, таким образом продлевая общий срок поддержки систем до 10 лет.
  • Livepatch — в буквальном переводе «живой патч» — еще один крайне полезный сервис, дает возможность устанавливать обновления безопасности ядра Linux без перезагрузки системы.

И если ESM не факт, что нам понадобится, то вот Livepatch будет весьма ко двору. Мы не будем рассматривать все подробности подключения и использования данной программы, об этом можно прочитать в нашей статье:

Включаем расширенную поддержку ESM и Livepatch для Ubuntu

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

ua attach <subscription token>

где <subscription token> — полученный в рамках программы токен подписки.

В результате выполнения команды вы увидите подробный отчет с указанием подключенных сервисов, среди которых будут ESM и Livepatch.

install-ubuntu-2204-lts-server-028.pngТеперь вам не понадобится перезагружать свой сервер после каждого обновления ядра.

Заключение

В данной статье мы постарались коротко, но емко изложить все основные действия, которые помогут вам освоить новый инсталлятор Subiquity и установить с его помощью серверный вариант Ubuntu 22.04 LTS, а также выполнить его первоначальную настройку. Также в статье присутствуют ссылки на иные наши материалы, позволяющие существенно расширить отдельные темы, рекомендуем обязательно ознакомиться с ними.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

После установки дистрибутива Ubuntu Server 22.04 на VPS, необходимо выполнить несколько шагов для настройки безопасности системы и ради упрощённого использования.

Этап 1 – Авторизация с учётной записи Root

Мы установим чистый сервер в облачном сервере и из учётной записи будет только “root”. При создании сервера на выбор подключения два варианта:

  1. По SSH-ключу;
  2. По логину и паролю.

У пользователя “root” больше привилегий по сравнению с обычными пользователями. При использовании некоторых команд от имени root, могут привести к неисправностям. Обычно изменение в файле конфигурации, перезапуск служб, открытие портов и другие. По этой причине необходимо создать нового пользователя и выполнять команды с использованием sudo. Риск определенно снизится. Привилегии и ограничения на пользователя выдаются со стороны root, при помощи команды usermod.

При подключении к серверу по SSH-ключу используйте инструкцию по данной теме. Во время создания сервера с использованием логина и пароля будет сгенерирован пароль для пользователя root, этот метод подключения считается менее безопасным.

Подключение к серверу происходит следующим образом:

ssh root@ip_address

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

В следующем этапе создадим системного пользователя для использования с определёнными привилегиями и ограничениями по использованию.

Этап 2 – Добавление нового системного пользователя

При первой авторизации как root, следует добавить в систему нового пользователя с использованием команды:

useradd -m test_user

Заменить test_user вы можете на своё усмотрение. Ключ -m создаёт в домашнем каталоге папку для пользователя test_user и делает пользователя владельцем.

Следует задать пароль для пользователя:

passwd test_user

Вводим новый пароль и подтверждаем, необходимо использовать сложный пароль и записать в заметках. Пароль потребуется при использовании команды sudo.

Этап 3 – Предоставление привилегий администрирования

Создав пользователя необходимо добавить в группу sudo. Используем команду:

usermod -aG sudo test_server

Ключ “a” указывает на добавление, ключ “G” указывает группу, затем следует название группы и добавляемый пользователь.

При создании пользователя, никаких прав доступа и привилегий нет. В обычные моменты следует перезапустить сервер, внести изменения в конфигурационный файл определённого или нескольких служб.

Этап 4 – Первоначальная настройка базового брандмауэра

Ufw – утилита брандмауэра, каждый установленный пакет добавляется в правило ufw. Наше подключение по SSH также проходит через соответствующее правило ufw. Проверка статуса приложений выполняется следующим образом:

ufw status

В выходе получаем данные об открытых портах и о приложениях которые добавлены в ufw.

Следующая команда позволяет вывести список приложений, которые работают в настоящее время непрерывно с ufw

ufw app list

#Выход
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Чтобы удостовериться, при подключении не возникнут проблемы, разрешим подключение по OpenSSH, выполнив следующую команду:

ufw allow OpenSSH

Включим брандмауэр и соглашаемся:

ufw enable

Проверим статус приложения и SSH-соединения всё ещё актуален:

ufw status

#Выход
Status: active
To Action               From
__ ________ _________
OpenSSH ALLOW Anywhere

Теперь ufw блокирует все внешние подключения кроме OpenSSH.

Этап 5 – Разрешение на подключение удалённо к пользователю

Открываем командную строку и вводим команду:

ssh test_server@ip_address

Необходимо ввести пароль при создании учётной записи. Выполним команду используя sudo (см. рисунок 1), например:

sudo apt install neovim

Установка текстового редактора neovim

Рисунок 1 – Установка текстового редактора neovim

После создания пользователя, командный интерпретатор стандартно используется shell. При необходимости изменения на bash, можно выполнить команду:

sudo chsh -s /bin/bash test_server

Следует заново авторизоваться от имени пользователя test_user и проверить командный интерпретатор:

echo $0
#Выход -bash

При подключении по SSH-ключу к root

В каталоге root пользователя хранится каталог .ssh, в каталоге файл authorized_keys отвечающий за ключи SSH, следует скопировать и вставить файл в каталоге пользователя /home/test_server/.ssh/.

Удобнее воспользоваться rsync с целью изменения путь каталога, владельца файла сохранив разрешения:

rsync --archive --chown=test_server:test_server ~/.ssh /home/test_server

Выполним подключение:

ssh test_server@ip_addres

Подключение будет успешным, остаётся только работать в системе для своей пользы!

Выводы

  • Ufw – помощник для безопасных подключений к серверу;
  • SSH-ключ не допускает подключение к серверу без уникального ключа;
  • Пользователь с правами sudo, уменьшает риск проявления ошибок в работе сервера, по сравнению команды выполняемые от имени root.

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

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

Начну с того, что скажу зачем мне вообще это понадобилось. А все просто, интересно. Я захотел создать десктопное приложение с базой данных, но я так уже делал и я захотел немного усложнить задачу, так как мне, в случае успеха, придется устанавливать эту программу для корпоративных целей, то базу данных надо переместить на сервер. Так что я взял старенький ноутбук и решил из него попробовать сделать сервер для базы данных. И столкнулся со множеством проблем, решение которых заняло у меня дня так три(если не учитывать то время, которое я пытался провозиться еще и с VirtualBox дня 2), хотя для некоторых может это и будет казаться легкотней, но для меня это было интересно и познавательно, ладно, начнем.

  1. Установка Ubuntu Server.

    Процесс установки Ubuntu Server, легко найти в интернете, например https://info-comp.ru/drugieopersistemi/644-install-linux-ubuntu-server-18-04.html. Хоть Ubuntu Server там и 18.04 я думаю эту руководство подойдет и для версии 20.04.

  2. Настройка сети.

    1. Ну перейдем к теме настройки сети. Цель настроить wifi. В интернете полно руководств по настройки проводного подключения, но мне так и не удалось найти руководство по настройке wifi, после которого бы у меня он заработал. wifi мне нужен в основном для того, чтобы во время разработки не быть привязанным к проводной сети. Но для того, чтобы его настроить все таки сначала понадобится проводная сеть. В принципе по умолчанию для проводной сети ip адрес определяется по DHCP, так что достаточно просто вставить Enternet-кабель и интернет заработает. Если это не так, то моя статья по этому поводу не поможет(уж извините). Дальше нам понадобится установить пакет net-tools. Для этого выполните команду:

    sudo apt-get install net-tools

    Теперь нам надо узнать названия сетевых интерфейсов. Для этого выполним следующую команду

    ifconfig -a

    Нас интересует интерфейс wlp2s0 у вас он может называть по другому, например wlan0. Он отвечает за беспроводное соединение. Теперь, когда мы узнали название сетевого интерфейса, можем переходить к настройке wifi. Мои проблемы с настройкой wifi были лишь из-за того, что в версиях Ubuntu Server, начиная с 18.04 настройка сети происходит с помощью утилиты Netplan. Конечно в сети полно информации про нее и как ей пользоваться, мне например очень помогла статья https://fomich0ff.github.io/2019/05/05/wifi-on-rpi-ubuntu-server/. Тут все очень кратко расписано. Но даже после этих статей у меня так и не заработал wifi. Ну начнем. Для начало надо попасть в файл конфигурации, для этого набираем команду:

    sudo nano /etc/netplan/*.yaml

    Появиться окно с настройками. Далее я приведу уже свои настройки(естественно скрыв SSID и password).

    Для проверки нашего конфигурационного файла вводим команду:

    sudo netplan --debug generate

    И для того, чтобы настройки вступили в силу, вводим команду:

    sudo netplan --debug apply

    Но это еще не все, даже после таких действий у меня так и не заработал wifi. Нам надо скачать еще один пакет, который называется wpasupplicant, он позволяет работать с сетями, которые имеют метод шифрования WPA, WPA2 и т.д. Может это все и выглядит банально, но у меня ушло много времени, чтобы найти ошибку. Вводим следующую команду:

    sudo apt-get install wpasupplicant

    После этого у меня сразу заработал wifi(если не заработал, то можно попробовать перезагрузить систему). Теперь, когда появился wifi, можно перейти к настройке ssh.

  3. Настройка SSH

    1. Настроим конфигурационный файл, для этого выполним команду:

    sudo nano /etc/ssh/sshd_config

    Откроется примерно такой файл:

    # — закомментированные поля. Описание всех полей можно найти в интернете. Я лично раскомментировал следующие:

    Port — по умолчанию идет 22, но для безопасности лучше поменять, я поставил 2023.

    Protocol — протокол SSH. Первый протокол плохо защищен, так что ставим 2.

    PermitRootLogin — если поля имеет значение no, то при подключение через SSH невозможно будет войти за root.

    PubkeyAuthentication — разрешает/запрещает входить по публичному ключу(расм. далее)

    AuthorizedKeysFile — показывает файлы с публичными ключами

    PasswordAuthentication — если поле имеет значение yes, то возможно будет войти с помощью пароля пользователя, иначе можно будет войти только по ключу(если PubkeyAuthentication yes)

    Все остальные поля я оставил как они и были(там были и другие раскомментированные поля)

    После настройки необходимо перезагрузить ssh, для этого выполним команду:

    sudo systemctl restart ssh

    Дальше во всех статьях, которые мне попадались, говорили, что можно смело подключаться по SSH, но как я не пытался в ответ я получал только connection refused(соединение отклонено). Кстати, чтобы подключиться необходимо ввести команду:

    ssh -p port username@hostname

    port — порт подключения, в моем случае 2023

    username — имя пользователя(в моем случае vavilonbase, например)

    hostname — имя хоста(к этому вернемся далее)

    В качестве hostname я сначала использовал localhost, но все мои попытки не увенчались успехом, я долго мучался с этим подключение, пока наконец не нашел ответ, а именно, то что у меня были закрыты порты на роутере, открыть их мне помогла статья https://lumpics.ru/how-to-open-ports-on-router/.

    Я лишь покажу конечный результат переадресации портов:

    После этого у меня все заработало. Теперь, в моем случае, для подключения по ssh нужно ввести команду:

    ssh -p 2023 vavilonbase@192.168.1.18

    И после этого ввести пароль, все готово.

    При первом подключение может возникнуть сообщение:

    Картинка с сайта: https://losst.ru/kak-podklyuchitsya-po-ssh

    Здесь надо написать yes и нажать Enter.

  4. SSH-ключ

    Входит по паролю конечно хорошо, но еще лучше входить без пароля, но защищено, а именно по SSH ключу. В интернете полно руководств как сгенерировать SSH-ключ на Linux и перебросить его на ubuntu-server, например эта статья: https://losst.ru/avtorizatsiya-po-klyuchu-ssh

    Но в интернете мне было сложно найти точное описание как же это сделать в Windows(а у меня основная машина WIndows). Так что я покажу все это на примере WIndows. Начнем.

    Для начало надо установить на Windows клиент OpenSSH(кстати, его же надо установить и для подключения по ssh по паролю).

    Для этого надо сделать все как на картинках:

    В этой вкладке смотрим, если ли клиент OpenSSH

    Если нет такого клиента, то жмем добавить компонент, находим клиент OpenSSH и устанавливаем его.

    Теперь, когда у нас есть клиент OpenSSH перейдем к генерации ключа.

    Для генерации ключа вводим в терминале Windows команду:

    ssh-keygen

    Дальше вас спросят следующие данные:

    Куда сохранять эти ключи, обычно меняют путь, который предлагается по умолчанию(если хотите оставить путь по умолчанию, просто нажмите Enter)

    Дальше, в случае, если вы уже генерировали ключи, спросят хотите ли вы их перезаписать

    Потом попросят ввести фразу и повторить ее. Это нужно для дополнительной защите, это фразу вы будете вводить каждый раз при подключение по SSH, чтобы не вводить ее, нужно просто нажать Enter ничего не вводя.

    Все ключ сгенерирован, дальше то с чем у меня по началу возникали проблемы. А именно, для клиента OpenSSH Windows нет команды sshcopyid, благодаря которой происходила отправка ключа на сервер в WIndows. Я лично использовал для этих целей команду scp.

    Теперь, что нужно, чтобы ее использовать, если в случае команды sshcopyid она автоматически создавала все нужные файлы на сервере, то сейчас нам придется создать их вручную. Для этого заходим на сервер и вводим следующую команду:

    sudo mkdir .ssh

    То есть создаем папку .ssh(если она еще не создана)

    Теперь надо отправить наш публичный ключ на сервер, для этого выясним адрес публичного ключа, он был показан во время его генерации:

    Теперь выполним следующую команду:

    scp -P 2023 C:\Users\Vavil/.ssh/id_rsa.pub vavilonbase@192.168.1.18:~/.ssh

    Посмотрим, что здесь что:

    -P — стоит заметить, что P — большая, это важно, тут мы вводим порт.

    Дальше идет адрес публичного ключа в Windows(где его взять см. выше)

    Дальше идет имя пользователя и имя хоста(прямо как при подключение по SSH), после этого идет двоеточие и папка куда надо отправить этот ключ на сервере(в ту самую папку, которую мы создали).

    Но это отнюдь не все, если вспомнить, то когда мы настраивали sshdconfig, то мы как раз таки указывали какие файлы у нас отвечают за ключ, а именно ~/.ssh/authorizedkeys, то есть нам надо переименовать файл. Переходим на сервер и вводим следующие команды:

    sudo cd .ssh
    sudo mv id_rsa.pub authorized_keys
    sudo systemctl restart ssh

    Все готово. Пробуем войти и радуемся.

  5. Настройка БД

    Ну перейдем к тому, для чего все это и было затеяно. В качестве БД у меня PostgreSQL.

    Для установки БД можно воспользоваться этой статьей: https://losst.ru/ustanovka-postgresql-ubuntu-16-04. Дальше создадим пользователя app и тестовую базу данных appdb. Выполним команды:

CREATE USER app PASSWORD 'passwordOfApp';
CREATE DATABASE appdb OWNER app;

Когда база данных создана, хотелось бы подключится к ней с другого компьютера, для этого настроим конфигурационные файлы postgresql.conf и pg_hba.conf. Для их редактирования выполним команды:

sudo nano /etc/postgresql/12/main/postgresql.conf
sudo nano /etc/postgresql/12/main/pg_hba.conf

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

listen_addresses = ‘localhost’ поменять на listen_addresses = ‘*’ и для безопасности изменить порт по умолчанию(5432).

Во втором файле необходимо изменить следующую строку(см. картинку)

А именно адрес в ней, в моем случае у меня адрес компьютера статический и я могу записать его сюда. Вы так же можете сделать его статическим(см. статью про открытие портов, там до переадресации делали адрес сервера статическим). То есть здесь мы указываем адреса, который могут подключится к базе данных, в случае, если такой не один, просто копируем всю строку и меняем адрес на новый. После этого перезагружаем сервер postgresql. Выполним команду:

sudo service postgresql restart

Попробуем подключиться к базе данных через небольшое приложение на C#.

То есть тут мы запрашиваем у сервера его версию, получаем следующий ответ:

Как видно сервер вернул ответ с версией, а значит все настроено верно.

Ну на этом все. Как я и сказал, я в Linux полный новичок, так что если есть какие-либо советы я только рад. Это статья служит скорее как шпаргалка мне, так как мне это и правда был интересный опыт и я бы хотел запечатлить его в виде такой вот статьи. Спасибо всем за внимание.

Понравилась статья? Поделить с друзьями:
  • Настройка часов smael инструкция на русском языке
  • Инструкция на холодильник хотпоинт аристон русском языке
  • Healthband health watch pro 5 инструкция на русском
  • Тивортин цена инструкция по применению цена отзывы аналоги цена
  • Металлоискатель шанс своими руками подробная инструкция