Простая настройка VirtualBox, установка и настройка PostgreSQL

Написано, чтобы не забыть, и относится в основном к учебным проектам

Качаем и ставим программы

Скачиваем и устанавливаем VirtualBox: https://www.virtualbox.org/wiki/Downloads

Скачиваем, например, Ubuntu (не принципиально какую, но я ставил 20.04, это последняя с длительным сроком поддержки): https://ubuntu.ru/get.

Есть смысл качать серверную версию: в ней нет графического интерфейса, зато ей не нужно выделять много ресурсов виртуальной машины (а установка не сложна).

Системные требования Ubuntu Server 20.04
  • CPU: 1 GHz+ (вполне хватит 1 GHz)
  • RAM: 1 Gb+ (вполне хватит 1 Gb)
  • Disk: 2.5Gb+ (больше 10 Gb не имеет смысла под данную задачу)
  1. Создаём в VBox виртуальную машину,
  2. монтируем в виртуальный IDE контроллер образ диска убунты,
  3. запускаем виртуальную машину,
  4. идём по установке (что с графическим интерфейсом, что без - не сложная установка, не особенно принципиально как вы будете ставить, можно всё оставить по умолчанию, как есть даже)
  5. В процессе установки попросит создать пользователя и пароль - запомнить что ввели
    (Внимание! Я плохо помню, как там в серверной версии, но при вводе пароля, может такое быть, что будет казаться, что он не вводится: курсор будет стоять на месте. Однако, это не так, всё в порядке, пароль вводится, так и задумано).
  6. Не забудьте потом размонтировать образ диска, чтобы после установки убунта грузилась с виртуального винта, а не снова с установочного диска

pgAdmin (для работы с БД) качать тут: https://www.pgadmin.org/download/

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

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

В настройках созданной машины открываем раздел "Сеть"

Во вкладке "Адаптер 1" тыкаем галочку "включить сетевой адаптер", если она ещё не поставлена. Там ставим NAT.

Во вкладке "Адаптер 2" тыкаем галочку "включить сетевой адаптер"

В типе подключения выбираем VirtualBox Host-Only Ethernet Adapter. Тыкаем в Дополнительно, там выбираем Тип адаптера Intel PRO/1000 MT Server (какие-то-цифры). (Насчёт этого не уверен, но в интернетах пишут, что с дефолтным не будет работать)

И жмём ОК.

Если нет в списке VirtualBox Host-Only Ethernet Adapter

Если нет в списке VirtualBox Host-Only Ethernet Adapter, то в окне программы тыкаем: Файл - Менеджер сетей хоста - Создать

Ещё советую программу обновить (да, даже сразу после установки - всякое бывает)

Почему именно такие настройки?

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

Установка PostgreSQL

После установки убунты открываем эмулятор терминала (CTRL+ALT+T или на рабочем столе правой кнопкой - открыть терминал)

Установка PostgreSQL:

sudo apt install postgresql postgresql-contrib

Если до этого ещё никогда не работали с unix системами, то надо отметить два момента:

Установка net-tools (не обязательно, но понадобится для проверки):

sudo apt install net-tools

(пошуршит, спросит - ввести "y", нажать Enter)

Настройка PostgreSQL:

Снова в терминале:

sudo gedit /etc/postgresql/12/main/postgresql.conf

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

Помним также о том, что 12 в адресе файла - это версия PostgreSQL, она может быть другой, но на момент написания она такая

Если поставили серверную версию, то вместо gedit пишите edit или nano, но с ними надо будет заранее посмотреть, как сохранить и как выйти (в nano сохранить - Ctrl+O - Enter, выход - Ctrl+X)

Попросит пароль (тот, что указывали при установке)

Открывается блокнот (на самом деле gedit/nano/edit), ищем там раздел connection and authentical

Строку

listen address = '127.0.0.1'

заменить на

listen address = '*'

