# Рекомендательный сервис для размещения постаматов

### Инструкция по развёртыванию backend части проекта:
  - Установите [docker](https://docs.docker.com/engine/install/ubuntu/)
  - Установите [docker compose](https://docs.docker.com/compose/install/)
  - Положите файлы из репозитория в папку:
    - через GIT: 
    ```bash
    git clone git@gitlab.com:leaders2022/postamates.git postamates
    git pull
    git checkout sst_main
    git pull
    ```
    - через zip архив: 
    ```unzip archieve.zip -d postamates```

  - создайте файл ```postamates/.env``` на основе файла ```postamates/.env.like```
  - Запустите проект:
     ```
     cd postamates
     sudo docker-compose up -d
     ```

### Команды для backend части проекта:
 - Создание суперюзера:
     ```sudo docker exec -it ${CONTAINERS_NAME}_django python manage.py createsuperuser```
 - Создание фикстур:
     ```sudo docker exec -it ${CONTAINERS_NAME}_django python manage.py loaddata fixtures/groups.json```

### Полезные ссылки
  - Админ панель [http://HOST:DJANGO_PORT/admin/](http://HOST:DJANGO_PORT/admin/)
  - Swagger [http://HOST:DJANGO_PORT/swagger/](http://HOST:DJANGO_PORT/swagger/)


### Инструкция по devops части проекта:
- Установите [backend](https://gitlab.com/leaders2022/postamates/-/tree/sst_main/)
- Установите [frontend](https://gitlab.com/leaders2022/postamates_frontend/-/tree/sst_main/)

- Настройте nginx в зависимости от конфигураций .env файлов в backend и frontend репозиториях
- Пример конфигурации:
```server {
	server_name postnet-dev.selftech.ru;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/postnet-dev.selftech.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/postnet-dev.selftech.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

	root /home/postamates_frontend/dist;

	index index.html;
    client_max_body_size 400m;
    location / {
        try_files $uri /index.html;
    }


    location /api/ {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://0.0.0.0:DJANGO_PORT/api/;
	}
    location /admin/ {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://0.0.0.0:DJANGO_PORT/admin/;
	}
    location /accounts/ {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://0.0.0.0:DJANGO_PORT/accounts/;
	}
    location /media  {
        alias /home/postamates/media;
    }

    location /django_static {
        alias /home/postamates/django_static;
    }

    location /martin {
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://0.0.0.0:MARTIN_PORT/;
    }

    error_page  500 502 503 504 /50x.html;

    location = /50x.html {
        root  /usr/share/nginx/html;
    }
}
server {
    server_name postnet-dev.selftech.ru;
    if ($host = postnet-dev.selftech.ru) {
        return 301 https://$host$request_uri;
    }
	listen 80 ;
	listen [::]:80 ;
    return 404;
}




```
