ubuntu配置django+nginx+uwsgi踩坑记

新手学习前后端,用了华为云服务器。测试项目之前的环境是ubuntu下django+apache2,最后解决不了出现的编码问题,然后转用nginx,最后成功运行,说说过程及学习体会。

django+nginx+uwsgi网上教程一大堆,配置也非常灵活,开始都把我绕晕了,怎么网上说的都不同,最后终于发现,其实本质上都是相同的,要理解他们各自的作用就行了。

django是一套web开发框架,它自己也配有一套调试用的web服务器,但是其是仅仅是用于调试的,性能肯定不如专业的web服务器。

nginx就是专业的web服务器,我的理解就是用来处理httb申请及响应的。

uwsgi是django与nginx之间的桥梁,uwsgi直接来处理客户端发来的动态请求(静态的nginx可以直接处理掉),客户端发来的动态请求通过http到了nginx,nginx再通过socket发送给uwsgi+django处理。网上有图如下。

搞明白关系,再来配置就更加明白一些了。

有些前提条件,确保你的django项目在没有nginx+uwsgi的情况下,通过runserver的方式,客户端也能够正常访问,表示django工程没问题。

其次,通过sudo apt-get 方式安装了nginx,pip3 install uwsgi安装了uwsgi。

1、首先配置nginx。在/etc/nginx/sites-available下面文件一个project.conf。project是工程名。内容如下:

server {

    listen        8000;    #供客户端访问的端口

    server_name    119.3.*.*;     #供客户端访问的地址

    charset UTF-8;

    client_max_body_size 75M;

    location / {         #客户端的动态请求需要socket发送至uwsgi的配置地方

        include uwsgi_params;        #固定格式

        uwsgi_pass 192.168.*.*:8001;    #此处最好指明IP加端口,且此端口不要与上面的供客户端访问的端口重复。此处的IP+端口,需要与后面的project_uwsgi的配置文件一致,表示把动态请求发往这个地方去。

    } 

    location /media  {        #静态数据,

        # /home/projects/project/meida/;

        alias /home/projects/project/media/; # your Django project's media files - amend as required

    }

    location /static {         #静态数据,

        # /home/projects/project/static/

        alias /home/projects/project/static/; # your Django project's static files - amend as required

    }

}

在把此文件建一个快捷方式,放入/etc/nginx/sites-enabled文件夹下,这样即可悲nginx自动读取。

sudo ln -s  /etc/nginx/sites-available/project.conf  /etc/nginx/sites-enabled/project.conf

然后,启动nginx,sudo service nginx reload 或者sudo service nginx restart

2,配置uwsgi

在django工程目录下,新建一个project_uwsgi.ini,与manage.py平级(这样简单些)。内容如下:

# project_uwsgi.ini file

[uwsgi]

# Django-related settings

socket = 192.168.*.*:8001    #绑定一个地址+端口,监听动态来自于nginx的socket的动态消息

# the base directory (full path)

chdir          = /home/projects/project    #包含manage.py的路径

# Django s wsgi file

module          = project.wsgi 

# process-related settings

# master

master          = true        #固定格式

# maximum number of worker processes

processes      = 4        #固定格式

# ... with appropriate permissions - may be needed

# chmod-socket    = 664        #固定格式

# clear environment on exit

vacuum          = true        #固定格式

然后启动uwsgi,在django项目目录下,通过uwsgi --ini project_uwsgi.ini读取配置文件启动。

3、至此,我的客户端可正常访问服务端。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值