Category: Uncategorized

  • 1. Production-like веб-инфраструктура WordPress

    О проекте & Задача

    Развёртывание отказоустойчивого контейнеризированного веб-сервиса с автоматическим деплоем и строгим разделением прав доступа.

    Инженерные решения
    • Полная контейнеризация и оркестрация через Docker Compose.
    • Автоматический выпуск и обновление SSL-сертификатов Let’s Encrypt, жесткий редирект на HTTPS.
    • Построение автоматического GitLab CI/CD pipeline (этапы проверки конфигурации, линтинга Nginx и деплоя через Docker outside of Docker).
    Стек технологий
    Docker Docker Compose Nginx PHP-FPM MariaDB GitLab CI/CD Let’s Encrypt
    Исходный код в GitLab ➔

    2. Изолированный сервер баз данных MySQL

    О проекте & Задача

    Организация безопасного контура хранения данных СУБД с многоуровневой сетевой изоляцией для защиты от внешних атак.

    Инженерные решения
    • Сетевая безопасность (Hardening): стандартный порт 3306 полностью закрыт извне и проброшен исключительно на loopback (127.0.0.1) хоста.
    • Ограничение прав на уровне СУБД: доступ пользователям разрешен строго внутри выделенной IP-подсети Docker.
    • Безопасное администрирование: единственным каналом удаленного взаимодействия с БД является шифрованный SSH-туннель.
    Стек технологий
    MySQL Docker Network SSH Tunneling Linux Security
    Исходный код в GitLab ➔

    3. Защищенный контур серверной инфраструктуры (Baseline)

    О проекте & Задача

    Создание безопасного эталонного Linux-сервера для развертывания production-приложений с защитой от несанкционированного доступа.

    Инженерные решения
    • Настройка Firewall (UFW) с политикой запрета всего входящего трафика, кроме явно разрешенного.
    • Интеграция Fail2ban для динамической блокировки хостов при попытках подбора паролей по SSH.
    • Организация удаленного доступа сотрудников через приватную сеть WireGuard VPN.
    • Полный отказ от паролей в пользу авторизации по SSH-ключам.
    Стек технологий
    Ubuntu Server UFW Fail2ban WireGuard VPN SSH Security
    Исходный код в GitLab ➔

    4. Автоматизация администрирования: Bash-скрипты и Systemd

    О проекте & Задача

    Разработка отказоустойчивых скриптов для снижения рутинной нагрузки на сисадмина: резервное копирование и мониторинг логов веб-сервера.

    Инженерные решения
    • Скрипт бэкапа БД: Автоматический дамп базы WordPress, валидация успешности выполнения, логирование ошибок и ротация архивов (автоудаление старых копий для экономии места).
    • Скрипт анализа логов: Парсинг access-логов Nginx с помощью регулярных выражений, выявление аномалий (топ IP-адресов с ошибками 4xx/5xx).
    • Оркестрация на хосте: Запуск автоматизации переведен с классического cron на современный стек systemd.service и systemd.timer для изоляции и детального логирования в journalctl.
    Стек технологий
    Bash (Shell) Regex Systemd Timers Journalctl Nginx logs
    Исходный код в GitLab ➔
  • Контейнеризированный WordPress с CI/CD

    Project by kondratev.it@gmail.com

    1. Описание проекта

    Проект представляет собой production-подобное окружение для запуска WordPress с использованием Docker Compose.
    Реализованы контейнеризация, разделение сервисов и автоматический деплой через GitLab CI/CD.
    Цель проекта — продемонстрировать навыки DevOps: работа с Docker, сетями, volume, CI/CD и веб-сервером Nginx.

    2. Архитектура решения

    Проект реализует 3-уровневую архитектуру:
    – Frontend: Nginx (принимает HTTP-запросы)
    – Backend: WordPress (PHP-FPM)
    – Database: MariaDB

    Взаимодействие:
    Клиент → Nginx → PHP-FPM → MariaDB

    3. Используемые технологии

    – Docker / Docker Compose
    – Nginx
    – WordPress (PHP-FPM)
    – MariaDB
    – GitLab CI/CD
    – Linux

    4. Docker Compose структура

    Сервисы:
    – nginx: веб-сервер, порт 80
    – wordpress: приложение, порт 9000 (внутренний)
    – db: база данных MariaDB

    Volumes:
    – wordpress_data
    – db_data

    Network:
    – wordpress-project_default

    5. Сетевое взаимодействие

    Все контейнеры находятся в одной bridge-сети.
    Обращение между сервисами происходит по DNS-именам:
    – nginx → wordpress:9000
    – wordpress → db:3306

    6. Хранение данных

    Данные сохраняются в Docker volumes:
    – WordPress файлы: /var/www/html
    – База данных: /var/lib/mysql

    Удаление volume приводит к полной потере данных.

    7. CI/CD процесс

    Pipeline состоит из этапов:
    1. validate — проверка docker-compose
    2. lint-nginx — проверка конфигурации nginx
    3. deploy — деплой приложения

    Используется GitLab Runner с доступом к Docker (Docker outside of Docker).

    8. Процесс деплоя

    1. Push в репозиторий
    2. Запуск pipeline
    3. Проверка конфигурации
    4. Деплой контейнеров
    5. Приложение доступно по http://localhost

    9. Поток обработки запроса

    1. Пользователь обращается к серверу
    2. Nginx принимает запрос
    3. PHP-запрос передается в WordPress (php-fpm)
    4. WordPress обращается к базе данных
    5. Ответ возвращается пользователю

    10. Текущее состояние

    После деплоя WordPress находится в состоянии первичной установки.
    При открытии сайта происходит редирект на /wp-admin/install.php.

    11. Безопасность и best practices

    – Изоляция сервисов через Docker
    – Использование volumes для хранения данных
    – Отсутствие прямого доступа к базе извне
    – Разделение ролей сервисов
    – Возможность внедрения secrets и HTTPS

    12. Возможности для развития

    – Добавление HTTPS (Let’s Encrypt)
    – Использование Docker Secrets
    – Автоматическая установка WordPress
    – Мониторинг (Prometheus, Grafana)
    – Логирование (ELK stack)
    – Blue/Green деплой

    13. Вывод

    Проект демонстрирует практические навыки DevOps:
    – Контейнеризация приложений
    – Построение архитектуры
    – Настройка CI/CD
    – Работа с сетями и хранением данных

    Проект может быть использован как база для production-системы.