WSGI
- python manage.py runserver:这是一款适合开发阶段使用的服务器,不适合运行在真实的生产环境中
- 在生产环境中使用WSGI
- WSGI:Web服务器网关接口,英文为Python Web Server Gateway Interface,缩写为WSGI,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受
- WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行
- 命令django-admin startproject会生成一个简单的wsgi.py文件,确定了settings、application对象
- application对象:在Python模块中使用application对象与应用服务器交互
- settings模块:Django需要导入settings模块,这里是应用定义的地方
- 此处的服务器是一个软件,可以监听网卡端口、遵从网络层传输协议,收发http协议级别的数据
uWSGI
- uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器
- uWSGI代码完全用C编写
- 安装uWSGI
pip install uwsgi
启动uWSGI来运行一个HTTP服务器/路由器,它会传递请求到你的WSGI应用:
方式一,直接添加参数:
uwsgi --http :8000--chdir /path/fto/your/project/ --wsgi-file project/wsgi.py --master --processes 4 --threads 2
Ctrl+C关闭 uwsgi 进程
方式二,将参数写入一个ini文件,将该文件添加到命令后,其中该文件名可自行命名:
uwsgi --ini uwsgi.in
- 配置uWSGI,在项目中新建文件uwsgi.ini,编写如下配置
[uwsgi]
http=:8000 //(直接做web服务器,使用http)
chdir=/path/to/your/project // 项目根目录
wsgi-file=project/wsgi.py // 相对项目目录的wsgi.py文件目录
processes=4 // 设置进程数
threads=2 // 设置线程数
master=True // 使用主进程
pidfile=uwsgi.pid // uwsgi的进程文件,设置此项后会自动创建
daemonize=uswgi.log // 日志文件,设置此项后会自动创建
harakiri = 10 // 摧毁那些卡住超过10秒的进程
- 启动:uwsgi --ini uwsgi.ini
- 停止:uwsgi --stop uwsgi.pid
- 重启:uwsgi --reload uwsgi.pid
- 使用http协议查看网站运行情况,运行正常,但是静态文件无法加载