Using Python + Flask + Vue + Axios + JWT to build a forum.
- clone
git clone https://github.com/codists/python-talk.git
- create and activate virtual environment
cd python-talk/backend/
python3 -m venv venv
source ./venv/bin/activate
- install requirements.txt
pip install -r requirements.txt
- run
cd python-talk/backend/
flask run
- clone
git clone https://github.com/codists/python-talk.git
- install
cd python-talk/frontend/ npm install
- run
npm run serve
Use Docker、Nginx、Ubuntu to deploy the project。
Although python_talk is only one application, we have to consider the flexibility when we deploy it on multiple servers and scalability when we coordinate it with other applications, so the deployment directory structure likes the following:
/www$ tree -L 4 "$(pwd)"
/www
├── backend
│ └── python_talk
│ └── backend
│ ├── Dockerfile
│ ├── README.md
│ ├── docker-compose.yml
│ ├── migrations
│ ├── python_talk
│ ├── requirements.txt
│ └── setup.py
├── common
│ ├── docker-compose-common.yml
│ ├── mysql
│ │ ├── conf.d
│ │ │ └── custome.conf
│ │ └── data
│ ├── nginx
│ │ ├── conf.d
│ │ │ └── python_talk.conf
│ │ ├── logs
│ │ │ ├── access.log
│ │ │ ├── error.log
│ │ │ └── python_talk
│ │ └── nginx.conf
│ └── redis
│ ├── conf
│ │ └── redis.conf
│ └── data
│ └── dump.rdb
└── frontend
└── python_talk
└── dist
├── css
├── favicon.ico
├── img
├── index.html
└── js
Generally, there's no need to pull the code repository during deployment — the frontend only needs to upload the dist
directory, and the backend only upload the code. This approach is used here to help those unfamiliar with the process better understand it.
# pull code
mkdir -p /www/code
cd /www/code
git clone https://github.com/codists/python-talk.git
# frontend setting
mkdir -p /www/frontend/python_talk
cd /www/code/python-talk/frontend
npm install # if you doesn't install npm, install it with command "sudo apt install npm -y"
npm run build # it will generate a dist directory
cp -r /www/code/python-talk/frontend/dist /www/frontend/python_talk/
# common applications(mysql, redis, nginx) setting and run
cp -r /www/code/python-talk/deployment/common /www
cd /www/common/
docker compose -f docker-compose-common.yml up -d
# backend(python_talk)setting and run
mkdir -p /www/backend/python_talk
cp -r /www/code/python-talk/backend/ /www/backend/python_talk/
cd /www/backend/python_talk/backend
docker build -t python_talk:0.0.1 /www/backend/python_talk/backend
docker compose -f /www/backend/python_talk/backend/docker-compose.yml up -d