Selah/backend
2023-08-17 04:33:34 +00:00
..
main_project initial migration commit into shiloh org 2023-08-17 12:57:46 +09:00
users_app initial migration commit into shiloh org 2023-08-17 12:57:46 +09:00
manage.py initial migration commit into shiloh org 2023-08-17 12:57:46 +09:00
README.md Update backend/README.md 2023-08-17 04:33:34 +00:00

Selah Django backend API

*** DJANGO ENVIRONMENT LOCAL SETUP (installing libraries/dependencies) ***

  • install ffmpeg for audio file processing on your system (ubuntu):
sudo apt-get install net-tools
sudo apt install ffmpeg
  • install postgres
sudo apt install libpq-dev
sudo apt install postgresql
sudo apt install postgresql-contrib
  • make sure python is installed (should come with ubuntu): python --version

Django setup (Using Python -v 3.10.6 and Django -v 4.2 as of April, 29, 2023):

  • create dir on local machine where this project will be stored mkdir selah

  • install python venv: sudo apt install python3.10-venv

  • Create python virtual environment on local machine: python3 -m venv env

  • clone this repo via https or ssh in the directory you created above; your python env folder should be next to the repo, not within it

  • Activate python virtual environment on local machine. You'll see '(env)' on the left-most side the terminal signature when activated

  • Ubuntu: . env/bin/activate

  • windows: ``

  • Once your env is activated, install Django and other dependencies (see requirements.txt or just copy/paste this in the terminal):

pip install django
pip install django-rest-framework
pip install djangorestframework-simplejwt
pip install pyjwt
pip install social-auth-app-django
pip install django-cors-headers
pip install djoser
pip install pillow
pip install django-imagekit
pip install pydub
pip install django-environ
pip install stripe
pip3 install --upgrade stripe
pip install psycopg2 
pip install gunicorn

(For production server, install the binary:

pip install psycopg2-binary )

*** Note: You need to create empty DB in either psql shell or pgadmin tool before running python manage.py makemigrations and python manage.py migrate (If you want to use custom user model, DO NOT RUN python manage.py makemigrations/migrate until you have created your custom user model, otherwise Django will revert to its default User Model. Changing from Django's default user model to a custom user model is possible, but unsupported and prone to many errors. Do this first before anything else if that's what you want for your app)

  • make sure env is activated and start Django dev server:
  • in the main_project directory, create a new .env file with the following variables. Get values from me:
DEV_MODE=
DOMAIN=
DEV_DOMAIN=
FRONTEND_DOMAIN=
FRONTEND_DEV_DOMAIN=
EMAIL_HOST=
EMAIL_PORT=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
SECRET_KEY=
DBENGINE=
DBNAME=
DBUSER=
DBPASSWORD=
DBHOST=
STRIPE_DOMAIN=
STRIPEPK=
STRIPESK=
STRIPE_WEBHOOK_SECRET=
SECURE_SSL_REDIRECT=
SESSION_COOKIE_SECURE=
CSRF_COOKIE_SECURE=
ADMIN_URL=

set backend env DEV_MODE var: DEV_MODE=True

  • start Django dev server in terminal: DJANGO_SETTINGS_MODULE=main_project.dev_settings python manage.py runserver

  • you should be able to access backend at 127.0.0.1:8000

To run vs code debugger: In top level directory, add this launch.json file:


{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Django",
            "type": "python",
            "request": "launch",
            "program": "/your/path/to/manage.py",
            "args": [
                "runserver"
            ],
            "django": true,
            "env": {
                "DJANGO_SETTINGS_MODULE": "main_project.dev_settings"
            },
            "justMyCode": true
        }
    ]
}

If you were preveiously in production mode, stop all nginx and gunicorn servers and open your browser's dev tools and clear all cache and cookie data:

sudo systemctl stop nginx sudo systemctl stop gunicorn sudo systemctl stop gunicorn.socket

*** PRODUCTION SIMULATION SERVER (https self-signed SSL certs) ***

TO START SIMULATED PROD SERVER access site over https with self-signed ssl certs (see servers_ssl_db_setup folder and complete those steps first if you haven't set up the servers locally in your machine yet): set backend env DEV_MODE var: DEV_MODE=False

restart nginx and gunicorn sudo systemctl restart nginx sudo systemctl restart gunicorn.socket sudo systemctl restart gunicorn

access the backend API/admin page at:

whatever you named your hosts name in nginx/gnicorn ssl setup

After everything is working, you can begin developing and making changes to code. After you have made a code change, restart servers to see updates:

reset nginx and gunicorn

sudo systemctl restart nginx sudo systemctl restart gunicorn