首页 > 技术文章 > 33Django之uwsgi项目启停

tyjs09 2021-12-09 16:47 原文

1uwsgi运行说明:

1无论启动还是关闭,都必须要执行ps aux|grep 'uwsgi'确认是否符合预期

2启动后,进程在后台执行,所有日志均输出在配置文件所在的目录的uwsgi.log中

3django中的代码有任何修改,都需要重启uwsgi

2安装uwsgi:

#检查是否已安装uwsgi
[root@web01 ~]#pip freeze|grep -i 'uwsgi'
#安装uwsgi
[root@web01 ~]#pip install uwsgi==2.0.20 -i https://pypi.tuna.tsinghua.edu.cn/simple/

3uwsgi配置文件说明:

[root@web01 ~/djangoProject2/djangoProject2]#cat uwsgi.ini 
[uwsgi]
#socket=127.0.0.1:8000 #此模式必须要有nginx
http=127.0.0.1:8000
chdir=/root/djangoProject2 #用绝对路径指定项目目录
wsgi-file=djangoProject2/wsgi.py #用相对路径指定wsgi的位置
process=4 #进程个数,根据cpu核数定
threads=2 #每个进程中有几个线程
pidfile=uwsgi.pid #进程文件
daemonize=uwsgi.log #日志文件
master=True #开启主进程模式,即要有master进程去监视下面的子进程

4启停uwsgi:

#进入uwsgi所在的目录
[root@web01 ~/djangoProject2/djangoProject2]#ls
asgi.py  __init__.py  media  __pycache__  settings.py  urls.py  uwsgi.ini  views.py  wsgi.py

#启动uwsgi
#uwsgi -d --ini uwsgi.ini 
[root@web01 ~/djangoProject2/djangoProject2]#uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini

#查看目录多出来了启动文件和日志文件
[root@web01 ~/djangoProject2/djangoProject2]#ls
asgi.py  __init__.py  media  __pycache__  requirements.txt  settings.py  urls.py  uwsgi.ini  uwsgi.log  uwsgi.pid  views.py  wsgi.py

#检查uwsgi是否已经启动:
[root@web01 ~/djangoProject2/djangoProject2]#ps aux|grep 'uwsgi'
root      325189  0.0  1.1  64844  9368 ?        S    16:04   0:00 uwsgi --ini uwsgi.ini
root      325190  0.0  1.3 148060 11172 ?        Sl   16:04   0:00 uwsgi --ini uwsgi.ini
root      325191  0.0  0.3  64844  2736 ?        S    16:04   0:00 uwsgi --ini uwsgi.ini
root      325218  0.0  0.1  12348  1052 pts/1    S+   16:15   0:00 grep --color=auto uwsgi

#停止uwsgi:
#pkill -9 uwsgi
[root@web01 ~/djangoProject2/djangoProject2]#uwsgi --stop uwsgi.pid
[root@web01 ~/djangoProject2/djangoProject2]#ps aux|grep 'uwsgi'
root      325243  0.0  0.1  12348  1144 pts/1    S+   16:42   0:00 grep --color=auto uwsgi

5uwsgi常见问题汇总:

1启动失败:
原因:端口被占用

解决方法:
通过lsof -i:8000查看具体进程,然后杀掉进程后重启uwsgi即可!

2停止失败:
原因:重复启动uwsgi导致pid文件中的进程号失准

解决方法:
通过pa -aux|grep 'uwsgi'命令找到进程并查看进程号,然后用cat uwsgi.pid 命令查看文件内的进程号,如果号码不一致,就直接pkill -9 uwsgi或者直接kill -9 进程号。

 

推荐阅读