这篇文章主要记录了如何快速部署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配置就完成了,现在打开你的域名,应该就可以看到首页了。