问题描述:有时候,只想快速的部署一个Django项目实现项目迭代开发。本文介绍不使用Nginx只用uwsgi如何实现Django项目的快速部署。

一、安装uwsgi

# 在进入虚拟环境的情况下pip install uwsgi

如果还不会创建Ubuntu中的Python虚拟环境,可以参考我之前的文章:

【学习心得】Linux下的Python虚拟环境搭建_linux python虚拟环境搭建

二、启动uwsgi

1、直接命令启动

优点:最简单

缺点:无法后台运行,无法记录日志

# 在你的工程项目目录下执行uwsgi --http 0.0.0.0:80 --file 主APP文件夹/wsgi.py# 如果不行的话,前面加上sudosudo uwsgi --http 0.0.0.0:80 --file 主APP文件夹/wsgi.py

— http 0.0.0.0:80

指定访问主机地址(0.0.0.0代表任何主机都可以访问)和端口号,可以简写为:80

–file 主APP文件夹/wsgi.py

是你wsgi.py文件所在位置,一般是主应用文件夹下

2、通过配置文件uwsgi.ini启动

创建配置文件并写入下面这些内容。把uwsgi.ini配置文件放与在manage.py同级。

[uwsgi]# 设置访问主机IP和端口http = 0.0.0.0:80#指定与Nginx通信的方式,不影响uwsgi本身运行。如果配置了需要到nginx中进行相关配置-才能通过nginx访问Django# socket = 127.0.0.1:8001#django项目目录,与manager.py同级chdir = /home/ubuntu/DjangoWebProject/项目名称/#主应用中的wsgi,下面这种配法是在Django根目录下运行uwsgi有效,主APP名为有settings.py的那个目录名。如果是其他目录运行,下面建议写成绝对路径。wsgi-file = 主APP名/wsgi.py# 启动一个master进程,来管理其余的子进程master=trueprocesses = 2 # 一般CPU是几核就开几个threads = 2#服务停止时自动移除unix Socket和pid文件vacuum = true#设置后台运行保存日志。只要配置了daemonize就会让uwsgi后台运行,同时将日志输出到指定目录daemonize = /home/ubuntu/DjangoWebProject/项目/log/uwsgi.loglogto = /manage.py文件所在文件夹/log/uwsgi.log# 上面这两个的路径是一样的,只是我描述的方式不同#保存主进程的pid,用来控制uwsgi服务pidfile=/tmp/你自己取一个名字.pid#uwsgi --stop/reload /tmp/可以是master.pid 停止/重启uwsgi

3、通过配置文件启动的命令

# 如果运行不成功可以加上sudosudo uwsgi --ini uwsgi.ini

三、重启或停止uwsgi

1、启动命令

uwsgi--iniuwsgi.ini

2、停止命令

# 要想用这个命令前提是,你配置文件写了vacuum和profileuwsgi --stop /tmp/master.pid

3、重启命令

# 要想用这个命令前提是,你配置文件写了vacuum和profileuwsgi --reload /tmp/master.pid

4、用杀死进程的方式关闭uwsgi

# 第一步先查询进程号PIDps -ef | grep uwsgi# 第二步关闭进程kill -9 uwsgi_pid