Initial commit
This commit is contained in:
18
docs/README.md
Normal file
18
docs/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Документация проекта
|
||||
|
||||
Добро пожаловать! Этот раздел содержит полную документацию по проекту, навигацию по подсекциям, примеры конфигураций и инструкции по развёртыванию и публикации в Gitea.
|
||||
|
||||
## Навигация
|
||||
- [Обзор и требования](./overview.md)
|
||||
- [Запуск и деплой](./deployment.md)
|
||||
- [Мониторинг: метрики и алёрты](./monitoring.md)
|
||||
- [Примеры .env файлов](./env-examples.md)
|
||||
- [Публикация в Gitea](./gitea.md)
|
||||
- [Диагностика и троблшутинг](./troubleshooting.md)
|
||||
|
||||
## Быстрый старт
|
||||
- Скопируйте и заполните `.env.v1`, `.env.v2`, `.env.db` по образцам из [env-examples.md](./env-examples.md).
|
||||
- Запустите `docker compose up -d` из корня проекта.
|
||||
- Проверьте таргеты в Prometheus: `http://localhost:9090/targets`.
|
||||
- Проверьте метрики экспортеров: Nginx `http://localhost:9113/metrics`, PHP-FPM `http://localhost:9253/metrics`, Postgres `http://localhost:9187/metrics`, Memcached `http://localhost:9150/metrics`.
|
||||
- Alertmanager UI: `http://localhost:9093` (настройте получателей в `monitoring/alertmanager.yml`).
|
||||
23
docs/deployment.md
Normal file
23
docs/deployment.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Запуск и деплой
|
||||
|
||||
## Локальный запуск (DEV)
|
||||
1. Заполните `.env.v1`, `.env.v2`, `.env.db` по образцам из [env-examples.md](./env-examples.md).
|
||||
2. Запустите: `docker compose up -d` в корне проекта.
|
||||
3. Проверьте:
|
||||
- API v1: `http://localhost/api/v1/`
|
||||
- API v2: `http://localhost/api/v2/`
|
||||
- Nginx статус: `http://localhost/status`
|
||||
- Prometheus: `http://localhost:9090`
|
||||
- Alertmanager: `http://localhost:9093`
|
||||
|
||||
## Продакшен (общие рекомендации)
|
||||
- Используйте секреты: Docker Swarm/K8s Secrets, Vault или SSM Parameter Store.
|
||||
- Ограничьте `/status` (Nginx stub_status) по IP/ACL.
|
||||
- Разнесите экспортеры и Prometheus на отдельные ноды.
|
||||
- Настройте резервное копирование для Postgres и ретеншен для Prometheus.
|
||||
- Добавьте Grafana для визуализации (рекомендуется).
|
||||
|
||||
## Обновление стека
|
||||
- Обновить конфиги: `monitoring/*`, `nginx/nginx.conf`, `.env.*`.
|
||||
- Перезапуск: `docker compose up -d`.
|
||||
- Проверка таргетов: `http://localhost:9090/targets`.
|
||||
30
docs/env-examples.md
Normal file
30
docs/env-examples.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Примеры .env файлов
|
||||
|
||||
## .env.v1
|
||||
```
|
||||
DB_HOST=postgres
|
||||
DB_NAME=app_db
|
||||
DB_USER=app_user
|
||||
DB_PASS=local_password_v1
|
||||
MEMCACHED_HOST=memcached
|
||||
```
|
||||
|
||||
## .env.v2
|
||||
```
|
||||
DB_HOST=postgres
|
||||
DB_NAME=app_db
|
||||
DB_USER=app_user
|
||||
DB_PASS=local_password_v2
|
||||
MEMCACHED_HOST=memcached
|
||||
```
|
||||
|
||||
## .env.db
|
||||
```
|
||||
POSTGRES_DB=app_db
|
||||
POSTGRES_USER=app_user
|
||||
POSTGRES_PASSWORD=local_db_password
|
||||
```
|
||||
|
||||
## Примечания
|
||||
- Эти файлы добавлены в `.gitignore` и не должны коммититься.
|
||||
- В продакшене используйте секрет-менеджеры или переменные окружения CI/CD.
|
||||
28
docs/gitea.md
Normal file
28
docs/gitea.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Публикация в Gitea
|
||||
|
||||
## Подготовка репозитория
|
||||
- Убедитесь, что `.env.*` и `logs/` в `.gitignore`.
|
||||
- Проверьте `README.md` и раздел `docs/` на актуальность.
|
||||
|
||||
## Создание репозитория в Gitea
|
||||
1. Зайдите в Gitea и создайте новый репозиторий (Private/Public по вашему выбору).
|
||||
2. Скопируйте URL репозитория (SSH/HTTPS).
|
||||
|
||||
## Локальная привязка и пуш
|
||||
```bash
|
||||
# Инициализация (если не инициализировано)
|
||||
git init
|
||||
|
||||
# Добавление ремоута
|
||||
git remote add origin <URL-вашего-репозитория>
|
||||
|
||||
# Коммиты и пуш
|
||||
git add .
|
||||
git commit -m "Initial commit"
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
## CI/CD (рекомендации)
|
||||
- Включите защищённые секреты в Gitea/Runner.
|
||||
- Запланируйте пайплайн: линтеры, сборка, запуск `docker compose config && docker compose up -d`.
|
||||
- Храните prod-секреты вне репозитория (Secrets/Variables).
|
||||
24
docs/monitoring.md
Normal file
24
docs/monitoring.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Мониторинг: метрики и алёрты
|
||||
|
||||
## Экспортеры и порты
|
||||
- Nginx Exporter (`nginx_exporter`): `http://localhost:9113/metrics` — читает `http://nginx/status`.
|
||||
- PHP-FPM Exporter (`php_fpm_exporter`): `http://localhost:9253/metrics` — опрашивает `tcp://php-fpm-v1:9000/status` и `tcp://php-fpm-v2:9000/status`.
|
||||
- Postgres Exporter (`postgres_exporter`): `http://localhost:9187/metrics`.
|
||||
- Memcached Exporter (`memcached_exporter`): `http://localhost:9150/metrics`.
|
||||
|
||||
## Prometheus
|
||||
- UI: `http://localhost:9090`
|
||||
- Конфиг: `monitoring/prometheus.yml`
|
||||
- Таргеты: `http://localhost:9090/targets`
|
||||
|
||||
## Alertmanager
|
||||
- UI: `http://localhost:9093`
|
||||
- Конфиг: `monitoring/alertmanager.yml`
|
||||
- Правила алёртов: `monitoring/alert.rules.yml`
|
||||
|
||||
## Правила по умолчанию
|
||||
- `InstanceDown`: `up == 0` в течение 1 минуты — критический алерт.
|
||||
|
||||
## Расширение
|
||||
- Добавьте свои правила в `monitoring/alert.rules.yml`.
|
||||
- Настройте получателей в `monitoring/alertmanager.yml` (email/telegram/webhook).
|
||||
16
docs/overview.md
Normal file
16
docs/overview.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Обзор и требования
|
||||
|
||||
Проект содержит два PHP API (v1 и v2), Nginx для роутинга, Postgres и Memcached. Добавлены healthchecks, метрики через экспортеры и базовые алёрты.
|
||||
|
||||
## Компоненты
|
||||
- Nginx (`nginx`) — прокси и роутинг `/api/v1` и `/api/v2`.
|
||||
- PHP-FPM v1/v2 (`php-fpm-v1`, `php-fpm-v2`) — обработка PHP.
|
||||
- Postgres (`postgres`) — база данных.
|
||||
- Memcached (`memcached`) — кеш.
|
||||
- Экспортеры: `nginx_exporter`, `php_fpm_exporter`, `postgres_exporter`, `memcached_exporter`.
|
||||
- Мониторинг: `prometheus`, `alertmanager`.
|
||||
|
||||
## Требования
|
||||
- Docker 24+ и Docker Compose v2.
|
||||
- Порты, свободные на хосте: `80, 5432, 11211, 9113, 9253, 9187, 9150, 9090, 9093`.
|
||||
- Windows: запуск из PowerShell, пути проекта в `c:\docker\nginxphp\server\project`.
|
||||
17
docs/troubleshooting.md
Normal file
17
docs/troubleshooting.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Диагностика и троблшутинг
|
||||
|
||||
## Healthchecks
|
||||
- `nginx`: проверка `http://localhost/`.
|
||||
- `php-fpm-v1/v2`: проверка `http://nginx/api/v1/` и `http://nginx/api/v2/`.
|
||||
- `postgres`: `pg_isready`.
|
||||
- `memcached`: `pidof memcached`.
|
||||
|
||||
## Типичные проблемы
|
||||
- Порты заняты: проверьте, что нет конфликтующих сервисов.
|
||||
- Ошибка доступа к `/status`: ограничьте доступ в продакшене, в DEV открыт.
|
||||
- Postgres exporter: проверьте `DATA_SOURCE_NAME` и учётные данные.
|
||||
|
||||
## Логи
|
||||
- Nginx: `./logs/nginx`.
|
||||
- PHP-FPM v1/v2: `./logs/php-v1`, `./logs/php-v2`.
|
||||
- Postgres: внутри контейнера `/var/lib/postgresql/data/log` (при включении логгирования).
|
||||
Reference in New Issue
Block a user