Практикум:
Веб-сервер в VM
Полный цикл: от установки Ubuntu Server до настройки Nginx, PHP и самоподписанного SSL в VirtualBox.
🖥️ Наша Цель
Создать с нуля полностью рабочий, но локальный и безопасный веб-сервер.
1. Подготовка
Вам понадобится гипервизор и ISO-образ. Флешка не нужна.
https://www.virtualbox.org/wiki/Downloads
https://ubuntu.com/download/server
2. Создание Виртуальной Машины
Создайте новую VM в VirtualBox (Type: Linux, Version: Ubuntu 64-bit).
RAM: 2048 MB, CPU: 2 cores, Disk: 25 GB.
⚠️ КРИТИЧЕСКАЯ НАСТРОЙКА: СЕТЬ
Зайдите в Настройки (Settings) -> Сеть (Network). Смените "Тип подключения" (Attached to) на Сетевой мост (Bridged Adapter).
Это даст VM реальный IP в вашей домашней сети, чтобы вы могли подключаться к ней с основного ПК.
3. Установка Ubuntu Server
Запустите VM и следуйте инструкциям инсталлятора.
❗️ ОБЯЗАТЕЛЬНО: SSH
На экране "SSH Setup" поставьте галочку [X] Install OpenSSH Server. Без этого мы не сможем управлять сервером удаленно.
- Network: Запомните IP-адрес, который получил сервер.
- Storage: "Use an entire disk".
- Snaps: Ничего не выбирайте (Docker и Nginx поставим вручную).
4. Настройка (SSH, UFW)
Сервер загрузился. Не трогайте окно VirtualBox. Откройте терминал на вашем основном компьютере.
ssh admin@192.168.1.50
sudo apt update && sudo apt upgrade -y
⚠️ НАСТРОЙКА FIREWALL (UFW)
Соблюдайте порядок, иначе потеряете доступ!
# 1. СНАЧАЛА разрешаем SSH
sudo ufw allow ssh
# 2. Разрешаем Web
sudo ufw allow http
sudo ufw allow https
# 3. ТЕПЕРЬ включаем
sudo ufw enable
5. Установка Nginx + PHP
Ставим веб-сервер и процессор PHP.
sudo apt install nginx
sudo apt install php8.2-fpm
Проверьте в браузере: http://[IP_ВАШЕЙ_VM]. Должно быть "Welcome to nginx!".
6. Конфигурация
Учим Nginx работать с PHP файлами.
sudo nano /etc/nginx/sites-available/default
Что менять?
- В строку
indexдобавьтеindex.php. - Раскомментируйте блок
location ~ \.php$. - Убедитесь, что
fastcgi_passуказывает наphp8.2-fpm.sock.
sudo nginx -t
sudo systemctl reload nginx
🚀 ЧЕЛЛЕНДЖ:
Создайте файл /var/www/html/info.php с содержимым <?php phpinfo(); ?>.
Откройте его в браузере. Если видите таблицу PHP — успех!
Удалите файл после проверки.
7. Виртуальные Хосты
Создадим отдельный сайт site1.com.
sudo mkdir -p /var/www/site1.com/html
echo "Hello Site 1" | sudo tee /var/www/site1.com/html/index.html
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com/html;
index index.html;
location / { try_files $uri $uri/ =404; }
}
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl reload nginx
💡 Как открыть site1.com?
Отредактируйте файл hosts на вашем основном компьютере:
Windows: C:\Windows\System32\drivers\etc\hosts
Mac/Linux: /etc/hosts
Добавьте строку: [IP_VM] site1.com
8. SSL (HTTPS)
Создадим самоподписанный сертификат для HTTPS.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nginx-selfsigned.key \
-out /etc/ssl/certs/nginx-selfsigned.crt
Добавьте в блок server в конфиге site1.com:
listen 443 ssl;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
🏆 ФИНАЛ:
Зайдите на https://site1.com. Браузер пожалуется на безопасность (это нормально для самоподписанного сертификата). Нажмите "Advanced -> Proceed". Вы должны увидеть свой сайт с замком!