Как создать локальный веб-сервер на Ubuntu 20.04

1) Устанавливаем Ubuntu server 20.04

и сразу ставим галочку для установки SSH сервера.
 
- Подключаемся с PuTTY

- Устанавливаем Apache


sudo apt update
sudo apt install apache2


- Настраиваем Брендмауер UFW


sudo ufw enable    # Активируем UFW
sudo ufw app list   # смотрим профили приложений
sudo ufw status verbose     # Проверяем статус ufw
sudo ufw allow 22 # Разрешаем подключение к порту 22
sudo ufw deny 110    # для примера, Запрещающее правило для ufw  
sudo ufw allow ftp   # Для примера, разрешающее правило для ftp


- Устанавливаем webmin


Добавляем официальный репозиторий программы в источники приложений. Для этого нужно открыть файл:
 sudo nano /etc/apt/sources.list
и добавить туда строки:
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Затем добавляем GPG-ключ репозитория:

sudo wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc

Обновляем списки пакетов:

sudo apt update

Устанавливаем Webmin:

sudo apt install webmin

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

sudo ufw allow 10000

Настройка Webmin на Ubuntu 20.04

Получить доступ к интерфейсу Webmin можно, просто набрав адрес вашего сервера и порт 10000 в адресной строке браузера. По умолчанию Webmin использует https, поэтому, тоже нужно будет применить этот протокол. Адрес будет выглядеть вот так:

https://ip_адрес:10000

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

-Устанавливаем MySQL


sudo apt install mysql-server

Запускаем скрип безопасности  mysql для удаления всех опасных настроек :
sudo mysql_secure_installation

Проверяем доступность консоли MySQL:
sudo mysql
Для выхода из консоли:
exit

- Устанавливаем PHP
Чтобы установить все необходимые пакеты (php; php-mysql; libapache2-mod-php) необходимо выполнить:
sudo apt install php libapache2-mod-php php-mysql
Проверяем версию:
php -v
########################################

- Создаём виртуальный хост для сайта.


Создаём внутри /var/www структуру каталогов для нашего сайта.
Создаём каталог:
sudo mkdir /var/www/printer.local  
где printer.local - мой сайт.
Назначаем права владения для директории с помощью переменной среды $USER (для текущего системного пользователь).
sudo chown -R $USER:$USER /var/www/printer.local
Изменяем разрешения, чтобы обеспечить доступ к общей WEB-директории и всем содержащимся в ней файлам и папкам.
sudo chmode -R 755 /var/www

Создаём и открываем файл конфигурации:
sudo nano /etc/apache2/sites-available/printer.local.conf
Пишем конфигурацию:

<VirtualHost *:80>
    ServerName printer.local
    ServerAlias www.printer.local
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/printer.local
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
    
Активируем новый виртуальный хостинг:
sudo a2ensite printer.local
sudo a2ensite printer.local.conf

Для активации новой конфигурации необходимо перезапустить apache:
sudo systemctl reload apache2

Отключаем сайт по умолчанию - Apache:
sudo a2dissite 000-default
Cнова перезапускаем apache.

Проверяем нашу конфигурацию на ошибки синтаксиса:
sudo apache2ctl configtest
С синтаксисом всё ОК. Но система ругается на некритичную ошибку:
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    Syntax OK
Это лучше исправить:
В файле /etc/apache2/apache2.conf добавляем строку: ServerName 127.0.0.1
sudo nano /etc/apache2/apache2.conf
Теперь - всё OK!

-Настройка локального файла hosts


Без этой настройки сайт открывалься только по вызову IP адреса или имени сервера.
На локальном компьютере (с которого вы намереваетесь подключиться к сайту) нужно добавить строки:
    192.168.1.5 printer.local
    192.168.1.5 www.printer.local         -где IP адрес вашего сервера.

 На Linux  -
 sudo nano /etc/hosts
 На Windows, под Администратором -
 открыть и добавить вышеуказанные строки
 C:\Windows\System32\drivers\etc\hosts
 
Проверяем работоспособность.
Создаём и открываем файл index.html
sudo nano /var/www/printer.local/index.html
Добавляем "код":

<html>
    <head>
        <title> Guten Morgen!</title>
    </head>
<body>
    <h1> The virtual host  printer.local  is working!</h1>
</body>

</html>

Сохраняем.

Проверяем.

Радуемся.