1.安装 uwsgi
pip3 install uwsgi
2.第一个wsgi程序,首先创建个foobar.py文件
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
3.在8000端口上面部署(前一章已经把8000端口对外开放了)
在foobar.py所在目录运行下面的语句
uwsgi --http :8000 --wsgi-file foobar.py
然后通过浏览器访问服务器的8000端口:
4.多进程,线程配置
可以通过--processes 和 --threads 来配置多个进程和线程
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
这个会创建4个进程,每个进程有2个线程,还有一个主进程(在其他进程挂掉后,会重新启动挂掉的进程)
和一个http的router
5.镜像--暂时没用到
One important task is monitoring. Understanding what is going on is vital in production deployment. The stats subsystem allows you to export uWSGI’s internal statistics as JSON:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
Make some request to your app and then telnet to the port 9191, you’ll get lots of fun information. You may want to use “uwsgitop” (just pip install
it), which is a top-like tool for monitoring instances.
6.部署在Django上面
django的应用,前一章已经创建过了,在那个应用的基础上来进行部署
在manger.py所在目录
uwsgi --http ***.***.***.***:8000 --chdir /home/aslan/myblog/ --wsgi-file myblog/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8080
通过浏览器访问8000端口可以正常访问:
uwsgi --socket ***.***.***.***:8000 --chdir /home/aslan/myblog/ --wsgi-file myblog/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8080
--socket和 --http的区别是:
???
命令行太长了,官方也给出了一个简单的方式就是使用配置文件:
创建一个user.ini文件
[uwsgi]
http = ***.***.***.***:8000
chdir = /home/aslan/myblog/
wsgi-file = myblog/wsgi.py #这个文件是django创建应用时自动创建的
processes = 4
threads = 2
stats = 127.0.0.1:9001
然后通过下面的命令运行:
uwsgi user.ini
可以实现和上面命令行一样的效果
/home/aslan/myblog/myblog/wsgi.py是Django创建应用时创建的,如果你的应用里面没有,说明你的Django的版本比较低了 < 1.4。现在我使用的是django 1.10