Django的项目部署方式有多种,本文主要讲的是基于wsgi协议的部署
即 django + uwsgi + nginx 手动部署
部署项目的准备工作
- 在项目的根下,新建一个requirements.txt文件,文件的内容是项目需要安装的依赖
Django == 3.0.7PyMySQL == 0.9.3mysqlclient == 1.4.6
- 不使用Git版本工具的情况下,需要手动复制项目
去掉项目中的 .idea, venv等不相干的文件 - 修改项目的配置文件settings.py
DEBUG = TrueALLOWED_HOSTS = [\"*\"]DATABASES = [需要的话做修改即可]
-
打开Linux操作系统
将调整好的项目,放到Linux服务器上
在ssh工具中alt+p进入之后用put上传文件 -
设置pip镜像
在当前用户的根下,新建一个.pip文件 mkdir ~/.pip -
在Linux操作系统下进入项目的根
cd ~/app/project_name
在项目的根下安装虚拟环境sudo apt install python3-vene
python3 -m venv venv
-
激活虚拟环境
source ./app/bin/activate
-
安装django项目所需依赖
pip install -r requirements.txt
-
安装uwsgi
在项目的根下查看是否安装了uwsgiuwsgi
,如果没有,则选择安装
sudo apt install uwsgi-coresudo apt install uwsgi-plugin-python3
- 配置uwsgi
在项目的根下新建一个uwsgi.ini文件,并配置其内容
[uwsgi]# 设置django项目的位置chdir=/home/sun/app/learn_test_backup# 设置wsgi协议的入口位置module=learn_test_backup.wsgi:application# 设置是否开启主进程master=True# 设置主进程的启动的程序文件pidfile=learn_test_backup.pid# 设置真空环境 用于清除uwsgi服务器在运行过程中产生的垃圾vacoum=True# 设置允许的最大请求数量max-requests = 5000# 设置uwsgi服务器在运行过程中产生的日志存放的位置daemonize=learn_test_backup.log# 设置django的环境(配置文件)env=\'DJANGO_SETTINGS_MODULE=learn_test_backup.settings# 设置访问django项目的ip和端口号socket=192.168.18.54:8000# 设置http的访问方式 **要注意socket和http要二选其一**# http = http://192.168.18.54:8000# 设置启动uwsgi的进程数processes=5# 设置项目的虚拟环境venv=/home/sun/app/learn_test_backup/venv# 设置python关联项plugin=python3
- 启动uwsgi服务器
# 启动uwsgi服务器uwsgi --ini uwsgi.ini# 关闭uwsgi服务器uwsgi --stop learn_test_backup.pid# 重启uwsgi服务器uwsgi --reload learn_test_backup# 查看uwsgi服务进程ps -ef|grep uwsgi# 杀死uwsgi进程sudo kill -9 进程号# 查看启动日志tail -f learn_test_backup.log
nginx的服务
nginx可以提供的一些服务:
1. 反向代理
2. 负载均衡
3. 动静分离
4. 地址重定向,主要用于地址的迁移
5. 防盗链,用于防止别人盗取网站的资源
6. 正向代理,多用于实现访问一些国内受限制的网址
nginx的安装
- 安装nginx
sudo apt install nginx
- 访问nginx
直接进入linux的ip地址,如出现如下图片,则说明安装成功且ngnix正在工作 - 查看nginx的位置
/var/log/nginx 存放nginx的运行日志/usr/sbin/nginx nginx的启动命令/etc/nginx nginx配置文件所在的位置
- nginx的配置文件 nginx.conf
# include /etc/nginx/conf.d/*.conf;# include /etc/nginx/sites-enabled/#server{listen 80 ;server_name IP地址 ;location / {uwsgi_pass IP地址:8000 ;include uwsgi_params ;}}
- 重启nginx服务
sudo nginx -s reload
- 配置静态资源的位置
# include /etc/nginx/conf.d/*.conf;# include /etc/nginx/sites-enabled/#server{listen 80 ;server_name IP地址 ;location / {uwsgi_pass IP地址:8000 ;include uwsgi_params ;}location /static/ {alias 静态资源目录存放的地址}}