• Django线上部署实战教程之Nginx+Gunicorn+Django篇


    #############################################

     

    推荐 nginx supervisor gunicorn  配置简单,运维方便。

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

    Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。 和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。

    gunicorn 应用服务器的运行与 Nginx 反向代理

    Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

    supervisor 控制 gunicorn 服务器

     

    #############################################

    1.先查看nginx配置是否正确
    执行下面的命令:
    nginx -t   #查看nginx配置是否正确  也可以切换到nginx的安装目录下的sbin目录下,执行: ./nginx -t
    
    2.查看nginx是否启动成功
    ps -ef | grep nginx  #查看nginx端口

    netstat -ntpl |grep 3306
    我先执行了1,2,发现nginx配置没问题,且启动成功了!那么,我预感到是端口没开放,因为用的是阿里云的服务器,需要先配置安全组。 配置了安全组之后,就可以访问了,但是报错 502 Bad Gateway nginx/1.10.3 (Ubuntu)

    #############################################

    Nginx配置地址:
    sudo vim /etc/nginx/sites-enabled/djangoblog.com.conf
    
    日志地址:
        access_log /var/log/nginx/django_access.log;
        error_log /var/log/nginx/django_error.log;
    
    通过上面的铺垫,我们来看看如何动态监控日志尾部,那就是使用命令:tail -f 文件名,
    
    日志报错:

    2020/02/21 23:15:53 [error] 3440#3440: *1 open() "/root/python//DjangoBlog/collectedstatic/static/CACHE/js/output.c71e77581f2f.js" failed (13: Permission denied), client: 119.80.137.248, server: 123.57.142.175, request: "GET /static/CACHE/js/output.c71e77581f2f.js HTTP/1.1", host: "123.57.142.175:8090", referrer: "http://123.57.142.175:8090/"

    这个没有权限的问题,需要修改Nginx的配置文件,把user改为root,

    2020/02/21 21:04:15 [error] 761#761: *22 connect() failed (111: Connection refused) while connecting to upstream,
    client: 139.224.238.50, server: 123.57.142.175, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "123.57.142.175"
    这个问题,我是先启动了gunicorn,然后莫名其妙就好了,

    #############################################

    静态资源无法加载出来,Nginx配置出了问题,

    nginx的配置问题
    
    配置 nginx 主要进行两个文件的修改,两个文件都在/etc/nginx 目录下 一个是 nginx.conf,需要修改的内容为: 将第一行定位用户的名字改为你的用户文字,我的是 root
    第二个文件时 sites-available/sites-enable 目录下的 default 文件

    nginx指定文件路径有两种方式root和alias

    nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
    [root]
    语法:root path
    默认值:root html
    配置段:http、server、location、if
    [alias]
    语法:alias path
    配置段:location
    
    root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
    root的处理结果是:root路径+location路径
    alias的处理结果是:使用alias路径替换location路径
    alias是一个目录别名的定义,root则是最上层目录的定义。
    还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

    #############################################

    #############################################

  • 相关阅读:
    ios 中的循环引用问题及解决
    Leetcode-Maximum Depth of Binary Tree
    Leetcode-Min Stack
    Leetcode-Intersection of Two Linked Lists
    Leetcode-Binary Tree Inorder Traversal
    Leetcode-Unique Binary Search Trees II
    Leetcode-Unique Binary Search Trees
    Leetcode-binary Tree Zigzag Level Order Traversal
    Leetcode-Construct Binary Tree from inorder and preorder travesal
    Leetcode-Next Permutation
  • 原文地址:https://www.cnblogs.com/andy0816/p/12342736.html
Copyright © 2020-2023  润新知