Coder Social home page Coder Social logo

terrazavr / mycats Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 1.42 MB

MyCats - фото котов тут. Деплой проекта на удаленный сервер.

Python 5.83% HTML 0.51% JavaScript 49.28% CSS 44.38%
python3 devops django-rest-framework gunicorn-web-server nginx server certbot-ssl https

mycats's Introduction

О чем проект?

MyCats - социальная сеть для владельцев и любителей сильных и незывисимых животных - КОШЕК и КОТОВ. Не имеет значения, домашнее или дикое животное, если вы счастливый обладатель тигрицы или пантеры - не стесняйтесь, делитесь с миром их фотографиями и достижениями!

Как запустить проект локально?

Клонировать репозиторий и перейти в него в командной строке:

git clone [email protected]:terrazavr/mycats.git
cd mycats/backend

Cоздать и активировать виртуальное окружение:

python3 -m venv venv

Если у вас Linux/macOS

source venv/bin/activate

Если у вас windows

source venv/scripts/activate

Обновить pip

python3 -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:

pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Создать в корневой папке файл .env, добавить SECRET_KEY


Для всех, кто хочет более глобальный проект, следуйте инструкции ниже


Деплой проекта на удаленный сервер

Подключение к GitHub к удаленному серверу

Установить Git:

sudo apt install git

Сгенерировать пару SSH-ключей:

ssh-keygen

Сохранить открытый ключ на gitHub аккаунте:

cat .ssh/id_rsa.pub

Клонировать проект на удаленный сервер:

git clone <your repository>/mycats.git

Запуск бэкенд-приложения

Установить на сервер пакетный менеджер и утилтиту для создания виртуального окружения:

sudo apt install python3-pip python3-venv -y

Создать виртуальное окружение:

python3 -m venv venv

Активировать виртуальное окружение:

source venv/bin/activate

Установить зависимости:

pip install -r requirements.txt

Выполнить миграции:

python manage.py migrate

Создать суперпользователя:

python manage.py createsuperuser

В файле settings.py в ALLOWED_HOSTS добавить IP-адрес сервера, а так же '127.0.0.1', 'localhost' и ваше доменное имя.


Запуск фронтенд-приложения

Установить на сервер пакетный менеджер npm:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\
sudo apt-get install -y nodejs

Установить зависимости для фронтенда из директории mycats/frontend:

npm i

Установка и запуск Gunicorn

pip install gunicorn==20.1.0 

Создать юнит для gunicorn:

sudo nano /etc/systemd/system/gunicorn.service

В файле gunicorn.service описать конфигурацию процесса:

[Unit]
Description=gunicorn daemon 
After=network.target 

[Service]
User=yc-user 
WorkingDirectory=/home/yc-user/mycats/backend/
ExecStart=/home/yc-user/mycats/backend/venv/bin/gunicorn --bind 0.0.0.0:8000 backend.wsgi

[Install]
WantedBy=multi-user.target  

Запустить процесс gunicorn.service:

sudo systemctl start gunicorn 

Добавим процесс в автозапуск:

sudo systemctl enable gunicorn

Установка Nginx

sudo apt install nginx -y

Запустить Nginx:

sudo systemctl start nginx

Указать файрволу, какие порты должны остаться открытыми:

sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH

Включить файрвол:

sudo ufw enable

Собрать статику фронтенд-приложения

Из директории mycats/frontend запустить:

npm run build
sudo cp -r /home/yc-user/mycats/frontend/build/. /var/www/kittygram/

Написать конфигурационный файл для работы со статикой фронтенд-приложения:

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

Удалить все настроки из файла и добавить:

server { 
    server_name Your_IP Your_DNS; 
    location /api/ { 
        client_max_body_size 20M; 
        proxy_pass http://127.0.0.1:8080; 
    } 
    location /admin/ { 
        client_max_body_size 20M; 
        proxy_pass http://127.0.0.1:8080; 
    } 
    location /media/ { 
	alias /var/www/kittygram/media/; 
    } 
    location / { 
        root   /var/www/kittygram; 
        index  index.html index.htm; 
        try_files $uri /index.html =404; 
    } 

Описать настройки для работы с бэкенд-приложением

В файле settings.py изменить(добавить):

STATIC_URL = '/static_backend/'
STATIC_ROOT = BASE_DIR / 'static_backend'

При активированном виртуальном окрежении выполните команду:
python manage.py collectstatic Перейдите в корень проекта и выполните команду:
sudo cp -r mycats/backend/static_backend/ /var/www/kittygram/


Натройка шифрования

Установить certbot:

sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot  

Запустим certbot и получим SSL-сертификуат:

sudo certbot --nginx 

Перезагрузить конфигурацию Nginx:

sudo systemctl reload nginx

Настройка автоматического обновления SSL-сертификата:

sudo certbot certificates
sudo certbot renew --dry-run

Ура! Проект в сети!


mycats's People

Contributors

terrazavr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.