一 前记

  最近在使用Django倒腾属于自己的网站,由于以前没有接触过多少这类信息,所以,很多东西都是从零开始学习的。在参考网上的资料时候,发现很多对这方面记录的,很多人都写的不是很清楚,也许我这个新手的原因。反正自己是看不懂的。对着很多操作流程来进行建站,尝试了很多次才算是成功。本着前人栽树,后人乘凉的原则。鄙人就把自己的操作流程记录下来了。希望对第一次安装并使用Nginx的人有价值。写的不好的地方也多请高手指点。

二 为什么要用Nginx?

  官方答案:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
通俗理解:Nginx就是让你的IP:端口的组合变成一个方便你搜索的网址:比如,百度的网址:www.baidu.com Nginx里面的就是对应的:23.123.12.34:8001(随便一个IP地址做例子),并且它还有别的价值,比如,不容易短线,网站访问速度快,并发能力强嘛。
在使用Django建站的时候,一般使用:python manage.py 0.0.0.0:8001 这样是可以起动网页了,输入:http://127.0.0.1:8001 你就会发现自己的网页已经成功的显示了。接下来,你会发现有两个问题:一个是只要执行:python manage.py 0.0.0.0:8001的终端一旦关掉或者这个进程被杀死,后台马上挂掉了。还有一个就是自己的网站怎么后面有一个端口号呢?为什么很多商用的网站没有呢?百度有吗?谷歌有吗?到底是怎么做到的呢?
这个就是Ningx + uwsgi做的事情了。

三 Nginx安装和配置

  一般有几种安装方式:
命令行安装:本人的是mac。安装的方式就是:brew install nginx
还有一个就是所有系统都通用的源码安装方式:
去网站:http://nginx.org/download/下载所需的版本,一般是最新的。使用命令安装:

复制代码
tar zxf nginx-1.0.8.tar.gz cd nginx-1.0.8 ./configure ./configure --add-module=path/substitutions4nginx-read-only //注意这里的path是相对应的真实路径 make make install
复制代码

  接下来就是配置nginx了,这里有很多配置方法,估计要把每项都弄清楚需要花一些时间,本人就只是做简单的安装并测试,所以,配置就比较简单了。主要注意的就是server_name 和uswgi_params 本人的server内容如下:

复制代码
    server {         listen       80;         server_name  localhost; //localhost or your web address          #charset koi8-r;        #access_log  logs/host.access.log  main;         location / {             root   html;             index  index.html index.htm;             uwsgi_pass 127.0.0.1:8008; // ip addr and port is your open ip or loopback 127.0.0.1             include uwsgi_params;         }          #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #         error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }
复制代码

  假如你找不到nginx.conf在哪儿,就直接使用locate nginx.conf查看一下吧。我的路径是:/usr/local/etc/nginx/nginx.conf

四 uwsig使用配置文件启动

  uwsgi在上篇文章中已经有介绍了,这里就不多做分析了,这里就直接使用吧。在和manage.py同级目录下创建:helloapp.wsgi 并填入下面内容,切记,文件的路径要改成自己工程的。

复制代码
[uwsgi] # 项目chdir=/Users/Documents/igihub/django/django_example/helloapp/# 指定项目的applicationmodule=helloapp.wsgi:application # 指定sock的文件路径socket=/Users/Documents/igihub/django/django_example/helloapp/script/uwsgi.sock # 进程个数workers=5 pidfile=/Users/Documents/igihub/django/django_example/helloapp/script/uwsgi.pid # 指定IP端口socket=127.0.0.1:8008# 指定静态文件 #static-map=/static=/opt/proj/teacher/static # 启动uwsgi的用户名和用户组uid=root gid=root # 启用主进程master=true # 自动移除unix Socket和pid文件当服务停止的时候vacuum=true # 序列化接受的内容,如果可能的话thunder-lock=true # 启用线程enable-threads=true # 设置自中断时间harakiri=30