CentOS 7 快速部署Django 3.0

这篇文章主要记录了如何快速部署Django3.0+版本,希望能帮助到你。

服务器版本:CentOS 7.7

Django版本:3.0.5

示例域名:mydjango.com

示例IP地址:100.0.0.1

0. 上传代码

假定我们的项目目录叫做django_project,首先我们将代码上传至 /opt/,那么目前我们的项目根目录为 /opt/django_project。

大致目录结构如下:

-- django_project

    -- django_project

    -- myapp

    -- manage.py

1. 安装环境依赖


[root@host ~]# yum install gcc

[root@host ~]# yum install nginx

[root@host ~]# yum install supervisor

gcc不是必须,但是如果源码安装软件,就需要用到了,建议安装 。

nginx是服务器的代理,它不仅用来代理静态文件,还会将流量转发给daphne,也就是所谓的“反向代理”。

2. 安装Python库

CentOS 7.7 自带Python3.6.8,对于大部分项目已足够。我们需要安装django和daphne。


[root@host ~]# pip3 install django

[root@host ~]# pip3 install daphne

如果非要安装高版本Python,可以使用源码安装,这里不再赘述。

3. 安装数据库环境

数据库一般MySQL和Sqlite3二选一。

3.1 MySQL

首先安装epel源。


[root@host ~]# yum install epel-release

安装MySQL社区版


[root@host ~]# yum install mariadb-server

设置MySQL的root密码。(生产环境建议使用其他用户)


[root@host ~]# mysqladmin -uroot password mypassword

启动服务,并设置开机自启。


[root@host ~]# systemctl start mariadb

[root@host ~]# systemctl enable mariadb

Django 3.0需要安装mysqlclient库,在此之前,我们需要安装一些系统依赖。


[root@host ~]# yum install libmysqlclient-dev mysql-devel gcc gcc-devel python-devel

安装mysqlclient


[root@host ~]# pip3 install mysqlclient

迁移数据库


[root@host ~]# python3 manage.py makemigrations

[root@host ~]# python3 manage.py migrate

3.2 Sqlite3

如果是Django 3.0以上版本,对Sqlite3的版本要求比较高,我们需要手动更新新版。具体的方法这里就不写了,需要的朋友可以在网上搜一下。

4. 配置服务

4.1 supervisor

supervisor是一个进程管理软件/服务,可以管理任意进程(守护进程除外),它的服务名叫 supervisord。

首先启动supervisord服务,并设置开机自启:


[root@host ~]# systemctl start supervisord

[root@host ~]# systemctl enable supervisord

supervisor的全局配置在 /etc/supervisord.conf 。但是我们不需要更改这个文件,推荐的是做法是在/etc/supervisord.d目录下新建多个子配置文件。

比如我们新建文件 /etc/supervisord.d/django.ini。当然“django.ini”这个文件名是自定义的,但后缀ini不能改变。

内容如下:


[program:django]

command=/usr/local/bin/daphne -b 127.0.0.1 -p 8001 django_project.asgi:application

directory=/opt/django_project/

priority=999

startsecs = 5

autorestart = true

startretries = 3

stdout_logfile = /var/log/supervisor.log

当然这是比较基础的配置,如果你有更多的需求可以查询相关文档。建议在配置supervisor前,先手动运行一下python3 manage.py runserver,看看有没有问题。

配置完成后,通过supervisorctl命令重新加载supervisor配置,并运行django。注意,这个django就是django.ini第一行配置的那个名字,program:django。


[root@host ~]# supervisorctl reload

[root@host ~]# supervisorctl start django

查看是否正常可以使用status命令


[root@host ~]# supervisorctl status

django                          RUNNING  pid 16340, uptime 2:44:50

如果显示“RUNNING”则一切正常,如果出现了问题,可以使用supervisorctl tail django stdout命令查看具体错误。

4.2 nginx

Nginx的配置与supervisor类似,全局配置为/etc/nginx/nginx.conf,我们在/etc/nginx/conf.d目录下建立新配置文件django.conf,内容如下:


# upstream指反向代理到哪个地址簇,也就是代理daphne的流量,可配置多个。

upstream mydjango.com {

    server 127.0.0.1:8001;

}

# 代理服务器配置,可配置多个

server {

    listen      80;  # 对外提供的端口

    server_name 100.0.0.1; # 服务器名,域名或IP

    charset    utf-8;

    # max upload size

    client_max_body_size 75M;  # 请求body最大值

    location /static {

        alias /opt/django_project/static;  # 项目全局静态文件目录

    }

    # 根目录转发

    location / {

        proxy_pass  http://mydjango.com;

    }

}

配置完成后,启动nginx服务,并设置为开机自启。


[root@host ~]# systemctl start nginx

[root@host ~]# systemctl enable nginx

到此为止,基础的Django配置就完成了,现在打开你的域名,应该就可以看到首页了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。