django+uwsgi+nginx联合使用的简单配置

简介

Django是一个非常强大的python后端开发框架
uwsgi是一种线路协议
Nginx是一个强大的Web服务器,主要功能是反向代理和优秀的静态资源处理能力

下载、安装与测试

本次探讨主要基于CentOS7.2系统,系统预装的有python2.7,自己之前手动升级了python3.7.0版本。具体过程可参考网上教程
django的安装及简单项目的搭建可以参考网上教程,在此不做过多赘述
使用pip3工具安装uwsgi

pip3 install uwsgi

安装完成后开始测试
新建test.py测试文件,内容:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"      #python3版本应改为return [b"Hello Wrold"]

完成之后启动uwsgi

uwsgi --http :8000 --wsgi-file test.py

如果启动成功,应该会类似于下面这样
在这里插入图片描述
此时在客户端浏览器里输入

http://服务器公网IP:8000

应该会显示Hello World字样的界面,表示测试成功
接下来安装Nginx

yum install nginx -y

安装完成后可以直接使用nginx命令启动
然后对nginx服务器的配置可以参考另一片文章:https://blog.csdn.net/weixin_42595385/article/details/84782205
接下来就是通过uwsgi来达到使Nginx与Django协作的目的了

连接uwsgi与Django

单独通过uWSGI来作为django的web服务器也是可行的,但在实际生产环境中效果远没有uwsgi+django+nginx三者协作好
首先cd进入到django项目中到与manage.py同级目录,假设django项目结构为

helloworld
    - hello     
         - db.sqlite3
         - app
               - admin.py
               - apps.py
               -  __init__.py
               - migrations
               - models.py
               - __pycache__
               - tests.py
               -  urls.py
               -  views.py
         - HelloWorld
               - _init__.py 
               - __pycache__  
               - settings.py  
               - testdb.py  
               - urls.py  
               - view.py  
               - wsgi.py
         - manage.py
         - static
         - templates
               - Hello.html

新建uwsgi.ini文件作为uwsgi的配置文件,内容:

# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=Helloworld
# 指定项目的application
module=HelloWorld.wsgi:application
# 监听的端口号
http=0.0.0.0:8000
# 进程个数
workers=5
#设置pid目录
pidfile=hello.pid
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=hello.log

设置好配置文件后就可以使用uwsgi来启动django项目了
使用如下命令:

uwsgi --ini uwsgi.ini

同样出现类似上面图片情况说明启动成功,使用客户端浏览器输入http://服务器公网IP:8000/hello/应该可以看到对应页面

http://服务器公网IP:8000/hello/

连接uwsgi与Nginx

django与uwsgi的连接完成后接下来就是uwsgi与nginx间的连接了,同样也很简单,cd进入/etc/nginx/conf.d目录,该目录是专门用来存放用户配置文件的

cd /etc/nginx/conf.d

新建uwsgi.conf配置文件,内容如下:


        server {
            listen       80;
            server_name  www.sgnilo.cn;
            charset      utf-8;



            client_max_body_size 75M;


            location /static {
                alias    /data/www;
            }


            location /media {
                alias    /data/www;
            }


            location / {
            include    uwsgi_params;
            uwsgi_pass 0.0.0.0:8000;
            uwsgi_param UWSGI_CHDIR HelloWorld/HelloWorld;
            uwsgi_param UWSGI_SCRIPTS HelloWorld.wsgi;
            }
       }

这里的uwsgi_pass的路径或端口就是django项目工作的端口或路径

利用Nginx+uwsgi启动Django

接下来应该修改刚刚设置的uwsgi.ini配置文件将其中的http=0.0.0.0:8000更改为socket=0.0.0.0:8000,大致的意思就是uwsgi从自己监听0.0.0.0:8000转变为用socket的方式连接nginx并将请求传送到在0.0.0.0:8000工作的django项目,这里一定要注意的就是socket的地址端口号或路径一定要跟刚刚新建的uwsgi.conf配置文件中的uwsgi_pass后的内容保持一致

# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=Helloworld
# 指定项目的application
module=HelloWorld.wsgi:application
# 监听的端口号
http=0.0.0.0:8000        #更改为socket=0.0.0.0:8000
# 进程个数
workers=5
#设置pid目录
pidfile=hello.pid
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=hello.log

更改完成后重启nginx与uwsgi

nginx -s reload
ps -ef|grep uwsgi
kill -9 进程id
uwsgi --ini uwsgi.ini

完成后三者间的连接工作就算是完成了,可以在客户端浏览器中测试了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值