EvKutyashov / kittygram

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kittigram

Описание:

Kittygram - веб сервис предназначеный для всех, кто любит котиков и хочет поделиться фотографиями и достижениями своих питомцев с другими пользователями.

Используемые технологии:

Python Django DjangoREST Nginx Gunicorn

Запуск проекта на удаленном сервере:

  1. Подключиться к удалённому серверу:
$ ssh -i путь_до_файла_с_SSH_ключом/название_файла_с_SSH_ключом_без_расширения login@ip
  1. Кланировать репозиторий:
$ git clone git@github.com:EvKutyashov/kittigram.git
  1. Создать и активировать виртуальное окружение:
$ cd kittigram/backend/
$ python -m venv venv
$ source venv/bin/activate
  1. Установить зависимости:
pip install -r requirements.txt
  1. Выполнить миграции:
python manage.py migrate
  1. Устанвоить Gunicorn:
pip install gunicorn==20.1.0
  1. Создать юнит для Gunicorn:
sudo nano /ect/systemd/system/gunicorn_kittygram.service

Прописать:

[Unit]
Description=<описание юнита>
After=network.target 

[Service]
User=<Имя пользователя> 

WorkingDirectory=<Путь к директории проекта>

ExecStart=<директория-с-проектом>/<путь-до-gunicorn-в-виртуальном-окружении> --bind 0.0.0.0:8000 kyttygram_backend.wsgi

[Install]
WantedBy=multi-user.target
  1. Запустить созданый юнит и добавить процесс Gunicorn в список автозапуска операционной системы на удалённом сервере:
sudo systemctl start gunicorn_kittygram
sudo systemctl enable gunicorn   
  1. Установка и запуск Nginx:
sudo apt install nginx -y
sudo systemctl start nginx
  1. Настройка и запуск файрвола:
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
  1. Собрать статику фронтенд-приложения и разместить её в той директории, которую Nginx использует по умолчанию для доступа к статическим файлам:
    • Перейти в директорию /infra_sprint1/frontend/ и выполнить команду:

      npm run build
      
    • Скопировать созданую папку в /var/www/

      sudo cp -r /home/<your_username>r/infra_sprint1/frontend/build/. /var/www/kittygramm/ 
      
  2. Описать конфигурационные настройки Nginx:
 sudo nano /etc/nginx/sites-enabled/default
server {
    server_name ***.***.***.*** https://kittygrampro.sytes.net;

    location /api/ {
        proxy_pass http://127.0.0.1:9000;
    }

    location /admin/ {
        proxy_pass http://127.0.0.1:9000;
    }

    location /media/ {
        alias /var/www/kittygram/media/;
    }

    location / {
        root   /var/www/kittygram;
        index  index.html index.htm;
        try_files $uri /index.html;
    }
}
  1. Проверить файл конфигурации на ошибки:
sudo nginx -t 
  1. Перезагрузить Nginx:
sudo systemctl reload nginx
  1. Собрать статику бекенда и перенести в директорию с которой работает Nginx:
python manage.py collectstatic
sudo cp -r infra_sprint1/backend/static_backend/ /var/www/kittygram/
  1. Создать директорию media в директории /var/www/kittygramm/для хранения пользовательских картинок

  2. В директории /infra_sprint1/backend/kittygram/backend/ создать .env и поместить переменные окружения SECRET_KEY И DEBUG в формате <КЛЮЧ: значение>

  3. Получить SSL сертификат:

    • Установить пакетный менеджер snapd:
      sudo apt install snapd
      
    • Установить и обновить зависимости для пакетного менеджера snap:
      sudo snap install core; sudo snap refresh core  
      
    • Установить пакет certbot:
      sudo snap install --classic certbot
      
    • Создать ссылки на certbot в системной директории:
      sudo ln -s /snap/bin/certbot /usr/bin/certbot
      
    • Запустить certbot и получить SSL-сертификат:
      sudo certbot --nginx
      
    • Перезагрузить конфигурацию Nginx:
      sudo systemctl reload nginx
      

About


Languages

Language:JavaScript 43.2%Language:CSS 28.3%Language:Python 26.5%Language:HTML 1.5%Language:Dockerfile 0.5%