Django+Nginx+uwsgi 部署网站项目

1.UWsgi

wsgi:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 
利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了;
uwsgi:同WSGI一样是一种通信协议 
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。
uWSGI :一种python web server或称为Server/Gateway 
uWSGI类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。 
因为apache、nginx等,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,让人感觉好像apache就支持php一样。 uWSGI实现了wsgi协议、uwsgi协议、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

2.nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

3.安装UWsgi

安装 uwsgi
uwsgi:https://pypi.python.org/pypi/uWSGI
uwsgi 参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html

pip install uwsgi
uwsgi --version    # 查看 uwsgi 版本

测试 uwsgi 是否正常:
新建 test.py 文件,内容如下:
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"
然后在终端运行:
uwsgi --http :8001 --wsgi-file test.py

在浏览器内输入:http://你服务ip:8001,查看是否有"Hello World"输出,若没有输出,请检查你的安装过程。

4.安装nginx

安装 Nginx
安装命令如下:
cd /temp/dow
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx-1.5.6 \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

保证你的安装nginx能正常提供服务。

5.uwsgi 配置

uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建uwsgi9090.ini,添加如下配置:

[uwsgi]
socket = :8080     #监听提供服务端口,负责和nginx交互
chdir           = /web/gatherweb     # Django项目地址
module          = gatherweb.wsgi    # Django提供的wsgi.py.
master          = true    #主进程
workers = 2      #    子进程
processes       = 4    #    进程数
vacuum          = true  # 退出、重启时清理文件
daemonize = /web/weblog/uwsgi9090.log  # 日志文件


附django项目目录结构:
/web/gatherweb/gatherqq  APP目录
/web/gatherweb/gatherweb/settings.py
/web/gatherweb/gatherweb/wsgi.py

启动命令:
uwsgi --ini /etc/uwsgi9090.ini

6.Nginx 配置

找到nginx的安装目录(如:/usr/local/nginx/),打开配置文件,修改server配置:

server {
    listen 80;
    server_name localhost ;
    charset     utf-8;
    access_log      /web/weblog/nginx_access.log;
    error_log       /web/weblog/nginx_error.log;
    client_max_body_size 75M;


   #    解决admin管理静态文件经过nginx加载失败问题。
  #  将django安装目录中admin静态目录拷贝一份到你的项目中即可。
 
    location /static {  
        alias /web/gatherweb/static;
    }

    location / {
        include     uwsgi_params;
        uwsgi_pass  127.0.0.1:8080; #与uwsgi 打交道的端口。
    }
}

 

nginx常用命令:
nginx -t    测试配置文件
service nginx start
service nginx restart
service nginx stop
service nginx status
在浏览器输入:http://你的域名或者ip,你就可以看到 django 的 "It work" 了。

 

 7.其他安装过程中的问题。

安装 uwsgi 如果失败,有可能是缺少Python的头文件和静态库,需要安装开发版本:

For apt (Ubuntu, Debian...):
sudo apt-get install python-dev   # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs
For yum (CentOS, RHEL...):
sudo yum install python-devel
For dnf (Fedora...):
sudo dnf install python2-devel  # for python2.x installs
sudo dnf install python3-devel  # for python3.x installs
For zypper (openSUSE...):
sudo zypper in python-devel   # for python2.x installs
sudo zypper in python3-devel  # for python3.x installs

 

posted @ 2018-07-10 11:38  豆腐不怕卤水的经历  阅读(208)  评论(0编辑  收藏  举报