uwsgi+nginx搭建--------为django搭建服务器环境

?为什么要搭建uwsgi+Nginx环境而不适用django自带的环境

django为单进程

在部署 Django 的时候有一个 runserver 命令可以直接作为服务器使用

runserver 是作为开发时候用的,不适合用于生产环节
1 静态文件: runserver 服务器当 debug=True 的时候 才会开启静态文件服务器。
2 性能: runserver 应该是单线程的。性能差,如果出现错误挂掉。那么整个进程都挂掉了

两者提供的调试服务器都不能承受高并发,最多几个请求

?如何搭建uwsgi+Nginx环境

首先安装uwsgi环境与Nginx环境:

uwsgi可直接pip安装

pip3 install uwsgi

这时候使用whereis uwsgi,如果在/usr/bin目录下,且使用uwsgi --help不会报错,那么说明安装成功

具体配置先按下不表

安装Nginx环境:

sudo apt-get install nginx

?如何设置运行环境

首先这是我django工程下的文件路径

├─.idea
│  └─inspectionProfiles
├─gala_test
│  └─__pycache__
├─login
│  ├─migrations
│  │  └─__pycache__
│  ├─templates
│  │  └─login
│  ├─update_fw
│  │  └─__pycache__
│  └─__pycache__
└─static

外层文件夹为gala_test,即工程名与app名称相同。

先设置uwsgi配置文件:

[uwsgi]
#此为设置端口,http代表使用http协议 http
=:8000 #chdir,为工程路径
chdir
= /root/Desktop/gala_test
#这个文件应该是不存在,直接套用就好了,工程名.wsgi
module
= gala_test.wsgi master = true
#设置进程数目 processes
= 10
#设置线程数目
threads=4 enable-threads=true
#通过这个网址可查看各进程的运行情况 stats
=127.0.0.1:9191 vacuum = true
#必选要写的内容,如果工程中使用的js及css格式未集成,需要生成一个static目录,具体方式我将在下面补充。 static
-map=/static=/root/Desktop/gala_test/static/ listen=1024
#调整最大文件传输大小
buffer-size=65535

我来说明一下

我的工程目录从Windows移植过去的,所以起初并没有配置uwsgi文件,配置有很多参数,这里只陈列几条关键信息

static生成:

在app目录下的settings.py里面添加static路径:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'all_static')
ST.path.join(BASE_DIR,'static')]
MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')

STATIC_ROOT是必须的。然后在manage.py的同级目录下执行:

python manage.py collectstatic

接下来就是Nginx的相关配置,先补充一个问题:

?uwsgi+Nginx启动django为什么css格式失效:

筛选大量帖子,贴吧,清一色的全都说是Nginx的配置问题,但是问题是我配置了,还是有问题(?????),带着满脸的黑线略过无数雷同粘贴复制的帖子,找到了唯一一封说明原因的帖子:

uwsgi的配置里面同样需要说明static的路径!(在上面的配置中有)

离谱的是,不管是uwsgi配置说明的帖子还是Nginx配置说明的帖子还是解决CSS格式错误的帖子,只有这一封有这个提示,因为用linux查询的故而无法对帖子进行展示,不过还是在此对作者表达敬意,在这个都是CtrlCV的时代难得能有自己写出来的东西。

?Nginx配置:

直接打开/etc/nginx/nginx.conf,在后面添加:

server{
    listen    8099;
    server_name    X.X.X.X;
    charset    UTF-8;
    access_log     /var/log/nginx/myweb_access.log;
    error_log    /var/log/nginx/myweb_access/log;
    client_max_body_size    75M;
    location  /  {
        include uwsgi_params;
        uwsgi_pass    X.X.X.X:8000;
        uwsgi_read_timeout    2;
    }
    location /static{
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias    /root/Desktop/gala_test/static/;
    }
}

上文中的X为对外开放的访问地址,即本机地址,换成非本机地址目前没有试过,不清楚会不会做NAT转化。

以上就是我对配置服务器目前已知的全部信息,因为为自己所查,从起初零碎的操作到最后结合成一定的系统花费了我差不多一周的时间,确实有些地方经验不足,从起初js+django代码的学习到学习服务器搭建,发觉自己还没有建立系统学习的框架,而且有些东西,确实有一定系统性,掌握这个系统性恰恰是学习快慢的关键。

配置的一些参数目前还没有做太多深入的了解,如果日后工作上有需求,有了新的理解,会再进行更新。

posted @ 2020-11-17 14:24  idiots  阅读(134)  评论(0)    收藏  举报