django

Django-30 项目部署 uwsgi

2021-08-04  本文已影响0人  JuliusL

基础概念

项目部署是指在软件发布完毕后,将开发机器上运行的软件实时安装到服务器上进行长期运行
1,在安装机器上安装和配置同版本的环境[py,数据库等]
2,django项目迁移

sudo scp /home/tarena/django/mysite1
root@88.77.66.55:/home/root/xxx
请输入root密码:

3,用uWSGI替代python3 manage.py runserver方法启动服务器
4,配置nginx反向代理服务器
5,用nginx配置静态文件路径,解决静态路径问题

WSGI定义

WSGI(Web Server Gateway Interface)Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛使用
使用python manage.py runserver 通常只在开发和测试环境中使用。
当开发结束后,完善的项目代码需要在一个高效稳定的环境中运行,这时可以使用WSGI


image.png

uWSGI定义

uWSGI是WSGI的一种,它实现了HTTP协议WSGI协议以及uwsgi协议
uWSGI功能完善,支持协议众多,在python web圈热度极高
uWSGI主要以学习配置为主

uWSGI安装

Ubuntu执行sudo pip3 install uwsgi==2.0.18 -i
我在macos是直接执行pip install uwsgi安装成功的

检查是否安装成功

配置uWSGI

添加配置文件 项目同名文件夹/uwsgi.ini
如:mysite1/mysite1/uwsgi.ini
文件以[uwsgi]开头,有如下配置项:

[uwsgi]
http=127.0.0.1:8000
chdir=/Users/liujia/program/django_code/tedu_note
wsgi-file=tedu_note/wsgi.py
process=4
threads=2
pidfile=uwsgi.pid
daemonize=uwsgi.log
master=true
特殊说明:Django的settings.py需要做如下配置

1,修改settings.py将DEBUG=True改为DEBUG=False
2,修改settings.py将ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=['网站域名']或者['服务监听的ip地址']

uWSGI的运行管理

启动uwsgi

cd 到uWSGI配置文件所在目录
uwsgi --ini uwsgi.ini

liujiadeMacBook-Pro:tedu_note liujia$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
liujiadeMacBook-Pro:tedu_note liujia$ ps aux|grep 'uwsgi'
liujia            7583   0.0  0.0  4267768    900 s000  S+   10:05下午   0:00.00 grep uwsgi
liujia            7578   0.0  0.0  4377652    648   ??  S    10:05下午   0:00.00 uwsgi --ini uwsgi.ini
liujia            7577   0.0  0.0  4378176   2356   ??  S    10:05下午   0:00.00 uwsgi --ini uwsgi.ini
liujia            7576   0.0  0.2  4377652  33744   ??  S    10:05下午   0:00.47 uwsgi --ini uwsgi.ini
liujiadeMacBook-Pro:tedu_note liujia$ 

停止uwsgi

cd 到uWSGI配置文件所在目录
uwsgi --stop uwsgi.pid

liujiadeMacBook-Pro:tedu_note liujia$ uwsgi --stop uwsgi.pid
liujiadeMacBook-Pro:tedu_note liujia$ ps aux|grep 'uwsgi'
liujia            7598   0.0  0.0  4285176    924 s000  S+   10:07下午   0:00.00 grep uwsgi
liujiadeMacBook-Pro:tedu_note liujia$ 

注意点

1,无论启动还是关闭,都需要执行ps aux|grep 'uwsgi' 确认是否符合预期
2,启动成功后,进程在后台执行,所有日志均输出在配置文件所在目录的uwsgi.log中
3,Django中代码有任何修改,需要重新启动uwsgi

uWSGI测试

在浏览器输入http://127.0.0.1:8000/url 进行测试
注意:
此时端口8000被uWSGI进程监听,并非runserver
如果当前有预期返回,则uWSGI启动成功

uWSGI常见问题汇总

1,启动失败:端口被占用

原因:有其他进程占用uWSGI启动的端口;
解决方案:可执行 sudo lsof -i:端口号 查询出具体进程;杀掉进程后,重新启动uWSGI即可

2,停止失败:stop无法关闭uWSGI

原因:重复启动uWSGI,导致pid文件中的进程号失准
解决方案:ps出uWSGI进程,手动kill掉

上一篇下一篇

猜你喜欢

热点阅读