uwsgi+nginx+django环境部署时遇到的一些问题

今天在自己将自己的机子当作服务器,在本地部署了一遍uwsgi和nginx,由于项目组的服务器出了点问题,
只能在自己的机子上测试,记录一下,以及一些自己遇到的一些问题,希望能对
以后遇到类似问题的朋友有些帮助,少走些弯路。

**

1 各种开发包安装

**
这些在此就不再叙述,自行百度

2 需要先了解uwsgi和nginx

相信很多刚刚接触django的朋友,最初使用的时候,都会跟着教程,安装uwsgi和nginx
却对其作用,全然不知。
是的部署服务器的时候会用到,但部署之前,还需对uwsgi和nginx做做功课
https://blog.csdn.net/u014563759/article/details/81016583
http://www.sohu.com/a/116944332_505818
以上两篇可以做参考,当然,网上还有许多例子

3 部署

1 测试uwsgi
测试uWSGI: 新建文件test.py,写入以下内容

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

运行

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

列出占用端口的程序的pid号,并使用以下命令杀掉所有占用端口的程序

sudo kill -9 pid

然后浏览 http://127.0.0.1:8000(或http://内网ip:8000、或http://外网ip:8000)查看效果,有”Hello World”输出即安装成功。

2 测试nginx

输入

sudo nginx -t

应该会出现如下两行

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

这是配置之后的默认路径
也可以你自己安装时的 ./configure --prefix=/your path/nginx
your path + -t
总之会i出现以上两行
安装各种包的时候,路径一定要设置自己知道的,很多时候运行出错,都是路径问题
然后 确保 your path 的 nginx.conf的同目录下有uwsgi_params文件,之后会用到
在自己的工程根目录下,建立如destiny.conf的配置文件;
复制nginx.conf里面全部的内容,全部写入destiny.conf中。
然后按照下面写的,把destiny.conf配置文件中的server段部分location部分以及上面的一些为注释了的部分,全部
根据自己的环境替换

user myself
server {
        listen 80;   #代表服务器开放端口
        server_name localhost;  
        charset     utf-8;
        access_log      /home/mr_lin/nginx/access.log;  #这个和下面一个手动建 顾名思义 日志
        error_log       /home/mr_lin/nginx/error.log;
        client_max_body_size 75M;   #

        location /static {  #引用静态文件 要放在自己知道的地方
            alias /你的路径/static;  #项目的静态文件地址这个路径必须对,其余的静态文件,类似加法
        }  

        location / {  #访问项目根目录时,nginx要做的事  绝对路径
            include     /etc/nginx/uwsgi_params;   #上文提到的
            uwsgi_pass  127.0.0.1:8080;       #项目运行ip
            uwsgi_connect_timeout 30;     #timeout
        }


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

     。。。。。   #剩下的目前还没有用,都留着吧
    }

注意 这里有个坑,文件开头有个user 确认自己跑项目时候系统的用户就是你user设置的用户 如果该用户没有权限
请用

sudo chown -R  root:root /yourpath/static

不然项目运行时打开浏览器检测会发现静态文件加载出现403 forbiden

下面接着建立uWSGI的配置文件,在自己工程目录下创建uwsgi.ini文件,写入以下内容

[uwsgi]
socket = 127.0.0.1:8080  #和上面写的density.conf配置文件中的uWSGI监听地址完全一样; 
chdir=/home/mr_lin/programs/web/grandfather   #自己工程的绝对路径;
module=website.wsgi   #自己工程中的相对路径  django项目自带的wsgi.py  一般都在项目同名的app下
master = true
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize = /home/mr_lin/nginx/uwsgi.log   #日志自己手动建
static-map = /static=/yourpath/static   #静态文件同上

当然 要养成良好的习惯,毕竟服务器可没有图形界面给你看,要把所有路径尽量设在一个文件夹下,方便维护查找

启动uWSGI

sudo uwsgi --ini /yourpathy/destiny.ini    上文 在项目根目录下添加的

在这之前,我们要先去nginx配置文件的根目录拷贝mime.types(/etc/nginx/conf/mime.types)到工程目录(/wwwroot/destiny/mime.types),和destiny.conf放在一起。
否则用配置文件启动nginx会报错:

nginx: [emerg] open() "/**/**/**/mime.types" failed (2: No such file or directory)

当然,如果不想拷贝mime.types文件,也可以将配置文件中“include mime.types;”一项,改成绝对路径“include /etc/nginx/conf/mime.types;”

nginx -c /yourpath/destiny.conf

这里的-c 表示加载配置文件启动

ps:

还有一些
需要修改settings文件
由于在服务器上 项目处于生产环境
需要 改debug=False 以及

任何用户均可以访问,那么可以这样设置:

ALLOWED_HOSTS = [’*’]
修改静态文件路径
STATIC_ROOT = os.path.join(BASE_DIR, ‘/yourpath/static’)
然后执行以下命令,将静态文件全部复制到该目录下static里。

python3 manage.py collectstatic

最后在url最后加上 + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT
具体看 https://blog.csdn.net/kan2016/article/details/82838509?utm_source=blogxgwz8
还有一个可能遇到的
服务器端口未开放问题
https://blog.csdn.net/zll168123/article/details/86482230

tip:当日后维护的时候,要会查看自己创建的日志 这个非常重要

一些参考的文章 https://blog.csdn.net/u011249248/article/details/51253212
https://www.jianshu.com/p/d6905be330f4
本文主要内容来自 https://blog.csdn.net/c465869935/article/details/53242126

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值