django+uwsgi+nginx 部署项目

来源:互联网 发布:上瘾 网络剧 日本评论 编辑:程序博客网 时间:2024/05/24 15:42

django 项目完成后,使用django自带的runserver开发服务器使用在生产环境是不行的,性能远远跟不上。为此需要使用别的web服务器代替。

这里我就使用黄金搭配uwsgi和nginx。uwsgi是一个web服务器,其优点就是处理动态请求是强项。下面我们先将wusig和django搭配起来。

运行环境 ubuntu

1.安装 pip install uwsgi


2.进入django 项目目录


3.测试uwsgi +django能否使用

uwsgi --http 本机ip:端口 --file 项目名/wsgi.py --static-map=/static=项目static所在路径

浏览器 ip+端口运行 成功访问到项目页面,uwsgi+django 环境没有问题


4.编辑uwsgi.ini 配置文件

在 django 项目同级目录创建scripts目录,并且在目录中创建uwsgi.ini 文件,写入一下配置信息


# uwsig使用配置文件启动[uwsgi]# 项目目录chdir=/home/windblow/Desktop/django/Yuwei# 指定项目的applicationmodule=Yuwei.wsgi:application# 指定sock的文件路径        socket=/home/windblow/Desktop/django/scripts/uwsgi.sock# 进程个数        workers=5pidfile=/home/windblow/Desktop/django/scripts/uwsgi.pid# 指定IP端口        http=10.241.220.189:8080# 指定静态文件static-map=/static=/home/windblow/Desktop/django/Yuwei/yunweimain/static# 启动uwsgi的用户名和用户组uid=rootgid=root# 启用主进程master=true# 自动移除unix Socket和pid文件当服务停止的时候vacuum=true# 序列化接受的内容,如果可能的话thunder-lock=true# 启用线程enable-threads=true# 设置自中断时间harakiri=30# 设置缓冲post-buffering=4096# 设置日志目录daemonize=/home/windblow/Desktop/django/scripts/uwsgi.logbaocun


保存后运行 uwsgi --ini  uwsgi.ini

ip + 端口访问,成功。

uwsgi配置完成

5 由于uwsgi 的静态请求功能并不是它的强项,而nginx的强项就是静态请求,而且其并发性能很好。所以我们用nginx+uwsgi的方式进行部署。

具体流程是客户端碰请求静态文件时候,交给nginx处理,碰到动态请求时候,nginx交给uwsgi进行处理。所有请求最先交给nginx处理,然后再给uwsgi。

大致的机构如下:

客户端请求-------->nginx--------->uwsgi--------->django项目。

6.安装nginx

apt-get install nginx

安装完成后,运行如下命令:

/etc/init.d/nginx start

得到 欢迎界面。说明nginx安装成功。


7.接下来要将nginx和uwsgi进行联系起来。

cd /etc/nginx


默认配置都在nginx.conf中。


一定要记得用户那里很重要。(入过坑)
接下来
cd conf.d
会发现什么都没有。
vi default.conf  创建一个配置文件。将nginx和uwsgi联系起来。
在里面写入
server {        listen 80; # 我要监听那个端口        server_name 10.241.220.189; # 你访问的路径前面的url名称        access_log /var/log/nginx/access.log; # Nginx日志配置        charset utf-8; # Nginx编码        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型        error_page 404 /404.html; # 错误页面        error_page 500 502 503 504 /50x.html; # 错误页面# 指定项目路径uwsgi location / {        # 这个location就和咱们Django的url(r'^admin/', admin.site.urls)        include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的        uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间        uwsgi_pass unix:/home/windblow/Desktop/django/scripts/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他            }# 指定静态文件路径location /static/ {       alias /home/windblow/Desktop/django/Yuwei/yunweimain/static/;        index index.html index.htm;                }}

保存重启nginx

/etc/init.d/nginx restart

成功访问到我们的页面。

原创粉丝点击