чтобы сервер слушал не только локалхост (это вариант только для учебных целей, в продакшене, я думаю, так не стоит делать :)).

ПРОВЕРИТЬ, ЧТОБЫ СТРОКА НЕ БЫЛА ЗАКОММЕНТИРОВАНА! (т.е. в начале этой строки не должно быть #)

 

Раздел resource usage:

shared_buffers = 128MB

это кэш, меняем на четверть ОЗУ

сохраняем, закрываем.

в окне эмулятора терминала пишем:

ifconfig

Если нет ifconfig (хотя, он должен быть установиться вместе с net-tools):

Два варианта:

  1. поставить ifconfig
  2. пользоваться утилитой ip
Установка ifconfig:

sudo apt install net-tools

Использовать ip (субъективно менее удобно):

ip link show

покажет что-то такое:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3:  mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:e3:19:d0 brd ff:ff:ff:ff:ff:ff
3: enp0s8:  mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:92:f9:f8 brd ff:ff:ff:ff:ff:ff
4: docker0:  mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether 02:42:16:13:67:fb brd ff:ff:ff:ff:ff:ff

нас интересует интерфейс enp0s8, он должен был получить адрес типа 192.168.56.101 (или типа того, если у вас только один виртуальный адаптер сети VirtualBox и это первый. Если второй - то 102, итд.)

узнаем адрес:

ip addr show enp0s8

3: enp0s8:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:92:f9:f8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global dynamic enp0s8
       valid_lft 545sec preferred_lft 545sec
    inet6 fe80::a00:27ff:fe92:f9f8/64 scope link
       valid_lft forever preferred_lft forever

Всё верно: inet 192.168.56.101

нас интересует интерфейс enp0s8:

там скорее всего будет адрес, типа: 192.168.56.101 (после 56 что-то своё может быть). Запоминаем этот адрес - по нему будем подключаться через pgAdmin (если его использовать будете), а конкретно - он вводится в Host name

Значит, 192.168.56.1 - это адрес хоста (т.е. венды, в нашем случае).

Можно это проверить: в венде win+R, пишем cmd, Enter, ipconfig

Адаптер Ethernet VirtualBox Host-Only Network:

        DNS-суффикс подключения . . . . . :
        Локальный IPv6-адрес канала . . . : fe80::a95a:4c7a:da99:6117%6
        IPv4-адрес. . . . . . . . . . . . : 192.168.56.1
        Маска подсети . . . . . . . . . . : 255.255.255.0

Открываем другой конфиг, тоже через терминал:

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

Добавляем в самый низ строку:

host    all             all             192.168.56.1/0         trust

Сохраняем, закрываем.

Рестарт сервера (всё ещё в окне эмулятора терминала):

sudo systemctl restart postgresql

Проверяем:

netstat -nl | grep 5432

Должен вывести что-то такое:

netstat -nl | grep 5432

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN
tcp6       0      0 :::5432                 :::*                    LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     40661    /var/run/postgresql/.s.PGSQL.5432

если вывел такое:

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     38847    /var/run/postgresql/.s.PGSQL.5432  

То значит забыли в конфигах изменить listen address = '127.0.0.1' на '*' или не проверили, что строка закомментирована (напоминаю: в начале строки не должно быть символа #)

 

Создание пароля

sudo -u postgres psql

(от имени пользователя postgres запуск psql с правами суперпользователя)

там вводим:

ALTER USER postgres PASSWORD 'password';

\q

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

Эту пару пользователь-пароль нужно будет вводить при подключении к этой БД (в pgAdmin, например). В этом примере пользователь - postgres, пароль - password

Другой вариант создания пользователя и пароля:

создание пользователя:

sudo -i -u postgres

psql (\q для выхода)

createuser --interactive

создание пароля:

sudo -u postgres psql postgres

\password postgres

\q

Использованая литература:

Last upd: 12.02.2022 -- KOSumosu

на главную