🌐 stat.miliutin.ru - некоммерческий проект для анализа открытых данных по трафику российских СМИ.
Цель проекта — предоставить СМИ инструмент для анализа посещаемости конкурентов на основе открытых данных.
Проект предназначен для автоматического сбора и хранения данных о ежедневной посещаемости российских медиа-сайтов из рейтинга LiveInternet. Сервис парсит данные в конце дня, сохраняет их в БД и предоставляет доступ к статистике через веб-интерфейс. Пользователь может просматривать графики посещаемости за указанный период и выгружать данные в CSV-формате.
Frontend - Алексей Малахов, Backend - Никита Милютин
Перед началом деплоя на сервере должны быть установлены следующие утилиты:
- crontab - для автоматического обновления SSL-сертификатов.
- Docker - для контейнеризации приложения.
- Docker-compose - для управления мультиконтейнерными приложениями.
Если они еще не установлены, воспользуйтесь следующими командами:
# Установка crontab
sudo apt update
sudo apt install cron
# Установка Docker
sudo apt install docker.io
# Установка Docker Compose
sudo apt install docker-compose
Перейдите в директорию /home и создайте папку с проектом:
cd /home
mkdir stat_mil_ru
cd stat_mil_ru
mkdir project
Скопируйте файл deploy.sh из удаленного репозитория в директорию /home/stat_mil_ru/:
# Пример команды для копирования (используйте свой путь к репозиторию):
scp user@remote_server:/deploy_or_reset_files_dir/deploy.sh /home/stat_mil_ru/
Убедитесь, что файл deploy.sh имеет права на выполнение:
chmod +x /home/stat_mil_ru/deploy.sh
Создайте директорию ssl в корневой директории сервера и настройте структуру для SSL:
cd /
mkdir ssl
cd ssl
mkdir ssl_stat
cd ssl_stat
mkdir conf
mkdir www
mkdir -p conf/.well-known/acme-challenge
Объяснение:
- Папка ssl_stat/conf будет использоваться для хранения конфигурационных файлов.
- Папка ssl_stat/www будет служить для временного хранения файлов, необходимых для проверки SSL-сертификатов.
- Папка .well-known/acme-challenge необходима для автоматического обновления сертификатов с помощью Let's Encrypt.
Для установки и запуска всех сервисов выполните команду:
cd /home/stat_mil_ru
bash deploy.sh
Что делает скрипт deploy.sh:
- Загружает необходимые Docker-образы.
- Разворачивает контейнеры с вашим приложением и сервисами.
- Настраивает SSL-сертификаты через Let's Encrypt.
- Применяет конфигурации для Nginx или другого веб-сервера, если это предусмотрено.
После успешного выполнения скрипта, приложение будет доступно по указанному доменному имени.
Для автоматического обновления SSL-сертификатов используем crontab.
Откройте файл конфигурации crontab:
crontab -e
Добавьте следующую строку в файл:
@monthly cd /home/stat_mil_ru/project/src/liveinternet && docker-compose restart certbot
Объяснение:
@monthly
- команда будет выполняться ежемесячно.- Переход в директорию, где находится конфигурация docker-compose для обновления сертификатов.
- Перезапуск сервиса certbot, который отвечает за обновление SSL-сертификатов.
Сохраните файл и закройте редактор.
После деплоя можно проверить статус контейнеров с помощью:
docker-compose ps
Для просмотра логов:
docker-compose logs -f
Если возникли ошибки при запуске, выполните команду для их устранения:
docker-compose down && docker-compose up -d
-
Обновить Docker-образы:
docker-compose pull
-
Перезапустить все сервисы:
docker-compose restart
-
Остановить и удалить все контейнеры:
docker-compose down
Если все шаги выполнены правильно, приложение будет успешно развернуто на сервере и доступно по вашему доменному имени с работающим SSL-сертификатом.
Для любых изменений в конфигурации Docker или Nginx обновляйте соответствующие файлы и перезапускайте сервисы с помощью:
docker-compose up -d