Django + Mongodb + Gunicorn + Docker + Nginx 搭建后端服务,部署到云服务器

95 阅读2分钟

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文件,其中包含了,dbnginx的配置
  • 线上代理和静态资源部署在nginx上。

二、实施

1. 本地开发

  • pyCharm打开文件,这个时候会提示你创建虚拟环境,请确认创建项目的虚拟环境(避免和全局环境的干扰)。另外pyCharm会自动安装requirements.txt里面的安装包。

    a. 如果没有自动弹出创建虚拟环境,可以手动添加如下:

    image-20230809214557855

    默认选第一就好

    image-20230809214640784

    b. 然后收到安装依赖包: pip3 install -r requirements.txt

    c. 如果你会发现web服务器不能用,如图:

    image-20230809220149135

    可以收到添加django服务

    image-20230809220535379

    此时就可以了。

  • 项目启动前:请先安装好数据库。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. 线上部署

  • 在服务上安装dockergit。参考docker官网选择安装对应的系统。这边记住要安装docker composegit安装自行搜索。我这是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协议。