Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smolodtsova13/kittygram_final
Социальная сеть для обмена фотографиями питомцев
https://github.com/smolodtsova13/kittygram_final
django django-rest-framework docker docker-compose github-actions gunicorn nginx postgresql python
Last synced: 22 days ago
JSON representation
Социальная сеть для обмена фотографиями питомцев
- Host: GitHub
- URL: https://github.com/smolodtsova13/kittygram_final
- Owner: SMolodtsova13
- Created: 2024-08-27T11:16:36.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-12-23T06:16:48.000Z (23 days ago)
- Last Synced: 2024-12-23T07:22:56.916Z (23 days ago)
- Topics: django, django-rest-framework, docker, docker-compose, github-actions, gunicorn, nginx, postgresql, python
- Language: JavaScript
- Homepage:
- Size: 405 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Социальная сеть для котиков Kittygram
## Технологический стек
[![Python](https://img.shields.io/badge/-Python-464646?style=flat&logo=Python&logoColor=56C0C0&color=008080)](https://www.python.org/)
[![Django](https://img.shields.io/badge/-Django-464646?style=flat&logo=Django&logoColor=56C0C0&color=008080)](https://www.djangoproject.com/)
[![Django REST Framework](https://img.shields.io/badge/-Django%20REST%20Framework-464646?style=flat&logo=Django%20REST%20Framework&logoColor=56C0C0&color=008080)](https://www.django-rest-framework.org/)
[![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-464646?style=flat&logo=PostgreSQL&logoColor=56C0C0&color=008080)](https://www.postgresql.org/)
[![Nginx](https://img.shields.io/badge/-NGINX-464646?style=flat&logo=NGINX&logoColor=56C0C0&color=008080)](https://nginx.org/ru/)
[![gunicorn](https://img.shields.io/badge/-gunicorn-464646?style=flat&logo=gunicorn&logoColor=56C0C0&color=008080)](https://gunicorn.org/)
[![Docker](https://img.shields.io/badge/-Docker-464646?style=flat&logo=Docker&logoColor=56C0C0&color=008080)](https://www.docker.com/)
[![Docker-compose](https://img.shields.io/badge/-Docker%20compose-464646?style=flat&logo=Docker&logoColor=56C0C0&color=008080)](https://www.docker.com/)
[![Docker Hub](https://img.shields.io/badge/-Docker%20Hub-464646?style=flat&logo=Docker&logoColor=56C0C0&color=008080)](https://www.docker.com/products/docker-hub)
[![GitHub%20Actions](https://img.shields.io/badge/-GitHub%20Actions-464646?style=flat&logo=GitHub%20actions&logoColor=56C0C0&color=008080)](https://github.com/features/actions)## Описание проекта Kittygram
Kittygram — это социальная сеть для обмена фотографиями любимых питомцев.
Пользователи могут регистрироваться, загружать фотографии с описанием и смотреть питомцев других пользователей. Также есть возможность добавить/убрать (своего) питомца, подобрать цвет, на который его окрас больше всего походит, рассказть всем о достижениях котика и указать его возраст!### Запуск проекта
- Склонируйте репозиторий на свой компьютер:
```
git clone [email protected]:SMolodtsova13/kittygram_final.git
```
- Создайте файл `.env` и заполните его своими данными. Все необходимые переменные перечислены в файле `.env.example`, находящемся в корневой директории проекта.## Создание Docker-образов
- Замените `YOUR_USERNAME` на свой логин на DockerHub:
```
cd frontend
docker build -t YOUR_USERNAME/kittygram_frontend .
cd ../backend
docker build -t YOUR_USERNAME/kittygram_backend .
cd ../nginx
docker build -t YOUR_USERNAME/kittygram_gateway .
```- Загрузите образы на DockerHub:
```
docker push YOUR_USERNAME/kittygram_frontend
docker push YOUR_USERNAME/kittygram_backend
docker push YOUR_USERNAME/kittygram_gateway
```## Деплой на сервере
- Подключитесь к удаленному серверу
```
ssh -i PATH_TO_SSH_KEY/SSH_KEY_NAME YOUR_USERNAME@SERVER_IP_ADDRESS
```- Создайте на сервере директорию `kittygram`:
```
mkdir kittygram
```- Установите Docker Compose на сервер:
```
sudo apt update
sudo apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install docker-compose
```- Скопируйте файлы `docker-compose.production.yml` и `.env` в директорию `kittygram/` на сервере:
```
scp -i PATH_TO_SSH_KEY/SSH_KEY_NAME docker-compose.production.yml YOUR_USERNAME@SERVER_IP_ADDRESS:/home/YOUR_USERNAME/kittygram/docker-compose.production.yml
```
Где:
- `PATH_TO_SSH_KEY` - путь к файлу с вашим SSH-ключом
- `SSH_KEY_NAME` - имя файла с вашим SSH-ключом
- `YOUR_USERNAME` - ваше имя пользователя на сервере
- `SERVER_IP_ADDRESS` - IP-адрес вашего сервера- Запустите Docker Compose в режиме демона:
```
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml up -d
```- Выполните миграции, соберите статические файлы бэкенда и скопируйте их в `/static/static/`:
```
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend python manage.py migrate
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend python manage.py collectstatic
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend cp -r /app/collected_static/. /static/static/
```- Откройте конфигурационный файл Nginx в редакторе nano:
```
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
```
## Настройка CI/CD- Файл workflow уже написан и находится в директории:
```
kittygram/.github/workflows/main.yml
```- Для адаптации его к вашему серверу добавьте секреты в GitHub Actions:
```
DOCKER_USERNAME # имя пользователя в DockerHub
DOCKER_PASSWORD # пароль пользователя в DockerHub
HOST # IP-адрес сервера
USER # имя пользователя
SSH_KEY # содержимое приватного SSH-ключа (cat ~/.ssh/id_rsa)
SSH_PASSPHRASE # пароль для SSH-ключаTELEGRAM_TO # ID вашего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
TELEGRAM_TOKEN # токен вашего бота (получить токен можно у @BotFather, команда /token, имя бота)
```## Автор:
_Молодцова Светлана_
**telegram** _@smolodtsova_