1. Вступление
В рамках этой статьи рассмотрим подробную установку средства виртуализации Oracle VM VirtualBox (далее просто VirtualBox) и создания виртуальной машины под управлением Ubuntu 18.04 Server.
Почему будем использовать именно VirtualBox?
Причин несколько:
1) Он прост в установке на любую операционную систему (Windows, MacOS, Linux);
2) Имеет обширное комьюнити пользователей, а значит — можно найти ответ на любой вопрос;
3) Поддерживает создание множества виртуальных машин под разными ОС (Windows, FreeBSD, Ubuntu, CentOS, RedHat и др.);
4) Создание отдельных виртуальных сетей между виртуальными машинами;
5) Cоздание и восстановление снимков системы (снапшотов) и довольно обширную интеграцию с ОС хоста;
6) Бесплатный;
Зачем это нужно?
1) Для обучения;
2) Для тестирования каких-то программ, сборки пакетов под определённую конфигурацию системы;
3) Для решения задач «домашнего сервера» при наличии мощной машины хоста;
Версии ПО используемые для установки в данном руководстве:
— Windows 10, версии 1903;
— VirtualBox 6.1;
— Ubuntu 18.04 Server LTS;
2. Подготовка
2.1 Скачивание, установка и настройка Oracle VM VirtualBox
Скачать VirtualBox можно с официального сайта — ссылка: https://www.virtualbox.org
Выбираем тут Server install image
(Прямая ссылка:
http://releases.ubuntu.com/18.04/ubuntu-18.04.3-live-server-amd64.iso ),
выбираем путь для сохранения.
Готово.
3. Установка VirtualBox
Установка самого VirtualBox
не сложна и заключается, в основном,
в «Далее-Далее-Принять-Готово»,
(кроме двух моментов о которых
расскажу далее),
подробно расписывать его
установку смысла не имеет,
но скриншоты процесса приложу ниже.
Два «сложных» момента заключаются в следующем:
1) Необходимо включить в BIOS
ПК на который устанавливается
средство виртуализации,
настройку Virtualization Technology.
2) При установке кратковременно
пропадёт сеть на ПК, VirtualBox
об этом любезно предупредит.
Вам подойдет любой компьютер. Можете выдать 256 МБ ОЗУ. Этого достаточно для нашей работы.
1. Вступление
В рамках этой статьи рассмотрим подробную установку средства виртуализации Oracle VM VirtualBox (далее просто VirtualBox) и создания виртуальной машины под управлением Ubuntu 18.04 Server.
Почему будем использовать именно VirtualBox? Причин несколько:
- Он прост в установке на любую операционную систему (Windows, MacOS, Linux);
- Имеет обширное комьюнити пользователей, а значит — можно найти ответ на любой вопрос;
- Поддерживает создание множества виртуальных машин под разными ОС (Windows, FreeBSD, Ubuntu, CentOS, RedHat и др.);
- Создание отдельных виртуальных сетей между виртуальными машинами;
- Cоздание и восстановление снимков системы (снапшотов) и довольно обширную интеграцию с ОС хоста;
- Бесплатный;
Зачем это нужно?
- Для обучения;
- Для тестирования каких-то программ, сборки пакетов под определённую конфигурацию системы;
- Для решения задач «домашнего сервера» при наличии мощной машины хоста;
Версии ПО используемые для установки в данном руководстве:
- Windows 10, версии 1903;
- VirtualBox 6.1;
- Ubuntu 18.04 Server LTS;
2. Подготовка
2.1 Скачивание, установка и настройка Oracle VM VirtualBox
Скачать VirtualBox можно с официального сайта — ссылка: https://www.virtualbox.org
Нажимаем большую синюю кнопку Download и переходим на следующую страницу:
Нам необходимо скачать то, что на скриншоте выделено красными прямоугольниками, а именно:
- Сам установочный файл VirtualBox: https://download.virtualbox.org/virtualbox/6.1.0/VirtualBox-6.1.0-135406-Win.exe
- И т.н Extension Pack — пакет очень полезных расширений (общие папки, поддержка USB выше 2.0 и др.) для виртуальных машин: https://download.virtualbox.org/virtualbox/6.1.0/Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack
2.2 Скачивание образа системы Ubuntu 18.04 Server
Пока скачивается одно, можно загрузить образ системы с официального сайта: http://releases.ubuntu.com/18.04/
Выбираем тут Server install image (Прямая ссылка: http://releases.ubuntu.com/18.04/ubuntu-18.04.3-live-server-amd64.iso ), выбираем путь для сохранения. Готово.
3. Установка VirtualBox
Установка самого VirtualBox не сложна и заключается, в основном, в «Далее-Далее-Принять-Готово», (кроме двух моментов о которых расскажу далее), подробно расписывать его установку смысла не имеет, но скриншоты процесса приложу ниже.
Два «сложных» момента заключаются в следующем:
- Необходимо включить в BIOS ПК на который устанавливается средство виртуализации, настройку Virtualization Technology.
- При установке кратковременно пропадёт сеть на ПК, VirtualBox об этом любезно предупредит.
По окончанию процесса можно перейти к настройке средства виртуализации.
4. Настройка VirtualBox
4.1 Создание и настройка виртуальной машины.
4.1.1 Создание
- В главном меню выбираем пункт «Создать»:
- Указываем имя и путь до директории хранения файлов:
- Указываем остальные параметры VM (объем ОЗУ, создавать ли новый диск):
Можете выдать и меньше. 256МБ ОЗУ достаточно.
- В настройках типа жёсткого диска переходим в «Экспертный режим»:
- Тут появляется возможность изменить место хранения жёсткого диска системы, указать его тип и формат хранения данных:
- Нажимаем на «Создать» и получаем новосозданную виртуальную машину.
4.1.2 Настройка
Переходим в её настройки:
- В настройках указываем *.iso образ системы, который скачивали ранее:
- Настраиваем сеть.
Выбираем «Сетевой мост» (Bridge network)
Виртуалка будет работать в той же сети что и ваш компьютер. Т.е. вы на своем роутере будете видеть MAC адрес и IP от вашей виртуалки. Она будет доступна с любого устройства вашей домашней сети.
- Базовая настройка закончена, переходим к запуску ВМ.
5. Установка ОС
В современной установке ОС на базе RedHatDebian нет никаких сложностей. Начнём с запуска виртуальной машины и дождёмся её загрузки с образа установки:
- Подробно процесс установки рассказывать не имеет смысла, остановимся по ходу на паре моментов подробнее, процесс приведу в скриншотах:
- Выбираем раскладку клавиатуры и установщик следующим шагом покажет текущую конфигурацию сети. На s3 — NAT, на s8 — виртуальная сеть с IP машины:
- Выбираем виртуальный диск на который будет производиться установка:
- Подтверждаем его форматирование на новую файловую систему:
- Указываем имя пользователя, его пароль и hostname виртуалки, проводим установку OpenSSH сервера (для логина в ОС по ssh):
- Появляется возможность выбрать дополнительное ПО для установки, чаще всего это не нужно и проще установить всё руками из консоли или при помощи систем автоматизации (Ansible):
- Перезагружаем систему после окончания установки:
- Проверяем вход под пользователем которого мы создали:
А так же пробуем логиниться через SSH по IP который установщик дал выше (если забыли выполняем в консоли ip a и получаем список IP на всех интерфейсах системы):
Готово. Установка ОС на виртуальную машину завершена.
Есть проблемы? Пиши в чат поддержки
На просторах интернета не нашел единого рецепта по установке и настройке такого, довольно нестандартного сервера. Решил написать свой рецепт.
Принцип работы следующий:
Статические данные (файлы) отдает Nginx, а динамикой занимается Apache.
Начнем.
Нам нужно:
VirtualBox
Ubuntu Server 16.04.3 LTS (LTS — Long Time Support)
PuTTY
Установим VirtualBox
- Запустим установщик VirtualBox.
- Настройки оставим по умолчанию.
- Установщик временно отключит нас от сети. Жмем «Yes».
- Начинаем установку.
- Финиш.
Подготовим VirtualBox к установке Ubuntu Server 16.04.3 LTS
- Загрузим образ ubuntu-16.04.3-server-amd64.iso
- Создадим виртуальную машину.
- Имя: default_server
Тип: Linux
Версия: Ubuntu (64-bit)
Объем оперативной памяти: 2048 МБВажно: У меня 8 ГБ оперативной памяти, и в моем случае, двух гигабайт будет достаточно. У вас может быть иначе…
Размер жесткого диска: 15 ГБ
Другие параметры оставим по умолчанию.
Жмем «Создать». - Сразу настроим сеть.
Сменим тип подключения с NAT на Сетевой мост.
В дальнейшем, мы не будем заниматься пробрасыванием портов. - Запускаем нашу машину.
Установка Ubuntu Server 16.04.3 LTS
- Выберем загрузочный диск с образом Ubuntu Server 16.04.3 LTS.
- Выбираем удобный язык, у меня это русский.
Жмем «Enter». - Выбираем «Установить Ubuntu Server».
- Выбираем страну.
Важно: Читайте подсказку внизу экрана.
- Я не буду определять раскладку клавиатуры, мне это не нужно.
- Выбираем страну для которой предназначена клавиатура.
- Выбираем регион раскладки.
- Выбираем комбинацию клавиш, для переключения языка. Мне удобно через CTRL+
SHIFT. - Введем имя компьютера, под которым он будут известен в сети.
- Вводим имя админа.
- Вводим имя учетной записи админа (Будет использоваться как логин для входа в систему).
- Вводим пароль от учетной записи админа.
- Повторяем пароль.
- Почему бы и нет..?
- Выбираем часовой пояс.
- Пусть система автоматически использует весь диск.
- Диск для разметки, выбираем по умолчанию.
- Записываем изменения на диск.
- У нас нету прокси, оставляем поле пустым и продолжаем.
- Пусть система сама устанавливает обновления безопасности.
- Выбираем набор программ, которые будут установлены вместе с системой.
Нам будет достаточно стандартного набора и OpenSSH Server. - Установим GRUB главным.
- Отлично, почти готово.
Нам нужно изъять диск из привода.
Устройства -> Оптические диски -> Изъять диск из привода
Теперь жмем продолжить. - Прекрасно, Ubuntu Server установлена.
Вводим логин, следом пароль, попадаем в систему, все окей.
Выключим нашу машину:
poweroff
- Конкретно эту машину мы оставим в покое, и будем использовать только для клонирования.
Клонируем нашу машину:
Вводим имя.
Продолжаем.
Выбираем полное клонирование.
Жмем клонировать. У меня клонирование длилось две минуты.
Установим PuTTY, для доступа через SSH
- Запустим установочный файл.
- Настройки оставим по умолчанию.
Жмем «Install». - Финиш.
Подключение через SSH к серверу
- Запустим клон нашей машины, что бы узнать ее ip адрес.
Напишем команду:
ifconfig
На скриншоте я отметил место, где будет написан ваш ip адрес. У меня это: 192.168.0.103 (может смениться, пока писал статью, у меня сменился на 192.168.0.101).
Теперь можно выйти из учетной записи, написав:
exit
- Переходим в PuTTY, вводим ip адрес, и имя для сохраняемой сессии.
Жмем «Save». - Теперь, при двойном клике по имени сохраненной сессии.
Мы должны наблюдать следующее:
Вводим логин, после пароль.
SSH соединение успешно настроено, теперь можно приступать к настройке (Nginx + Apache) + PostgreSQL + PHP.
Установка и настройка (Nginx + Apache) + PostgreSQL + PHP
Перейдем в режим суперпользователя
sudo su
Перейдем в корневой каталог
cd /
Добавим репозиторий PostgreSQL
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
Добавим репозиторий PHP
add-apt-repository ppa:ondrej/php
Сделаем update
apt-get update
Сделаем upgrade
apt-get upgrade
У меня upgrade длился пять минут.
У становим python, он нам позже понадобится
apt-get install python
Приступим к установке Apache, PHP и PostgreSQL
apt-get install apache2 php7.2 php7.2-cli php7.2-curl php7.2-fpm php7.2-pgsql postgresql postgresql-contrib postgresql-server-dev-10 libapache2-mod-rpaf build-essential apache2-dev
По умолчанию, в PostgreSQL нету однобайтовых и беззнаковых чисел, поэтому мы их установим.
Есть расширение для PostgreSQL, pguint — github.com/petere/pguint
git clone https://github.com/petere/pguint.git /pguint
Перейдем в созданный каталог
cd /pguint
Теперь нам нужно скомпилировать это расширение (тут понадобится python, который мы установили ранее).
make
make install
Теперь, на сервер PostgreSQL, в нужную базу данных, где хотим использовать беззнаковые и однобайтовые числа, отправим:
CREATE EXTENSION uint;
Вернемся в корневой каталог
cd /
Установим Nginx, но перед этим остановим Apache, дабы он не занимал порт 80, иначе Nginx не установится.
service apache2 stop
Установка Nginx
apt-get install nginx
Отлично, теперь остановим и Nginx
service nginx stop
Настройка Apache
a2dismod mpm_event
a2enmod mpm_worker
a2enmod proxy_fcgi
a2enconf php7.2-fpm
Сменим порт Apache
nano /etc/apache2/ports.conf
Заменить
Listen 80
на
Listen 127.0.0.1:8080
127.0.0.1 — означает то, что к Apache можно обратиться только по локальному адресу.
8080 — можете поставить любой свободный порт.
Перейдем в папку с доступными сайтами
cd /etc/apache2/sites-available
Создадим конфигурационный файл нашего сайда
nano domain-name.local.conf
И привести его к такому виду:
<VirtualHost 127.0.0.1:8080>
ServerName domain-name.local
ServerAlias www.domain-name.local
ServerAdmin admin@domain-name.local
DocumentRoot /var/www/domain-name.local
ErrorLog ${APACHE_LOG_DIR}/domain-name.local_error.log
CustomLog ${APACHE_LOG_DIR}/domain-name.local_access.log vhost_combined
</VirtualHost>
Посмотрим, что у нас лежит в /var/www
cd /var/www/
ls -F
Папка html, нам более не нужна, удалим ее вместе с содержимым
rm -R html
Создадим свою папку, со своим сайтом
mkdir domain-name.local/
Перейдем в папку с нашим сайтом
cd domain-name.local/
Создадим документ index.pnp
nano index.php
В него запишем:
<?php
phpinfo();
?>
С этим пока закончили.
Вернемся в корневой каталог
cd /
В apache стоит rpaf 0.6 и он не передаёт/принимает порт от nginx и не работает правильно, как надо. Поэтому его надо обязательно обновить.
wget -O rpaf_v0.8.4.tar.gz https://github.com/gnif/mod_rpaf/archive/v0.8.4.tar.gz
gunzip rpaf_v0.8.4.tar.gz
tar xvf rpaf_v0.8.4.tar
cd mod_rpaf-0.8.4/
Теперь скомпилируем
make
make install
Выходим в корневой каталог
cd /
Хорошо, продолжим настройку Apache.
nano /etc/apache2/apache2.conf
Заменить
LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
на
LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
Приведем в порядок rpaf.conf
nano /etc/apache2/mods-available/rpaf.conf
Приведем его к такому виду:
<IfModule rpaf_module>
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1 ::1
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off
RPAF_Header X-Forwarded-For
</IfModule>
Включим наш сайт в Apache.
a2ensite domain-name.local.conf
И запустим наш Apache.
service apache2 start
C Apache закончили.
Настроим Nginx
nano /etc/nginx/sites-available/domain-name.local
Привести к такому виду:
server {
listen 80;
listen [::]:80;
root /var/www/domain-name.local;
index index.php index.html index.htm;
server_name domain-name.local www.domain-name.local;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass_header Set-Cookie;
}
location ~ /.ht {
deny all;
}
location ~* .(ico|docx|doc|xls|xlsx|rar|zip|jpg|jpeg|txt|xml|pdf|gif|png|css|js|html)$ {
root /var/www/domain-name.local;
}
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header Content-Security-Policy "block-all-mixed-content";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
resolver 8.8.8.8;
}
Теперь создадим символьную ссылку на этот файл
ln -s /etc/nginx/sites-available/domain-name.local /etc/nginx/sites-enabled/domain-name.local
Отредактируем /etc/nginx/sites-available/default
nano /etc/nginx/sites-available/default
Уберем default_server.
И вставим перенаправление с www. и ip
server {
listen 80;
listen [::]:80;
server_name www.domain-name.local;
return 301 http://domain-name.local$request_uri;
}
server {
listen 80;
listen [::]:80;
server_name 192.168.0.101;
return 301 http://domain-name.local$request_uri;
}
Запускаем Nginx.
service nginx start
Отлично, можем проверить как оно работает.
Но перед этим отредактируем файл хоста C:WindowsSystem32driversetc
Открыть файл hosts через текстовый редактор, и в самый низ вставить:
192.168.0.101 domain-name.local
192.168.0.101 www.domain-name.local
Заменив ip и домен на свои.
В браузере перейдем по domain-name.local, и если вы делали все по этому рецепту, мы должны увидеть страницу с phpinfo.
Отлично, дело осталось за малым.
Настроим PostgreSQL.
Создадим нового пользователя PostgreSQL
sudo -u postgres createuser --superuser test-user
Войдем в СУБД
sudo -u postgres psql
И сменим новому пользователю пароль
password test-user
Теперь новому пользователю нужно сменить тип подключения, для этого нам нужно найти pg_hba.conf файл.
Пишем
SHOW hba_file;
Покидаем СУБД
q
И начинаем редактировать /etc/postgresql/10/main/pg_hba.conf
nano /etc/postgresql/10/main/pg_hba.conf
Ищем
# Database administrative login by Unix domain socket
Находим следующее:
# Database administrative login by Unix domain socket
local all postgres peer
Приводим к таком виду:
# Database administrative login by Unix domain socket
local all postgres peer
local all test-user md5
Перезагрузим PostgreSQL
service postgresql restart
Теперь войдем в СУБД через нового пользователя
psql test-user -h 127.0.0.1 -d postgres
Вводим пароль, и попадаем в СУБД.
Создадим тестовую базу данных
CREATE DATABASE test_db;
И сразу перейдем в нее
c test_db
Подключим расширение pguint
CREATE EXTENSION uint;
И создадим тестовую таблицу
CREATE TABLE test_tb(
id uint4 PRIMARY KEY,
title TEXT
);
Заполним таблицу тестовыми данными
INSERT INTO test_tb(id, title) VALUES (1, 'Бла бла бла 1'), (2, 'Бла бла бла 2'), (3, 'Бла бла бла 3'), (4, 'Бла бла бла 4'), (5, 'Бла бла бла 5'), (6, 'Бла бла бла 6'), (7, 'Бла бла бла 7'), (8, 'Бла бла бла 8'), (9, 'Бла бла бла 9'), (10, 'Бла бла бла 10'), (2147483642, 'Бла бла бла 2147483642'), (2147483643, 'Бла бла бла 2147483643'), (2147483644, 'Бла бла бла 2147483644'), (2147483645, 'Бла бла бла 2147483645'), (2147483646, 'Бла бла бла 2147483646'), (2147483647, 'Бла бла бла 2147483647'), (2147483648, 'Бла бла бла 2147483648'), (2147483649, 'Бла бла бла 2147483649'), (2147483650, 'Бла бла бла 2147483650'), (2147483651, 'Бла бла бла 2147483651'), (2147483652, 'Бла бла бла 2147483652'), (4294967286, 'Бла бла бла 4294967286'), (4294967287, 'Бла бла бла 4294967287'), (4294967288, 'Бла бла бла 4294967288'), (4294967289, 'Бла бла бла 4294967289'), (4294967290, 'Бла бла бла 4294967290'), (4294967291, 'Бла бла бла 4294967291'), (4294967292, 'Бла бла бла 4294967292'), (4294967293, 'Бла бла бла 4294967293'), (4294967294, 'Бла бла бла 4294967294'), (4294967295, 'Бла бла бла 4294967295') RETURNING id, title;
Посмотрим содержимое таблицы test_tb
SELECT * FROM test_tb;
Теперь попробуем вывести эти данные из php.
Закрываем соединение с СУБД
q
Откроем /var/www/domain-name.local/index.php
nano /var/www/domain-name.local/index.php
И приведем к следующему виду:
<?php
$dbh = new PDO('pgsql:host=localhost port=5432 user=test-user dbname=test_db password=password');
$test = $dbh->prepare('SELECT * FROM test_tb;');
$test->execute();
echo "<pre>";
print_r($test->fetchAll(PDO::FETCH_ASSOC));
echo "</pre>";
?>
Теперь проверим, и убедимся, что это работает
Отлично, мы настроили (Nginx + Apache) + PostgreSQL + PHP и он исправно работает.
Настроим FTP доступ к сайту
Установим FTP сервер
apt-get install vsftpd
Остановим vsftpd перед настройкой
service vsftpd stop
Откроем etc/vsftpd.conf
nano etc/vsftpd.conf
Установить/заменить/переключить следующие параметры:
- listen=YES
- listen_ipv6=NO
- local_enable=YES
- write_enable=YES
- chroot_local_user=YES
- pam_service_name=ftp
Создадим нового пользователя для доступа через FTP
useradd -d /home/domain-name -s /sbin/nologin domain-name
Установим для него пароль
passwd domain-name
Создадим домашнюю директорию пользователя
mkdir -p /home/domain-name
Установим для нее права
chmod a-w /home/domain-name
Создадим группу для пользователя
groupadd ftps
Добавим пользователя в группу
usermod -G ftps domain-name
Поменяем владельца каталога
chown -R domain-name:ftps /home/domain-name
Создадим папку нашего сайта
mkdir /home/domain-name/domain-name.local
Сменим у нее владельца
chown -R domain-name:ftps /home/domain-name/domain-name.local
Смонтируем наши каталоги, откроем файл /etc/fstab
nano /etc/fstab
В самый низ вставим
/var/www/domain-name.local /home/domain-name/domain-name.local none bind 0 0
Добавим владельца /var/www/domain-name.local
chown www-data:domain-name /var/www/domain-name.local/ -R
Назначим права
find /var/www/domain-name.local -type d -exec chmod 775 {} ;
find /var/www/domain-name.local -type f -exec chmod 664 {} ;
И запустим vsftpd
service vsftpd start
Проверим, я буду использовать FileZilla.
Все хорошо, попробуем создать каталог.
Работает.
Настроим защищенное FTP соединение.
Остановим vsftpd
service vsftpd stop
Сгенерируем сертификат
openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
Тут вводим все, что вшей душе угодно
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Откроем etc/vsftpd.conf
nano etc/vsftpd.conf
Установим/добавим следующие параметры:
- ssl_enable=YES
- ssl_tlsv1=YES
- ssl_sslv2=NO
- ssl_sslv3=NO
- rsa_cert_file=/etc/ssl/private/vsftpd.pem
- rsa_private_key_file=/etc/ssl/private/vsftpd.key
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- ssl_ciphers=HIGH
Сохраним и запустим vsftpd
service vsftpd start
Давайте испытаем
Ура, все работает, можно приступать к разработке веб приложения.
P.S. Этот рецепт не претендует на звание единственно правильного и идеального. Если что то упустил или у вас есть предложения по дополнению этого рецепта, добро пожаловать в комментарии, приму любую критику. По мере роста моих навыков, этот рецепт будет дополняться и изменяться.
Install Ubuntu server in a virtual machine
These instructions use VirtualBox as an example. Instructions for other virtual machines are likely to be similar.
There is a version of the Ubuntu server that is optimized for usage within a virtual machine. It is provided on the Ubuntu Server edition LiveCD. The LiveCD image (.iso) found here can be downloaded onto your hard drive. It can then be installed directly into your virtual machine from the hard drive. Alternatively, you can also burn the .iso image onto a CD and install Ubuntu Server into the virtual machine from the CD. Both methods work identically during the Ubuntu Server installation process.
VirtualBox supports both 32 and 64-bit guest OSs. See this list for known supported operating systems. However, if your host OS is 32-bit you cannot run 64-bit guest OSs. Other virtual machines may have similar limitations, so in general a 32-bit Ubuntu OS is safest.
Note that the «minimal virtual machine» install of Ubuntu Server 10.04 doesn’t recognize the SATA disk controller which VirtualBox 3.2.8 uses by default. If you find you can’t boot your new installation and get dropped to an initramfs prompt on first boot, stop the VM and reconfigure it to use a SCSI disk controller instead as described here.
*Start the virtual machine you created in the previous step.
Virtualbox -> Ubuntu Virtual Server (highlighted) -> Start
-
The «First Run Wizard» will prompt for the location of the installation disk -> Next ->
CD/DVD-ROM device (ticked) ->
Media Source:
- select the CD-ROM drive (if you burned the LiveCD (.iso) image onto a physical CD), or
- browse for the folder where you stored the (.iso) image onto your hard drive, if you did not burn it to a physical CD
-> Next ->
* Install Ubuntu server virtual machine edition:
The First Run Wizard will automatically start the LiveCD from the location you indicated, and you will see the Ubuntu Server LiveCD screen.
-
Choose language: English ->
-
Important: note this step carefully! Select the minimal virtual machine installation mode:
-
Click the F4 (modes) key -> Install a minimal virtual machine ->
- Install Ubuntu Server
-
Select your installation options. When asked about partitioning, use the guided partitioning method and use the entire disk. This uses the entire virtual machine disk (which is 8 GB or whatever size you created when creating the virtual machine), not the entire physical hard drive disk.
-
Task selection. A menu will appear to select options for additional packages to be installed along with the server. Make sure these packages are starred use the space button to select them and the arrow keys to go up or down the list) before completing the installation.
-
(Optional) You will be prompted to enter an MySQL root user password during the LAMP server package installation. This password becomes important later on (in some instances). Record your chosen MySQL password in a safe location. Do not use your primary user password as the MySQL password; it ought to be unique.
* Finish the remainder of the Ubuntu server installation. At the conclusion the Ubuntu system will automatically reboot within the virtual machine. When it restarts, you will then have a fully function Ubuntu Server within the virtual machine. Immediately update the operating system:
sudo apt-get update sudo apt-get upgrade
Installing missing kernel modules
The kernel package installed by the «minimal virtual machine» option only contains a small number of modules. It’s possible you may need one of the «missing» modules to get extra hardware supported. (In my case I wanted to access my MacBook Pro’s internal USB Bluetooth device from Ubuntu.)
You *don’t* have to build the modules yourself, you can simply install the associated «linux-image-extra-virtual» package and all the missing modules will be installed (at the cost of some extra disk space). (The description of the package currently implies a kernel image is also installed but that’s not the case.)
# Включение роли Hyper-V
Для развертывания Ubuntu Server в виртуальной среде Microsoft Hyper-V убедитесь, что Ваше оборудование отвечает следующим требованиям:
Требования к операционной системе:
Роль Hyper-V можно включить в следующих версиях Windows 10:
- Windows 10 Корпоративная
- Windows 10 Pro
- Windows 10 для образовательных учреждений
Требования к оборудованию:
Хотя в этом документе не приводится полный список оборудования, совместимого с Hyper-V, укажем следующие обязательные требования:
- 64-разрядный процессор с поддержкой преобразования адресов второго уровня (SLAT).
- Поддержка расширения режима мониторинга виртуальной машины (технология VT-x на компьютерах с процессорами Intel).
- Не менее 4 ГБ оперативной памяти. Так как виртуальные машины и узел Hyper-V используют память совместно, необходимо обеспечить достаточный объем памяти для обработки предполагаемой рабочей нагрузки на виртуальной машине.
В BIOS системы необходимо включить следующие компоненты.
- Virtualization Technology (Технология виртуализации) — может иметь другое название (VTx, Vanderpool Technology, VT Technology, Virtualization) в зависимости от производителя системной платы;
- Hardware Enforced Data Execution Prevention (Принудительное аппаратное предотвращение выполнения данных) — может отсутствовать в настройках BIOS.
На следующем этапе включаем Hyper-V:
Hyper-V можно включить разными способами, в том числе используя панель управления Windows 10, PowerShell или с помощью средства обслуживания образов развертывания и управления ими (DISM).
Включение Hyper-V с помощью PowerShell:
1.Откройте консоль PowerShell от имени администратора.
2.Выполните следующую команду:
По завершении установки выполните перезагрузку.
Включение Hyper-V с помощью CMD и DISM:
Система обслуживания образов развертывания и управления ими (DISM) позволяет настраивать ОС Windows и образы Windows. Помимо всего прочего, средство DISM может включать функции Windows во время выполнения операционной системы. Чтобы включить роль Hyper-V с помощью DISM, выполните указанные ниже действия.
1.Запустите PowerShell или сеанс CMD от имени администратора.
2.Введите следующую команду:
Включение роли Hyper-V с помощью раздела «Параметры»:
1.Щелкните правой кнопкой мыши кнопку Windows и выберите пункт «Приложения и возможности».
2.Выберите «Программы и компоненты» справа в разделе «Сопутствующие параметры» параметры.
3.Выберите пункт Включение или отключение компонентов Windows.
4.Выберите Hyper-V и нажмите кнопку ОК.
После установки компонентов перезагрузите компьютер.
Важно!
Обратите внимание, на состояние строки «Низкоуровневая оболочка Hyper-V», если она «некликабельна» (серая), еще раз убедитесь, что ваше оборудование поддерживает технологию виртуализации и она включена в BIOS машины.
# Создание виртуальной машины в Hyper-V
Скопируйте к себе с сервера \fsrvDISTRCentOS файл ubuntu-18.04.3-live-server-amd64.iso или скачайте с сайта https://releases.ubuntu.com/18.04/ к себе на компьютер образ установочного диска для сервера:
В поле поиска в панели задач введите Hyper-V
(или через Панель управления — Администрирование — Диспетчер Hyper-V) и запустите «Диспетчер Hyper-V»
В диспетчере Hyper-V слева выбираем имя своего компьютера, а в правом столбце «Действия» выбираем Создать — Виртуальная машина
В открывшемся окне задайте произвольное имя виртуальной машины, ее расположение и нажмите Далее
Выберите Поколение 2 и нажмите Далее
Укажите размер выделяемой памяти для виртуальной машины, исходя из возможностей Вашего оборудования, но не менее 512 Мб (минимальные требования Ubuntu Server) и нажмите Далее
В настройках сети выберите «Default Switсh» и нажмите Далее
Создайте виртуальный диск для Вашей новой машины задав имя, расположение и размер. При выборе расположения и размера виртуального диска исходите из конфигурации оборудования и задач, под которые создается сервер, но не менее 16 Гб и нажмите Далее
В следующем окне укажите путь к ранее загруженному файлу установочного образа и нажмите Далее
В следующем окне завершите работу мастера создания виртуальной машины, нажав Готово
После окончания работы мастера откройте Диспетчер Hyper-V, выберите свою виртуальную машину из списка:
кликнете правой кнопкой мыши и выберите «Параметры», в открывшемся окне перейдите на вкладку «Безопасность», уберите отметку в чекбоксе «Включить безопасную загрузку» и нажмите «ОК».
Виртуальная машина создана и готова к установке операционной системы.
# Установка Ubuntu Server
В Диспетчере Hyper-V дважды кликните на Вашу виртуальную машину и в открывшемся окне нажмите «Пуск»
Дождитесь инициализация виртуальной машины и начала установки Ubuntu Server 18.04. (возможен вывод лога сообщений об ошибках или из-за кортокого таймаута перед началом установки Вы сразу увидите меню выбора языка установки)
В открывшемся окне настройки установки в первым будет предложен выбор языка устанавливаемой ОС. Управление производится клавишами «Вверх», «Вниз» и «Enter». Выбираем «Русский».
В следующем окне будет предложено обновить дистрибутив установки, мы уже определились с устанавливаемой версией, выбираем «Continue without updating» и нажимаем «Enter»
В окне конфигурации клавиатуры выбираем «Русская» с вариантом «Русская» выбираем «Готово» и нажимаем «Enter»
В следующем окне выбираем сочетание клавиш для переключения раскладки клавиатуры, выбираем «ОК», «Готово» и нажимаем «Enter»
В открывшемся окне конфигурации сетевого соединения настраиваем динамический или статический IP адрес, в данном случае оставляем конфигурацию выбранного адаптера без изменений, выбираем «Готово» и нажимаем «Enter»
В следующем окне конфигурируем proxy, если Вы не используете proxy, оставляем поле «Proxy address» пустым, выбираем «Готово» и нажимаем «Enter»
Зеркало для загрузки пакетов тоже оставьте по умолчанию, выбираем «Готово» и нажимаем «Enter»
В окне «File system setup» настраиваем разметку разделов Linux, можно предоставить возможность инсталлятору сделать это по своему усмотрению (Use An Entire Disk) или настроить «Вручную». Рассмотрим вариант установки вручную. Выбираем «Вручную» и нажимаем «Enter»
В следующем разделе выбираем нужный диск в списке «Available Devices» и нажимаем «Enter»
В открывшемся контекстном меню выбираем «Add Partition» и нажимаем «Enter»
В следующем окне задаем размер раздела, формат и точку монтирования. Создам корневой раздел, оставляем точку монтирования в поле «Mount» в виде одного слэша » / «, или выбираем эту точку из списка. Формат файловой системы ext4. Все свободное место выделяем под корневой каталог, выбираем «Create» и нажимаем «Enter»
В разделе «File system summary» мы видим смонтированный нами корневой раздел с файловой системой ext4 и инсталлятор автоматически выделил место и смонтировал загрузочный раздел /boot/efi с файловой системой fat32:
Когда завершите создавать разделы, у вас должно получится два раздела. Выбираем «Готово» и нажимаем «Enter».
В следующем диалоге соглашаемся на начало инсталляции и внесение изменений в структуру разделов, выбираем «Продолжить» и нажимаем «Enter»
Следующий шаг — создание учетной записи пользователя и выбор имени сервера. Заполните такие поля:
- Ваше имя — просто имя, можно русскими буквами;
- Your server’s name — имя вашего сервера, только строчные латинские буквы;
- Имя пользователя — имя пользователя для входа в систему, только строчные латинские буквы;
- Пароль — вводится два раза, используйте сложные пароли для серверов.
На следующем этапе выбираем «Install OpenSSH server», выбираем «Готово» и нажимаем «Enter»
Когда установка Ubuntu Server 18.04 lts завершится, дождитесь установки обновлений безопасности и нажмите кнопку Перезагрузить сейчас.
После перезагрузки введите логин и пароль, которые вы использовали во время установки:
Откроется окно с готовой к работе системой Ubuntu Server
Так как, в дальнейшем предстоит вводить много команд через терминал, а в гипервизоре корректно не работает вставка из буфера обмена, для подключения по ssh воспользуемся сторонним клиентом. Сначала узнаем IP адрес нашей виртуальной машины, для этого вводим sudo ifconfig
в терминале гипервизора, подтверждаем команду паролем и получаем вывод терминала вида:
Запоминаем IP адрес интерфейса eth0.
Теперь установим ssh клиент, например, Snowflake. Для этого скачаем его с GitHub https://github.com/subhra74/snowflake/releases, выбираем инсталятор для Windows snowflake.msi:
Сохраняем и запускаем скачанный устанвщик snowflake.msi, в открывшемся после усановки окне программы, нажимаем «New connection», задаем произвольное имя сервера, в поле «Host» вводим IP адрес виртуальной машины, порт оставляем без изменений, заполняем поля с логином и паролем, которые Вы ввели при установке Ubuntu в виртуальную машину и нажимаем «Connect»:
Соглашаемся с добавлением RSA ключа:
Откроется терминал для управления установленной Ubuntu Server по ssh:
Далее все команды вводим здесь, копируя из инструкции.
# Установка PostgreSQL 11 на Ubuntu Server 18.04
Обновление установленных пакетов
Обновляем текущие установленные пакеты для вновь установленного сервера, для этого последовательно вводим команды:
После обновления пакетов, перезагрузите сервер
На время перезагрузки будет разорвано соединение, выждите некоторое время и нажмите «Reconnect» в красном поле справа:
После перезагрузки системы установите vim
и wget
, если они еще не установлены.
# Добавление репозиториев PostgreSQL 11
Перед добавлением содержимого репозитория на Ваш Ubuntu Server вам необходимо импортировать ключ подписи репозитория:
В выводе теминала будет «ОК»:
После импорта ключа GPG добавьте содержимое репозитория в вашу систему:
добавление прошло без ошибок, теперь проверим содержимое файла репозитория
В выводе терминала отобразится строка содержимого:
Установите PostgreSQL 11 в Ubuntu Server, для этого введите следующие две команды:
Разрешить доступ к PostgreSQL с удаленных хостов
По умолчанию доступ к серверу базы данных PostgreSQL осуществляется только с localhost:
Чтобы разрешить доступ к сети, отредактируйте файл конфигурации, для этого введите:
Откроется редактор nano, переместите курсор в раздел CONNECTIONS AND AUTHENTICATION, добавьте строку:
Для сохранения нажмите сочетание CTRL + X, для подтверждения введите «Y» и «Enter»
Не забудьте перезапустить службу postgresql после внесения изменений.
Убедитесь в адресе привязки для PostgreSQL:
Если у вас активен брандмауэр UFW, разрешите порт 5432
Установка пароля администратора PostgreSQL
Установите пароль для администратора по умолчанию
Вы также можете добавить других пользователей базы данных:
Добавить тестовую базу данных:
Выполните тестовую операцию, войдя в систему как dbuser1 и работая с testdb:
Установите пароль пользователя:
Создайте таблицу и добавьте какие-нибудь данные данные:
Просмотрите данные таблицы:
Удалите Вашу тестовую таблицу:
Удалите тестовую базу данных:
Выйдите из PostgreSQL
Вы успешно установили и протестировали сервер базы данных PostgreSQL в Ubuntu 18.04.
# Установка инструментов управления
# Создание пользователя
Для последующей работы с Ubuntu, у вас должен быть обычный пользователь без полномочий root с привилегиями sudo, настроенными на вашем сервере. Кроме того, вам потребуется включить базовый брандмауэр, чтобы блокировать второстепенные порты.
В этом примере создается новый пользователь с именем ssh_user, но вы должны заменить его на имя пользователя, которое вам нравится:
Вам будет задано несколько вопросов, начиная с пароля учетной записи.
Введите надежный пароль и, при желании, введите любую дополнительную информацию. Это не обязательно, и вы можете просто нажать ENTER в любом поле, которое хотите пропустить.
Теперь у нас есть новая учетная запись пользователя с обычными привилегиями учетной записи. Однако иногда нам может потребоваться выполнение административных задач.
Чтобы избежать необходимости выходить из системы обычного пользователя и снова входить в систему как учетная запись root, мы можем настроить так называемые «суперпользовательские» или привилегии root для нашей обычной учетной записи. Это позволит нашему обычному пользователю запускать команды с административными привилегиями, помещая слово sudo перед каждой командой.
Чтобы добавить эти привилегии нашему новому пользователю, от имени пользователя root выполните эту команду, чтобы добавить нового пользователя в группу sudo:
# Включение брандмауэра
Серверы Ubuntu 18.04 могут использовать брандмауэр UFW, чтобы убедиться, что разрешены только подключения к определенным службам. С помощью этого приложения мы можем очень легко настроить базовый брандмауэр.
Различные приложения могут зарегистрировать свои профили в UFW после установки. Эти профили позволяют UFW управлять этими приложениями по имени. У OpenSSH, сервиса, позволяющего нам теперь подключаться к нашему серверу, есть профиль, зарегистрированный в UFW.
Вы можете увидеть это, набрав:
Нам нужно убедиться, что брандмауэр разрешает SSH-соединения, чтобы мы могли снова войти в систему в следующий раз. Мы можем разрешить эти подключения, набрав:
После этого мы можем включить брандмауэр, набрав:
Введите «y» и нажмите ENTER, чтобы продолжить. Вы можете видеть, что соединения SSH по-прежнему разрешены, набрав:
Как видим, разрешены только подключения через порт который мы добавили ранее для работы с PostgreSQL и подключения OpenSSH.
# Установка pgAdmin
Установите открытый ключ для репозитория:
Создайте файл конфигурации репозитория:
Установите pgAdmin как web сервер:
Дождитесь окончания процесса:
Настройте веб-сервер:
Для настройки укажите в качестве логина адрес электронной почты (можно любой) и пароль:
Затем согласитесь с настройкой Apache и дополнительных модулей, для чего введите «Y», также согласитесь с перезапуском службы Apache:
Разрешим доступ к Apache в файрволле:
Теперь можно подключиться к pgAdmin
# Доступ к pgAdmin
На локальном компьютере откройте веб-браузер и перейдите по IP-адресу вашего сервера:
http://IP_Вашего_сервера/pgadmin4
Вам будет представлен экран входа в систему:
Введите учетные данные, которые вы вводили ранее, и вы попадете на приветственный экран pgAdmin.
Теперь, когда вы убедились, что можете получить доступ к интерфейсу pgAdmin, осталось только подключить pgAdmin к вашей базе данных PostgreSQL.
Подключение pgAdmin к серверу
Откройте диалог добавления сервера, на первой вкладке введите имя сервера:
На вкладке «Соединение» введите имя сервера, порт. Базу данных и пользователя оставьте «postgres» (это пользователь с правами супервизора PostgreSQL по умолчанию) и пароль который Вы задали ранее:
На вкладке «SSL» выберите «допускается» (SSl еще не настроен, поэтому установив, например, «требуется» Вы не соединитесь с сервером):
И нажмите «Сохранить»
В левой части окна pgadmin появится обозреватель (browser) подключенных серверов:
Создание ролей
Создаем роли с правами админа db_owner (без права логина) и SA (обязательно в верхнем регистре), для этого в обозревателе нажимаем правой кнопкой мыши на вкладку «Роли входа/группы» и выбираем «создать роль входа/группы»:
В открывшемся окне на вкладке «Общие» задаем имя роли:
На вкладке «Определение» задаем пароль:
На вкладке права выставляем для db_owner права, как на скриншоте:
И нажимаем «Сохранить»
Повторяем действия для роли SA, с той разницей, что на вкладке «Права» разрешаем вход:
И нажимаем «Сохранить»
Проверить созданные роли можно также из командной строки PostgreSQL, не изменяя при этом сессии пользователя.
Чтобы получить доступ к командной строке Postgres, запустите команду psql как пользователь postgres с правами sudo:
Эта команда выполнит автоматический вход в PostgreSQL без промежуточной оболочки bash.
Затем введите:
В выводе терминала Вы увидите список ролей с их правами:
Выйдите из командной строки PostgreSQL
Создание табличного пространства и базы данных
Создайте табличное пространство (tablespace), для этого в web-интерфейсе pgAdmin, в обозревателе на вкладке «Табличные пространства» кликните правой кнопкой мыши и выберите «Создать табличное пространство». В открывшемся окне на вкладке «Общие» введите имя пространства и определите владельца dw_owner:
На вкладке «Определение» укажите расположение, как на скриншоте или задайте табличное пространство сообразно своей логики размещения файлов объектов базы данных в файловой системе:
И нажимаем «Сохранить»
Создайте базу данных, для этого в web-интерфейсе pgAdmin, в обозревателе на вкладке «Базы данных» кликните правой кнопкой мыши и выберите «Создать Базу данных». В открывшемся окне на вкладке «Общие» введите имя базы данных и определите владельца dw_owner:
На вкладке «Определение» выставите значения, как на скриншоте:
И нажимаем «Сохранить»
Выполнение скриптов
На созданной базе выполните скрипты, для этого выбираем созданную базу в списке, нажимаем правой кнопкой мыши и выбираем «Запросник» (Query tool):
В правой части окна pgadmin в открывшемся редакторе вводим:
И нажимаем F5, появится сообщение об успешном выполнении запроса.
Выполняем еще один скрипт:
# Установка PGagent
Для устанвки пакета вернемся в ssh клиент и введем в терминале:
Соглашаемся на установку:
Создаем скрипт автозапуска:
В открывшемся окне вставляем код:
Для выхода нажимаем «Ctrl + x», соглашаемся на сохранение изменений: вводим «Y» и «Enter».
Добавляем файл конфигурации:
В открывшемся окне вставляем:
Выполнить:
И запустить сервис:
Через web-интерфейс pgAdmin на базе postgres выполнить:
# Настройка заданий
Перед настройкой заданий в pgagent в файл конфигурации в строку подключения добавим password=ВашПароль
пользователя posgres:
Настроить ежедневную задачу в pgagent с тремя запросами по шагам, для этого в левой части интерфейса pgAdmin переходим на «Задания paAgent» (если меню заданий pgAgent не отображается в браузере, нажмите правой кнопкой мыши на имя сервера и выберите в контестном меню «Обновить» (Refresh)), нажимаем правой кнопкой мыши и выбираем «Создать — Задание pgAgent»:
В открывшемся окне, на вкладке «Общие», задаем имя задания, выбираем класс задания «Routine Maintenance»:
На вкладке шаги для добавления в верхней правой части нажать «+», ввести имя:
Затем нажать на иконку изменения шага (слева от имени), в открывшемся окне на вкладке «Общие» свойств шага, выберите базу для которой создается задание:
На вкладке «Код» ввести vacuum analyze;
Добавить следующий шаг, нажать «+», на изменение выбрать базу и ввести код cluster;
Повторить дествия для третьего шага, выбрать базу и ввести код `reindex database <имя базы>;
На вкладке «Расписания» добавить расписание, присвоить имя, в разделе «Общие» задать дату и время начала и окончания выполнения задания:
В разделе «Повтор» выберите время выполнения задания:
Таким образом, было создано задание на ежедневное обслуживание базы данных с тремя шагами (Очистка всех таблиц, кластеризация всех таблиц и переиндексация.
Virtualbox is one of the free, open-source hypervisors that you can run on pretty much all the operating systems out there. It doesn’t matter whether you have a windows machine, mac or Linux. The VirtualBox can run on all the devices irrespective of the operating system.
We have covered how you can install Ubuntu Desktop 20.04 on Virtualbox in the last blog, In this blog, we will install the Ubuntu server 20.04 on a VirtualBox hypervisor.
After the installation is complete, we will install VirtualBox guest additions to improve the ubuntu 20.04 server operating system performance.
1. Create the Virtual machine.
Open VirtualBox and click on New to create a virtual machine in Virtualbox.
By default, you will be on the guided mode, for a simple virtual machine creation, that should be fine. However, if you want to have complete control of your virtual machine resources, you must choose the expert mode.
You will be taken to the Virtual machine creation wizard in Expert mode.
- Name : You will have to enter the name of your VM. For example ‘Ubuntu Server 20.04’.
- Machine folder: Location where you want to save the file.
- By default, when we typed the name, it picked up the Type as Linux and the version as Ubuntu.
- Configure the Memory- You could assign even 1 GB of memory. As I have close to 32GB of RAM and require good performance from the virtual machine, I am giving 4GB of RAM for the virtual machine. If you need more memory, you could add more as well.
- Hard disk – Choose create a virtual hard disk now option and click on Create.
2. Create virtual hard disk for Ubuntu server 20.04.
The virtual hard disk creation wizard will now open.
- Location – You will be able to see the location of your virtual hard disk on the top based on the configuration you made before.
- File Size – By default, the virtual machine has assing 10GB of storage for the Ubuntu server, which is not enough for most of the users. Hence I am assigning 20GB of storage. Again, you could assign more storage volume depending on your usage and hard disk storage capacity.
- Storage on Physical hard disk – Choose Dynamically allocated and click on Create.
3. Configure the CPU.
You will see the Ubuntu server VM created in the VirtualBox; by default, when we made the virtual machine, it picked up a single CPU. To get better performance, at least you should configure 2 CPUs. Since I have enough CPU on my machine, I assign about 4 CPUs.
So right-click on the VM and click on settings.
The virtual machine settings window would pop up, click on System àProcessor, Increase the CPU count as per your need.
4. Configure the Network.
You can keep the Ubuntu server 20.04 in a separate network depending on your need.
For the VM to get to the internet, there are two ways. One is through the bridged networking, and the other is through NAT.
Bridged networking – If you would like the Virtual machine to be part of the same local area network and wanted your LAN router to assign a DHCP address, you could use this option.
NAT – With the NAT, the VirtualBox will assign a NAT IP address to your Virtual machine, with which it can go out to the internet. However, the local area network devices will not talk to the Ubuntu virtual machine.
Other network options are also available for your VM to use, which I covered in detail here.
In my case, I would want my VM to be part of my local area network. Hence I am going to choose the Bridged network.
I won’t recommend this option at the office network unless you consult with your network admin. As it will get an IP address from your office DHCP server. Some companies won’t allow connecting other machines to the office network as per the policy. So, It is always better to consult with the networking team before using this option.
For office networks, you could use NAT network, as the local area network devices won’t see the virtual machine; instead, they will see the host machine IP for any traffic that is generated from the VM.
You can learn more about different types of networks in VirtualBox here.
That’s it click on Ok, and you will be back to the VirtualBox window.
5. Initiate the Ubuntu Server installation.
Right-click on the Ubuntu server 20.04 and click on start.
As soon as the booting process starts, you will be prompted to choose the Ubuntu Server 20.04 ISO image from your machine and click on the folder icon to attach the file.
You will get a prompt again. In that, click on Add.
Browse for the file and attach it here, and click on start.
The Ubuntu Server installation will now begin. In the installation wizard, choose the language of your choice.
In my case, there was an installer update that was available. At this moment, I am not going to proceed with the installer update; hence I chose to continue without updating.
Configure the keyboard layout of your choice, and choose done.
During this time, you may disconnect the virtual network adapter by right-clicking on the network icon and clicking on Connect Network Adapter. This will disconnect the VM from the network.
You can still avoid the Ubuntu update during the update, but this is the best and easiest option.
On the next screen, choose to continue without the network.
In case if you are using a proxy, you may enter them here and choose done.
If you don’t have a proxy that’s fine. You can leave it blank.
Configure the Ubuntu Archive mirror.
You can configure the Ubuntu mirror of your choice. I am just leaving the default and choosing done.
6. Storage selection.
In the storage selection, I am choosing the option Use an entire disk. If I want to, I could use the tab button on the keyboard and select the custom storage layout.
You will get a summary of your storage here. If you needed you can go back and modify. Else, you may proceed with the Done.
You will be prompted with a warning that says your storage will be formatted. Are you ok to continue? Choose continue here.
7. Ubuntu server profile setup.
You can set up your user account here along with the server profile.
- Enter your name.
- Provide a name for your Server.
- Specify the username of your choice.
- And the password, and confirm password.
This account is needed in order for you to connect to the machine again vis SSH.
8. Ubuntu server ssh configuration.
You will be asked whether you want to install OpenSSH server or not. In most scenarios, you would remote into the server using an SSH protocol; hence it is recommended to leave the ssh setting enabled.
Choose Install Openssh server and click on Done.
If you don’t require ssh access, you may unselect the option and choose done.
The installation will begin, and after sometime you will get an option that says the installation is now complete and the server is rebooting.
During the reboot, you will be asked to Remove the installation medium and then press ENTER, which is already done automatically, so you may hit Enter to proceed.
After the VM is rebooted, you will get a login screen to your virtual machine, enter the username that you set up during the installation, and the password. And you should be able to log in to the server just fine.
9. Connect the network back.
You now can connect back to the network back by right-clicking on the virtual adapter and clicking on Connect network adapter.
After you are connected to the network, you will get an IP address from your local area network, if you have chosen the bridged network, or NAtted IP if you have chosen the NAT network.
You can ping the virtual machine from your host and other devices on your local area network for Bridged network.
You can also SSH into the Ubuntu server just fine as well.
10. Virtual box guest addition installation on Ubuntu server 20.04.
Let’s go ahead and install the Virtual box guest addition on your machine.
On the Ubuntu Server terminal, enter the below commands to install the VirtualBox guest additions.
sudo apt-get update
sudo apt-get install virtualbox-guest-dkms -y
After a few seconds, the VirtualBox additions packages and all your dependencies will be installed on the ubuntu server 20.04 and you should be ready to start using the Ubuntu server.
Ubuntu server is a server operating system. And it is not that difficult to understand the difference between the desktop and server. Both are Linux-based operating systems. The main difference is that the desktop version contains a desktop environment whereas the server version contains only the command line interface.
The hardware requirements are significantly less for the ubuntu server. As the name suggests it is mainly used as a server for hosting various services. Linux can be completely used using the command line and so ubuntu server.
If you planning to install any operating system on a machine it is a best practice to try it first in a virtual environment. In this tutorial, we will try it on Virtual Box and use the server using SSH. Virtual Box is a software application that allows you to run multiple guest operating systems on your host operating system. Assuming that your computer supports virtualization let’s begin with the tutorial.
Installing Virtual Box
For Windows users, the installation is quite easy. Just visit the downloads page here and download the executable setup file for Windows Hosts. Simply run the installer to install the virtual box.
For Linux, launch the terminal and run the below commands with respect to your distribution –
For Debian (Ubuntu, Kali Linux, etc) –
❯ sudo apt-get install virtualbox
On Ubuntu, you can also install Virtual Box from the software centre.
For Arch users –
❯ sudo pacman -S virtualbox virtualbox-guest-iso ❯ sudo gpasswd -a $USER vboxusers ❯ sudo modprobe vboxdrv
You can refer to the official website for other distributions as well.
To launch the application either search it in the applications or hit the following command in a terminal –
Downloading Ubuntu Server
Visit the official download page here to get the latest image. I am using the latest image i.e. 22.04 at this time of the article. If you are interested in any specific or old image then you should visit the releases page which contains all the releases (old & new).
Initializing Virtual Box For the Server
Now, let us launch the virtual box and create an environment for our server.
Step 1)
Click on the New icon to the right to add a new virtual machine.
Step 2)
In the next section, give your machine a name for example Ubuntu Server. Keep the machine folder location to default only. Select the type of machine as Linux and the version as Ubuntu (64-bit). Click on next.
Step 3)
Giving RAM for your machine. Please note that this RAM will be used from your host operating system. Although, ubuntu server requires very less memory. I am giving it 1 GB RAM. If you are planning to run tasks that require more memory you can choose accordingly.
Step 4)
We will create a virtual hard disk for our operating system. Click create.
Step 5)
Leave the type of virtual hard disk the default for now. Click next.
Step 6)
Choose this carefully. A dynamically allocated storage will grow as the data flows in. And fixed size is a storage which is fixed and cannot be changed. A dynamically allocated storage is much slower than fixed. Fixed-size type will be a good choice for a smoother way to operate.
Step 7)
This OS requires very less space. For now, I am giving it 10 GB. 5 GB will also do. Simply click on create. You have successfully created a virtual environment for our server.
Step
With your virtual machine selected on the left, go to the settings from the top.
Step 9)
In the settings, go to Storage and select the empty disk. Then on the right click on the CD-like icon and choose the disk file you downloaded. After selecting click on Ok to close the settings. This will insert the OS file into the machine.
Ubuntu Server Installation
It’s time to start our ubuntu server and do the initial setup.
Step 1)
It will boot with the disk file you inserted.
Step 2)
Select your preferred language and hit Enter.
Step 3)
Choose the keyboard layout you use. Use the arrow keys and enter key to move around and choose. You can identify keyboard if you are unsure. After choosing the right layout come to done and hit enter.
Step 4)
I am going with the standard installation as I need all normal packages. If you want a minimal installation move around with arrow keys and press Space to select the type of installation. Click done.
Step 5)
For now, I am leaving the network settings to default. I am going to configure it in the virtual machine settings later.
Step 6)
Give a proxy if you have any. Or just go next.
Step 7)
It is recommended to keep the default mirror for downloading and updating packages. You can give any of your choices. I am going with the default. It can also be changed after the installation.
Step
This is how you want to install it on the virtual hard disk. As we have created a hard disk (10 GB) go with the entire disk. You can set up LVM if you want. Custom Storage Layout is for installing it on a specific partition.
Step 9)
It will now show you how the hard disk will be partitioned and formatted. Just click Done.
It will warn you as the entire virtual disk gets formatted and tuned. Simply select Continue.
Step 10)
Type your name, hostname and username and give your server a password. And click done.
Step 11)
Make sure to tick the Install OpenSSH Server using your Space key.
Step 12)
Select the packages you need now to save time after installation.
Step 13)
Congratulations, you have successfully installed the ubuntu server. Reboot the server.
Step 14)
You will get the above-like screen. Type your username and password you created during the profile setup. After logging in, run the following command to shut down your server because we have to tweak some virtual machine settings.
Setting Up SSH
Secure Shell or Secure Socket Shell is a command line application that lets you securely connect with different computers even in an unsecured network. We will use ssh to connect to our server making it easy to access the server using the host OS terminal.
Installation
We will need an ssh client on the host computer. We have already installed the ssh server on the ubuntu server.
For Windows 10 and above –
Launch Powershell as administrator and run the below command –
❯ Add-WindowsCapability -Online -Name OpenSSH.Client*
Installation for Linux distributions –
For Debian users (ubuntu, kali, etc) –
❯ sudo apt install openssh-client
For Arch (Arch Linux/Manjaro) –
For OpenSUSE –
❯ sudo zypper install openssh
For Fedora –
❯ sudo dnf install -y openssh-clients
Verify Installation
Launch cmd or terminal and execute the following command to verify –
Now, head to the settings of your virtual machine.
Head to the Network section and change the adapter type to bridged. Refer to the above image. This will create a bridge between your host computer’s network and your virtual server.
Start your server again, log yourself in and run the below command –
Note down the IP address. We will use this IP to connect to our server using ssh.
Launch a terminal or cmd in your host operating system. The syntax to connect to a computer is –
❯ ssh [username]@[ip address]
Therefore in my case, it will be –
❯ ssh linuxforddevices@192.168.0.103
Replace username and IP with your own.
Type your password when prompted. Now you are inside your server. For starters, run the following apt update command to update the server –
❯ sudo apt update && sudo apt upgrade
Summary
I use this method as an alternative to WSL, to run Linux on Windows as WSL has some limitations. Now you have a working ubuntu server which can be easily used using ssh. Try some features of the server then later you can install it on an actual machine.
Further Reading
- Dual boot Windows and Ubuntu in separate hard drives
- Network Configuration Guide for Ubuntu
- How to install and use AnyDesk on Ubuntu 22.04LTS?