Django + Mongodb + Gunicorn + Docker + Nginx 搭建后端服务,部署到云服务器
项目地址yaunfei/BSprout_Mall_server (github.com)
一、写在前面
使用django
搭建后端服务,语言自然就是python
。数据库用的是mongodb
一个非关系数据库。web
服务器使用本地开发使用django
自带的,线上环境用的gunicron
服务器。线上部署使用docker
。线上代理和静态资源存储使用的``nginx`。
- 开发语言
python
。 web
框架django
。为了提供接口服务,使用到了Django REST framework
框架。- 数据
mongoldb
。非关系数据,这样方便前端传递数据,传入的格式相对灵活。使用djongo
第三方插件进行,连接数据库。 web
服务器gunicron
。本地开发使用django
自带的就好了,执行python manage.py runserver
- 部署使用
docker
进行部署,配置docker compose
文件,其中包含了,db
和nginx
的配置 - 线上代理和静态资源部署在
nginx
上。
二、实施
1. 本地开发
-
用
pyCharm
打开文件,这个时候会提示你创建虚拟环境,请确认创建项目的虚拟环境(避免和全局环境的干扰)。另外pyCharm
会自动安装requirements.txt
里面的安装包。a. 如果没有自动弹出创建虚拟环境,可以手动添加如下:
默认选第一就好
b. 然后收到安装依赖包:
pip3 install -r requirements.txt
c. 如果你会发现
web
服务器不能用,如图:可以收到添加
django
服务此时就可以了。
-
项目启动前:请先安装好数据库。
mac
参考官网安装,默认不设置密码。在settings.py
文件中配置如下:DATABASES = { 'default': { 'ENGINE': 'djongo', 'ENFORCE_SCHEMA': True, 'NAME': 'djongo_example', 'HOST': '127.0.0.1', 'PORT': 27017, } }
然后进行数据库初始化。请执行
python manage.py makemigrations # 将model层转为迁移文件migration python manage.py migrate # 将新版本的迁移文件执行,更新数据库
-
这个时候就可以运行项目
2. 线上部署
-
在服务上安装
docker
和git
。参考docker官网选择安装对应的系统。这边记住要安装docker compose
。git
安装自行搜索。我这是centos
官网教程 -
修改
setting.py
文件如下:DATABASES = { 'default': { 'ENGINE': 'djongo', 'ENFORCE_SCHEMA': True, 'NAME': 'djongo_example', # 线上 'CLIENT': { 'host': 'db', 'port': 27017, 'username': 'root', 'password': 'root', 'authSource': 'admin' } } }
-
cd
到项目目录,执行docker compose up
启动服务。对应的关闭服务docker compose down
。注意,首次docker compose up
后关闭服务,然后执行python manage.py migrate
,最后再次启动服务。 -
完成后,在云服务器控制台,配置防火墙对应的端口号
8088
。这个时候就可以访问服务了,注意这是TCP
协议。