Дисциплина: Linux Network Systems
Уровень: базовый + расширенный (optional)
- Лабораторная работа №16 (NP4)
- Веб-сервер: практика установки и настройки Apache в Linux
- Содержание
- 1. Цель и результаты обучения
- 2. Задачи лабораторной работы
- 3. Требования к среде
- 4. Важное замечание про VPS/VDS
- 5. Часть 1. Подготовка виртуальной машины
- 6. Часть 2. Установка Ubuntu Server и базовых инструментов
- 7. Часть 3. Установка Apache2 и проверка страницы по умолчанию
- 8. Часть 4. Изменение порта Apache на 8080
- 9. Часть 5 (дополнительно). Одновременная работа на 80 и 8080
- 10. Часть 6. Локальные домены через hosts
- 11. Часть 7. Виртуальные хосты a1.com, b2.com, c3.com
- 12. Часть 8. CGI-скрипт Python + ASCII-art
- 13. Альтернативный режим сети: Bridged Adapter
- 14. Критерии самопроверки
- 15. Контрольные вопросы
- Итог
Цель: освоить практику установки, конфигурирования и администрирования Apache в Linux; понять базовые принципы виртуального хостинга и выполнения серверных скриптов.
После выполнения работы студент умеет:
- устанавливать Apache2 через
apt; - проверять доступность веб-сервера по сети;
- менять порт прослушивания и откатывать изменения;
- настраивать несколько виртуальных хостов на одном сервере;
- запускать CGI-сценарий Python в Apache;
- применять те же операции в реальной VPS-среде.
- Установить Apache2.
- Проверить стандартную страницу Apache с хостовой машины.
- Изменить порт с
80на8080и убедиться, что сервер работает. - (Дополнительно) Включить одновременную работу на
80и8080. - Добавить в
hostsзаписи:a1.com,b2.com,c3.com. - Проверить разрешение имён через
ping. - Создать отдельные каталоги сайтов и уникальные
index.html. - Настроить Virtual Hosts для каждого домена.
- Включить
cgid, установить Python-библиотекуart, выполнить CGI-скрипт с ASCII-артом.
- ПК с Windows, RAM от 4 ГБ (рекомендуется 8 ГБ), свободно от 15 ГБ.
- Oracle VirtualBox (актуальная версия).
- Интернет-соединение.
- Базовые навыки CLI и редактирования текстовых файлов.
Все команды и конфигурации в этой работе соответствуют реальному администрированию VPS.
Разница только в доступе:
- в облаке вы получаете готовый IP и SSH-доступ;
- в лабораторной среде сервер разворачивается локально в VirtualBox.
- Перейдите на ubuntu.com/download/server.
- Скачайте Ubuntu Server 24.04 LTS.
- Сохраните ISO (например, в «Загрузки»).
Параметры:
- Имя:
Ubuntu-Apache-Lab - ISO: загруженный Ubuntu Server
- Тип:
Linux - Версия:
Ubuntu (64-bit) - Опция:
Skip Unattended Installation - RAM:
2048 MB - Диск:
15–20 GB, динамический
Нужно два адаптера:
- Adapter 1 = NAT (интернет в VM).
- Adapter 2 = Host-Only (доступ к серверу с Windows-хоста).
Почему так: NAT удобен для исходящих подключений VM, Host-Only даёт изолированный прямой доступ хост ↔ VM.
Пройдите мастер установки Ubuntu Server:
Try or Install Ubuntu ServerContinue without updating- стандартный
Ubuntu Server(не minimized) - OpenSSH: включить
Install OpenSSH server - после установки:
Reboot Now
После входа в систему:
sudo apt update
sudo apt upgrade -y
sudo apt install net-tools isc-dhcp-client -y- SSH‑сервер уже должен быть установлен и запущен. Проверим его статус:
sudo systemctl status sshЕсли служба не активна, запустите и добавьте в автозагрузку:
sudo systemctl enable --now sship -br link
ifconfig enp0s8
sudo ip link set enp0s8 up
sudo dhclient -v enp0s8
ip addr show | grep inetЗафиксируйте IP интерфейса enp0s8 (обычно 192.168.56.x) — он нужен в последующих шагах.
sudo apt install apache2 -y
sudo systemctl status apache2UFW (Uncomplicated Firewall) — простой интерфейс для управления правилами iptables. Просмотрим доступные профили приложений:
sudo ufw app listДолжны отображаться Apache, Apache Full, Apache Secure и OpenSSH. Разрешим только необходимый трафик:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full' # Разрешает и HTTP (80), и HTTPS (443)Включим брандмауэр:
sudo ufw enableПроверим статус:
sudo ufw statusПример вывода: text Status: active
| To | Action | From |
|---|---|---|
| OpenSSH | ALLOW | Anywhere |
| Apache Full ALLOW | Anywhere | |
| OpenSSH (v6) | ALLOW | Anywhere (v6) |
| Apache Full (v6) | ALLOW | Anywhere (v6) |
Откройте в браузере:
http://<IP_ВМ>
Должна открыться страница Apache2 Ubuntu Default Page.
(Опционально в VM):
sudo apt install lynx -y
lynx http://127.0.0.1sudo nano /etc/apache2/ports.confЗаменить:
Listen 80
на:
Listen 8080
sudo nano /etc/apache2/sites-available/000-default.confЗаменить:
<VirtualHost *:80>
на:
<VirtualHost *:8080>
sudo systemctl restart apache2http://<IP_ВМ>:8080
Сделайте обратные замены в:
/etc/apache2/ports.conf/etc/apache2/sites-available/000-default.conf
И перезапустите:
sudo systemctl restart apache2sudo nano /etc/apache2/ports.confДолжно быть:
Listen 80
Listen 8080
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-default-8080.conf
sudo nano /etc/apache2/sites-available/001-default-8080.confИзменить:
<VirtualHost *:80>
на:
<VirtualHost *:8080>
Активировать:
sudo a2ensite 001-default-8080.conf
sudo systemctl restart apache2Проверить:
http://<IP_ВМ>http://<IP_ВМ>:8080
Если есть ошибка:
sudo tail -f /var/log/apache2/error.logНа Windows (Notepad от имени администратора) откройте:
windows
C:\Windows\System32\drivers\etc\hosts
Linux
sudo vim /etc/hosts
Добавьте:
замените на свой IP-адрес
192.168.56.XX a1.com
192.168.56.XX www.a1.com
192.168.56.XX b2.com
192.168.56.XX www.b2.com
192.168.56.XX c3.com
192.168.56.XX www.c3.com
Замените IP на фактический IP вашей VM.
Проверка:
ping a1.com
ping b2.com
ping c3.com
На этом этапе в браузере http://a1.com ещё может открывать дефолтный сайт Apache — это ожидаемо до настройки Virtual Hosts.
sudo mkdir -p /var/www/a1.com
sudo mkdir -p /var/www/b2.com
sudo mkdir -p /var/www/c3.com
sudo chown -R $USER:$USER /var/www/a1.com
sudo chown -R $USER:$USER /var/www/b2.com
sudo chown -R $USER:$USER /var/www/c3.com
echo '<h1>Welcome to a1.com!</h1><p>This site is located in the directory /var/www/a1.com.</p>' > /var/www/a1.com/index.html
echo '<h1>Welcome to b2.com!</h1><p>This site is located in the directory /var/www/b2.com.</p>' > /var/www/b2.com/index.html
echo '<h1>Welcome to c3.com!</h1><p>This site is located in the directory /var/www/c3.com.</p>' > /var/www/c3.com/index.htmlСоздайте /etc/apache2/sites-available/a1.com.conf:
<VirtualHost *:80>
ServerName a1.com
ServerAlias www.a1.com
DocumentRoot /var/www/a1.com
ErrorLog ${APACHE_LOG_DIR}/a1.com_error.log
CustomLog ${APACHE_LOG_DIR}/a1.com_access.log combined
</VirtualHost>Создайте /etc/apache2/sites-available/b2.com.conf:
<VirtualHost *:80>
ServerName b2.com
ServerAlias www.b2.com
DocumentRoot /var/www/b2.com
ErrorLog ${APACHE_LOG_DIR}/b2.com_error.log
CustomLog ${APACHE_LOG_DIR}/b2.com_access.log combined
</VirtualHost>Создайте /etc/apache2/sites-available/c3.com.conf:
<VirtualHost *:80>
ServerName c3.com
ServerAlias www.c3.com
DocumentRoot /var/www/c3.com
ErrorLog ${APACHE_LOG_DIR}/c3.com_error.log
CustomLog ${APACHE_LOG_DIR}/c3.com_access.log combined
</VirtualHost>sudo a2ensite a1.com.conf
sudo a2ensite b2.com.conf
sudo a2ensite c3.com.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2http://a1.comhttp://b2.comhttp://c3.com
Каждый домен должен показывать свой контент.
sudo a2enmod cgid
sudo systemctl restart apache2sudo apt install python3-pip -y
sudo pip3 install --break-system-packages artСоздайте файл /usr/lib/cgi-bin/test.py:
#!/usr/bin/python3
from art import *
Art = text2art("TEST", font='block', chr_ignore=True)
print('Content-Type: text/plain')
print('')
print('This is my test!')
print(Art)Выдайте права:
sudo chmod 755 /usr/lib/cgi-bin/test.pyПроверка:
install curl in windows winget install curl
curl -H "Host: a1.com" http://192.168.56.103/cgi-bin/test.py
Если виден исходный код вместо результата, проверьте:
cgidвключён;- корректный shebang
#!/usr/bin/python3; - права
chmod 755.
Можно настроить выполнение CGI в DocumentRoot через Options +ExecCGI и AddHandler cgi-script .py, но в рамках базовой работы это не требуется.
Если нужен доступ к VM с других устройств локальной сети:
- Выключите VM:
sudo shutdown now. - VirtualBox → Settings → Network → Adapter 2.
- Смените
Host-OnlyнаBridged Adapter. - Выберите физический сетевой интерфейс.
- Запустите VM и используйте новый IP от роутера (например,
192.168.1.100).
Лабораторная выполнена корректно, если:
- Apache установлен и активен;
- страница доступна по IP;
- порт
8080работает после изменения конфигурации; - (optional) одновременно работают
80и8080; a1.com,b2.com,c3.comрезолвятся черезhosts;- каждый домен отдаёт собственный
index.html; - CGI-скрипт выполняется и выводит ASCII-art.
-
Что такое веб-сервер и зачем он нужен?
Веб-сервер принимает HTTP-запросы клиентов и возвращает веб-ресурсы (HTML, изображения, стили, скрипты). -
Что такое рабочая директория веб-сервера?
DocumentRoot— каталог с файлами сайта (по умолчанию в Apache:/var/www/html). -
Где основные настройки Apache?
/etc/apache2/apache2.conf/etc/apache2/ports.conf/etc/apache2/sites-available//etc/apache2/mods-available/
-
Что такое виртуальные хосты и как их настраивать?
Позволяют одному Apache обслуживать несколько доменов; настраиваются отдельными файлами<VirtualHost>+ServerName+DocumentRoot, активируютсяa2ensite. -
Что такое
hostsи где расположен?- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux:
/etc/hosts
Используется для локального сопоставления домена и IP без DNS.
- Windows:
-
Базовая структура HTML-файла
<!DOCTYPE html>
<html>
<head>
<title>Заголовок страницы</title>
</head>
<body>
Содержимое страницы
</body>
</html>В этой лабораторной работе вы прошли путь от нулевой установки Apache до многосайтовой конфигурации и выполнения серверного Python-скрипта. Полученный набор команд и практик напрямую переносится на реальные VPS-сценарии администрирования.