Перейти к содержанию

Обзор развертывания LAMP на сервере

Предпосылки и предварительные требования

  1. Операционная система – Ubuntu 22.04 (LTS “Jammy Jellyfish”).
  2. Права суперпользователя – для установки пакетов и изменения системных файлов.
  3. Доступ к сети – требуется открытый доступ к HTTP/HTTPS (80/443) для корректной работы веб‑сервера и сертификатов.
  4. Docker – установленный и настроенный для запуска контейнеров. Если Docker не установлен, его можно установить по официальной документации: apt-get install docker.io docker-compose.

Структура файлов и каталогов

После выполнения сценариев установки вы увидите следующую структуру на сервере:

/etc/apache2/
  ├─ apache2.conf
  └─ ...
/var/www/html/
  └─ info.php
/usr/share/keyrings/
  └─ mariadb-keyring.gpg
/data/nginx/
  ├─ nginx-certbot.env
  └─ user_conf.d/
docker-compose.yml   (файл compose.yml.j2, отрендеренный без шаблонов)
  • /var/www/html/info.php – тестовый PHP‑файл, подтверждающий работу PHP через Apache.
  • docker-compose.yml – конфигурация контейнера Nginx с Certbot для автоматического получения и обновления сертификатов Let’s Encrypt.
  • /data/nginx/nginx-certbot.env – переменные окружения, которые вы можете дополнить по своему усмотрению.

Права доступа и безопасность

Объект Минимальные права Комментарий
/var/www/html/info.php 644 Чтение для всех, запись только для владельца.
/etc/apache2/ 750 Владелец – root, группа – root.
/usr/share/keyrings/mariadb-keyring.gpg 644 Содержит ключи подписи, доступ для чтения всем.
/data/nginx/ 750 Для контейнера Nginx требуется доступ к секретам.

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

Базы данных

  • MariaDB 10.11 – установленный из официального репозитория.
  • После установки вам необходимо выполнить первоначальную настройку:
    sudo mysql_secure_installation
    
    Это позволит задать пароль для root‑пользователя и удалить небезопасные параметры.
  • Для создания пользовательской базы и пользователя можно подключиться к MariaDB:
    sudo mariadb -u root -p
    
    и выполнить нужные команды CREATE DATABASE, GRANT, FLUSH PRIVILEGES;.

Контейнеры Docker и их запуск

Nginx + Certbot

Файл docker-compose.yml описывает один сервис nginx:

services:
  nginx:
    image: jonasal/nginx-certbot:latest
    restart: unless-stopped
    environment:
      - CERTBOT_EMAIL=hkadm@hostkey.com
    env_file:
      - /data/nginx/nginx-certbot.env
    network_mode: host
    volumes:
      - nginx_secrets:/etc/letsencrypt
      - /data/nginx/user_conf.d:/etc/nginx/user_conf.d
  • Сетьnetwork_mode: host, поэтому контейнер слушает порты 80 и 443 напрямую на хосте.
  • Секреты – том nginx_secrets хранит сертификаты Let’s Encrypt.
  • Конфигурации – каталог /data/nginx/user_conf.d можно использовать для размещения пользовательских файлов конфигурации Nginx.

Запуск

docker compose up -d

Команда создаст необходимый том, загрузит образ jonasal/nginx-certbot:latest и запустит контейнер в фоне. После запуска контейнера Nginx будет автоматически запрашивать сертификаты для доменов, указанных в переменной CERTBOT_DOMAINS в файле /data/nginx/nginx-certbot.env.

Остановка

docker compose down

Обновление

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

docker compose pull
docker compose up -d

Прокси серверы (Nginx, Traefik и т.п.)

В текущей конфигурации используется контейнер Nginx, работающий как обратный прокси и одновременно предоставляющий HTTPS. Если потребуется подключить дополнительные прокси (Traefik, HAProxy и т.п.), можно добавить новые сервисы в docker-compose.yml и настроить маршрутизацию в каталоге /data/nginx/user_conf.d. Важно помнить, что при network_mode: host каждый новый контейнер будет пытаться привязать одни и те же порты, поэтому необходимо использовать отдельные сети Docker.

Настройки прав, запуск, остановка и обновление

Установка и обновление пакетов

sudo apt-get update
sudo apt-get upgrade -y

Перезапуск Apache

sudo systemctl restart apache2

Проверка работоспособности

Откройте браузер и перейдите по адресу сервера (или домену, если настроено DNS). Если всё выполнено корректно, вы увидите страницу с phpinfo(). При наличии Nginx с Certbot вы получите SSL‑подтверждение и перенаправление на HTTPS.

Управление контейнером Nginx

  • docker compose up -d – запускает контейнер в фоне.
  • docker compose stop – останавливает контейнер, но оставляет данные.
  • docker compose rm -f – удаляет контейнер и связанные ресурсы.
  • docker compose logs -f nginx – выводит логи в реальном времени.

Эти команды позволяют быстро управлять жизненным циклом прокси‑сервера и гарантировать, что сертификаты обновляются автоматически.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×