nginx与Django不可不说的秘密

最近由于因为课程要求,使用nginx部署一个基于Django的网站。部署流程官网上写的很详细了,但由于刚开始对nginx不太熟悉,在部署的时候还是遇到一些坑的,于是在这里做一总结与分享。

0x00 What is nginx?

Reverse Proxy

第一个坑就是什么是nginx,nginx是一个反向代理服务器(Reverse Proxy),那么问题来了,什么是反向代理服务器呢?大家可能对代理服务器都不陌生,比如当你需要访问一些不(bei)存(qiang)在的网站的时候,可能就会用到代理服务器,绕过阻碍,到达目的地。在这个过程中,代理服务器是代替客户访问网站的服务器,也许称作「代理客户」更容易理解,客户是在「代理客户」的后面。而反向代理则是代替网站服务器最先接受客户的访问,网站服务器是在「代理服务器」的后面。上图非常直观说明了反向代理服务器的原理。

0x01 Why nginx?

简单来说,使用反向代理服务器的优势除了安全上的考虑之外,主要就是性能上的考虑。nginx主要负责处理静态文件,当客户频繁访问静态文件的时候就会影响后端服务器的响应,这里就可以考虑使用nginx作为静态文件的缓存服务器,之前被客户访问过的静态文件就可以由nginx服务器直接返回给客户,从而减少对后端服务器的http请求,达到提高整体性能的目的。

0x02 uWSGI vs WSGI

首先,WSGI是python定义的Web服务器网管接口(Web Service Gateway Interface),它定义了web服务器如何跟web框架(如Django)交互规则,而uWSGI则是WSGI规则下的一个实现,同样在WSGI规则下的实现还有CherryPy等,简单来说,WSGI是一套协议,而uWSGI则是协议的实现。在这里,uWSGI扮演了nginx与Django之间通信的通道:

client <-> nginx <-> uWSGI <-> Django

0x03 Tips

Virtualen

Virtualenv是一个非常好用的工具,可以让你的某个项目的python依赖环境与主机的环境隔离。使用virtualenv有助于不同项目之间依赖的隔离,同时也方便项目复用以及团队协作。常用的命令如下:

创建一个新的环境(在当前目录下):
$ virtualenv env
激活某个环境:
$ source env/bin/activate
将当前依赖文件导出:
$ pip freeze > requirement.txt
依赖文件导入:
$ pip install -r requirement.txt

更加详细的使用可以参见官方文档

Shell Script

启动配置网站的参数太难记了,程序员都是懒人,懒人就要有懒人的方法,干脆就写一个脚本自动化部署吧。脚本很简单易用,在这里共享给大家:

if [ ! -n "$1" ]
then
    echo "Usages: sh uwsgiserver.sh [start|stop|restart]"
    exit 0
fi

if [ $1 = start ]
then
    psid=`ps aux | grep "zh" | grep -v "grep" | wc -l`
    if [ $psid -gt 4 ]
    then
        echo "uwsgi is running!"
        exit 0
    else
        uwsgi --ini /path/to/your/uwsgi.ini
        echo "Start uwsgi service [OK]"
    fi

elif [ $1 = stop ];then
    killall -s INT /home/ubuntu/.virtualenvs/zh/bin/uwsgi
    echo "Stop uwsgi service [OK]"
elif [ $1 = restart ];then
    killall -s INT uwsgi
    uwsgi --ini /path/to/your/uwsgi.ini
    echo "Restart uwsgi service [OK]"

else
    echo "Usages: sh uwsgiserver.sh [start|stop|restart]"
fi

Error.log

nginx提供了非常强大的日志功能,通过查看日志可以迅速发现问题,例如:

$ tail -1 /var/log/nginx/error.log
2015/11/17 23:30:44 [crit] 13983#0: *86821 connect() to unix:///tmp/website.sock failed (2: No such file or directory) while connecting to upstream, client: 61.160.213.32, server: 128.199.67.228, request: "GET http://zc.qq.com/cgi-bin/chs/numreg/init? HTTP/1.0", upstream: "uwsgi://unix:///tmp/website.sock:", host: "zc.qq.com"

这里可以发现.sock文件的路径出错导致网站无法访问。

nginx还可以配置日志的路径已经格式,更多资料可以参看nginx官网

0x04 总结

虽然是个简单的课程作业,简单使用nginx部署Django,但在这个过程中学习了很多有关运维的知识,深深体会到运维工程师工作的艰辛。虽然将来不会从事运维方面的工作,但作为一个有追求的程序员还是要了解服务器的工作原理,典型的网络框架,以及部署网站的一些技巧。生命不息,折腾不止~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容