Проект: {PROJECT_NAME}
Последнее обновление: {ДАТА}
| Окружение | URL | Сервер | Назначение |
|---|---|---|---|
| Development | http://localhost:{PORT} | Локальная машина | Разработка |
| Staging | https://staging.{DOMAIN} | {СЕРВЕР_STAGING} | Тестирование |
| Production | https://{DOMAIN} | {СЕРВЕР_PROD} | Боевой |
# 1. Клонировать репозиторий
git clone {REPO_URL}
cd {PROJECT_NAME}
# 2. Создать venv и установить зависимости
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 3. Настроить .env
cp .env.example .env
# Отредактировать .env
# 4. Инициализировать БД
alembic upgrade head
# 5. Запустить
{КОМАНДА_ЗАПУСКА_DEV}
# Development с Docker Compose
docker-compose -f docker-compose.dev.yml up
# SSH на staging сервер
ssh {USER}@{STAGING_SERVER}
# Обновить код
cd /path/to/{PROJECT_NAME}
git pull origin develop
# Активировать venv
source venv/bin/activate
# Обновить зависимости
pip install -r requirements.txt
# Применить миграции
alembic upgrade head
# Перезапустить сервис
sudo systemctl restart {PROJECT_NAME}-staging
# На staging сервере
cd /path/to/{PROJECT_NAME}
git pull origin develop
docker-compose -f docker-compose.staging.yml up -d --build
# SSH на production сервер
ssh {USER}@{PROD_SERVER}
# 1. Создать backup БД
sudo -u postgres pg_dump {DB_NAME} > /backup/db_$(date +%Y%m%d_%H%M%S).sql
# 2. Обновить код
cd /path/to/{PROJECT_NAME}
git fetch --tags
git checkout tags/v{VERSION}
# 3. Активировать venv
source venv/bin/activate
# 4. Обновить зависимости
pip install -r requirements.txt
# 5. Применить миграции БД
alembic upgrade head
# 6. Собрать статику (если frontend)
{КОМАНДА_СБОРКИ_FRONTEND}
# 7. Перезапустить сервис (zero-downtime)
sudo systemctl reload {PROJECT_NAME}
# или
sudo systemctl restart {PROJECT_NAME}
# 8. Проверить статус
sudo systemctl status {PROJECT_NAME}
curl https://{DOMAIN}/health
# На production сервере
cd /path/to/{PROJECT_NAME}
git fetch --tags
git checkout tags/v{VERSION}
# Backup БД
docker exec {DB_CONTAINER} pg_dump -U {USER} {DB_NAME} > /backup/db_$(date +%Y%m%d_%H%M%S).sql
# Deploy
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d --no-deps --build {SERVICE_NAME}
# Проверить
docker-compose -f docker-compose.prod.yml ps
curl https://{DOMAIN}/health
# 1. SSH на сервер
ssh {USER}@{PROD_SERVER}
# 2. Вернуться к предыдущему тегу
cd /path/to/{PROJECT_NAME}
git checkout tags/v{PREVIOUS_VERSION}
# 3. Откатить миграции БД (если нужно)
alembic downgrade {PREVIOUS_MIGRATION_ID}
# 4. Восстановить зависимости
pip install -r requirements.txt
# 5. Перезапустить
sudo systemctl restart {PROJECT_NAME}
# 6. Проверить
curl https://{DOMAIN}/health
# Остановить приложение
sudo systemctl stop {PROJECT_NAME}
# Восстановить БД
sudo -u postgres psql {DB_NAME} < /backup/db_{TIMESTAMP}.sql
# Запустить приложение
sudo systemctl start {PROJECT_NAME}
# Статус сервиса
sudo systemctl status {PROJECT_NAME}
# Логи
sudo journalctl -u {PROJECT_NAME} -f
# Логи приложения
tail -f /var/log/{PROJECT_NAME}/app.log
# Docker логи
docker-compose logs -f {SERVICE_NAME}
# HTTP health endpoint
curl https://{DOMAIN}/health
# Ожидаемый ответ
{"status": "ok", "version": "{VERSION}"}
# БД проверка
curl https://{DOMAIN}/health/db
# Redis проверка
curl https://{DOMAIN}/health/redis
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
tags:
- 'v*'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to server
run: |
# Деплой скрипт
# .gitlab-ci.yml
deploy:production:
stage: deploy
only:
- tags
script:
- # Деплой команды
НЕ КОММИТИТЬ в git:
- .env файлы
- API ключи
- Пароли БД
- SSH ключи
Хранить:
- В переменных окружения сервера
- В vault (HashiCorp Vault, AWS Secrets Manager)
- В CI/CD secrets
# Пример: установка secrets на сервере
echo "DATABASE_URL=postgresql://..." >> /etc/{PROJECT_NAME}/.env
chmod 600 /etc/{PROJECT_NAME}/.env
# Проверить логи
sudo journalctl -u {PROJECT_NAME} -n 50
# Проверить конфиг
{КОМАНДА_ПРОВЕРКИ_КОНФИГА}
# Проверить порты
sudo netstat -tulpn | grep {PORT}
# Проверить подключение
psql -h localhost -U {DB_USER} -d {DB_NAME}
# Проверить статус PostgreSQL
sudo systemctl status postgresql
Последнее обновление: {ДАТА}
Автор: {АВТОР}