Kittygram - это уникальная платформа, которая позволяет вам окунуться в мир безграничной милоты и уютных пушистых созданий. Присоединяйтесь к нашей котомании и делятесь своими самыми красивыми и интересными моментами с вашими питомцами или любимыми уличными кошками. Будьте частью нашей дружной кошачьей семьи на Kittygram!
Продакш-версия проекта предназначена для использования в рабочей среде или для публичного доступа. Она содержит стабильный и протестированный код, который готов к использованию в реальных условиях.
Обычная версия проекта может содержать новые функции, исправления ошибок или экспериментальный код, который еще не был полностью протестирован или утвержден для использования в продакшн среде. Она может быть полезна для разработчиков, которые хотят экспериментировать с новыми функциями или вносить изменения в проект.
Выбор того, какую версию использовать, зависит от ваших потребностей и целей. Если вы хотите использовать стабильный и проверенный код, рекомендуется использовать продакш-версию. Если вы хотите получить доступ к новым функциям или исправлениям ошибок, которые еще не были выпущены в продакш-версии, вы можете использовать обычную версию.
docker-compose.yml написан так, что образы билдятся при каждом запуске. Это удобно в процессе отладки, но в продакшене удобнее запускать контейнеры из готовых образов. Для этого создан отдельный файл конфигурации Docker Compose(docker-compose.production.yml), который будет управлять запуском контейнеров на боевом сервере. Он будет аналогичен тому, который уже есть, но в нём будут использоваться собранные образы из Docker Hub.
- Python 3.9
- Django==3.2.3
- djangorestframework==3.12.4
- Nginx
- gunicorn
- psycopg2-binary==2.9.3
-
Клонируйте репозиторий на свой компьютер:
git clone git@github.com:Ilya-Reznikov60/kittygram_final.git
cd kittygram
-
Создайте файл .env и заполните его своими данными. Перечень данных указан в корневой директории проекта в файле .env.example.
-
Замените username на ваш логин на DockerHub:
cd frontend docker build -t username/kittygram_frontend . cd ../backend docker build -t username/kittygram_backend . cd ../nginx docker build -t username/kittygram_gateway .
-
Загрузите образы на DockerHub:
docker push username/kittygram_frontend docker push username/kittygram_backend docker push username/kittygram_gateway
-
Подключитесь к удаленному серверу
ssh -i путь_до_файла_с_SSH_ключом/название_файла_с_SSH_ключом имя_пользователя@ip_адрес_сервера
-
Создайте на сервере директорию kittygram через терминал
mkdir kittygram
-
Установка docker compose на сервер:
sudo apt update sudo apt install curl curl -fSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh sudo apt-get install docker-compose-plugin
-
В директорию kittygram/ скопируйте файлы docker-compose.production.yml и .env:
scp -i path_to_SSH/SSH_name docker-compose.production.yml username@server_ip:/home/username/kittygram/docker-compose.production.yml * ath_to_SSH — путь к файлу с SSH-ключом; * SSH_name — имя файла с SSH-ключом (без расширения); * username — ваше имя пользователя на сервере; * server_ip — IP вашего сервера.
-
Запустите docker compose в режиме демона:
sudo docker compose -f docker-compose.production.yml up -d
-
Выполните миграции, соберите статические файлы бэкенда и скопируйте их в /backend_static/static/:
sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/collected_static/. /backend_static/static/
-
На сервере в редакторе nano откройте конфиг Nginx:
sudo nano /etc/nginx/sites-enabled/default
-
Измените настройки location в секции server:
location / { proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:9000; }
-
Проверьте работоспособность конфига Nginx:
sudo nginx -t
Если ответ в терминале такой, значит, ошибок нет:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
-
Перезапускаем Nginx
sudo service nginx reload
-
Файл workflow уже написан. Он находится в директории
kittygram/.github/workflows/main.yml
-
Для адаптации его на своем сервере добавьте секреты в GitHub Actions:
DOCKER_USERNAME # имя пользователя в DockerHub DOCKER_PASSWORD # пароль пользователя в DockerHub HOST # ip_address сервера USER # имя пользователя SSH_KEY # приватный ssh-ключ (cat ~/.ssh/id_rsa) SSH_PASSPHRASE # кодовая фраза (пароль) для ssh-ключа TELEGRAM_TO # id телеграм-аккаунта (можно узнать у @userinfobot, команда /start) TELEGRAM_TOKEN # токен бота (получить токен можно у @BotFather, /token, имя бота)
Резников Илья - GitHub