Skip to content

Commit

Permalink
правка readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Svetlana-Zimina committed Oct 9, 2023
1 parent ab6b073 commit 00be6a8
Showing 1 changed file with 92 additions and 71 deletions.
163 changes: 92 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,42 +23,50 @@
## Локальный запуск проекта

1. ### Склонируйте репозиторий:

```
git clone [email protected]:Svetlana-Zimina/foodgram-project-react.git
```

2. ### Создайте и активируйте виртуальное окружение:
Команда для установки виртуального окружения на Mac или Linux:

> python3 -m venv env
> source env/bin/activate
```
python3 -m venv env
source env/bin/activate
```

Команда для установки виртуального окружения на Windows:

> python -m venv venv
> source venv/Scripts/activate
```
python -m venv venv
source venv/Scripts/activate
```

3. ### В корневой дирректории создайте файл .env по образцу .env.example.

4. ### Установите зависимости:

> cd backend
> pip install -r requirements.txt
```
cd backend
pip install -r requirements.txt
```

5. ### Проведите миграции:

```
python manage.py migrate
```

6. ### Наполните тестовую базу ингредиентами:

```
python manage.py import_ingredients
```

7. ### При необходимости создайте суперпользователя:

```
python manage.py createsuperuser
```

8. ### Запустите локальный сервер:

```
python manage.py runserver
```


## Локальный запуск проекта через Docker
Expand All @@ -67,107 +75,120 @@ python manage.py runserver
Пользователям Windows нужно будет подготовить систему, установить для неё ядро Linux — и после этого установить Docker.

2. ### В корневой дирректории выполните команды:

> docker-compose up
> docker compose exec backend python manage.py migrate
> docker compose exec backend python manage.py import_ingredients
> docker compose exec backend python manage.py createsuperuser
> docker compose exec backend python manage.py collectstatic
```
docker-compose up
docker compose exec backend python manage.py migrate
docker compose exec backend python manage.py import_ingredients
docker compose exec backend python manage.py createsuperuser
docker compose exec backend python manage.py collectstatic
```


## Просмотр API документации

1. ### Перейдите в папку infra:

```
cd infra/
```

2. ### Выполните команду:
```
docker-compose up
```

> docker-compose up
> Документация будет доступна по адресу: http://localhost/api/docs/
Документация будет доступна по адресу: http://localhost/api/docs/


## Установка проекта на удалённом сервере

> [!IMPORTANT]
> При выпуске проекта в продакшн необходимо, чтобы DEBUG = False и переменная DATABASE_ENV=prod (чтобы подключилась база Postgre)
[!IMPORTANT]
При выпуске проекта в продакшн необходимо, чтобы DEBUG = False и переменная DATABASE_ENV=prod (чтобы подключилась база Postgre)

1. ### Выполните вход на удаленный сервер

2. ### Установите 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
```
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
```

3. ### Создайте папку foodgram:

```
sudo mkdir foodgram
```

4. ### В папке foodgram создайте файл docker-compose.production.yml и скопируйте туда содержимое файла docker-compose.production.yml из проекта:

> cd foodgram
> sudo touch docker-compose.production.yml
> sudo nano docker-compose.production.yml
```
cd foodgram
sudo touch docker-compose.production.yml
sudo nano docker-compose.production.yml
```

5. ### В файл настроек nginx добавить домен сайта:

```
sudo nano /etc/nginx/sites-enabled/default
```

6. ### После корректировки файла nginx выполнить команды:

> sudo nginx -t
> sudo service nginx reload
```
sudo nginx -t
sudo service nginx reload
```

7. ### Из дирректории foodgram выполнить команды:
```
sudo docker compose -f docker-compose.production.yml pull
sudo docker compose -f docker-compose.production.yml down
sudo docker compose -f docker-compose.production.yml up -d
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 import_ingredients
sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic --noinput
sudo docker system prune -a
```

> sudo docker compose -f docker-compose.production.yml pull
> sudo docker compose -f docker-compose.production.yml down
> sudo docker compose -f docker-compose.production.yml up -d
> 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 import_ingredients
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic --noinput
> sudo docker system prune -a
> Если необходимо создать суперпользователя:
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser
Если необходимо создать суперпользователя:
```
sudo docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser
```


## Автоматический деплой проекта на сервер.

Предусмотрен автоматический деплой проекта на сервер с помощью GitHub actions. Для этого описан workflow файл:
.github/workflows/main.yml
> После деплоя в проекте предусмотрена отправка смс в телеграм чат. Код чат-бота находится в репозитории [homework_bot](https://github.com/Svetlana-Zimina/homework_bot)
После деплоя в проекте предусмотрена отправка смс в телеграм чат. Код чат-бота находится в репозитории [homework_bot](https://github.com/Svetlana-Zimina/homework_bot)

1. ### После внесения правок в проект выполните команды:
```
git add .
git commit -m 'комментарий'
git push
```

> git add .
> git commit -m 'комментарий'
> git push
> GitHub actions выполнит необходимые команды из workflow файла - контейнеры на удаленном сервере перезапустятся.
GitHub actions выполнит необходимые команды из workflow файла - контейнеры на удаленном сервере перезапустятся.

2. ### Добавьте ингредиенты в базу:

```
sudo docker compose -f docker-compose.production.yml exec backend python manage.py import_ingredients
```

3. ### Для правильной работы workflow необходимо добавить в Secrets данного репозитория на GitHub переменные окружения:

> DOCKER_PASSWORD=<пароль от DockerHub>
> DOCKER_USERNAME=<имя пользователя DockerHub>
> HOST=<ip сервера>
> POSTGRES_DB=<название базы данных>
> POSTGRES_PASSWORD=<пароль к базе данных>
> POSTGRES_USER=<пользователь базы данных>
> SSH_KEY=<ваш приватный SSH-ключ (для получения команда: cat ~/.ssh/id_rsa)>
> SSH_PASSPHRASE=<пароль для сервера, если есть>
> USER=<username для подключения к удаленному серверу>
> TELEGRAM_TO=<id вашего Телеграм-аккаунта>
> TELEGRAM_TOKEN=<токен вашего бота>
```
DOCKER_PASSWORD=<пароль от DockerHub>
DOCKER_USERNAME=<имя пользователя DockerHub>
HOST=<ip сервера>
POSTGRES_DB=<название базы данных>
POSTGRES_PASSWORD=<пароль к базе данных>
POSTGRES_USER=<пользователь базы данных>
SSH_KEY=<ваш приватный SSH-ключ (для получения команда: cat ~/.ssh/id_rsa)>
SSH_PASSPHRASE=<пароль для сервера, если есть>
USER=<username для подключения к удаленному серверу>
TELEGRAM_TO=<id вашего Телеграм-аккаунта>
TELEGRAM_TOKEN=<токен вашего бота>
```


## Документация API после деплоя на удаленный сервер доступна по адресу:
Expand Down

0 comments on commit 00be6a8

Please sign in to comment.