• nginx--gunicorn 部署Web服务


    gunicorn 安装

    pip install gunicorn
    
    • gunicorn 指定服务器后台运行
    gunicorn 项目名.wsgi -b 0.0.0.0:9999
    
    • 查看正在运行的进程
    netstat -tpl
    
    • 进入我自己的django项目中配置(创建)一个gunicorn.conf.py 的配置文件
    import logging
    import logging.handlers
    from logging.handlers import WatchedFileHandler
    import os
    import multiprocessing
    
    bind = "127.0.0.1:8080"   #绑定的ip与端口
    backlog = 512                #监听队列数量,64-2048
    chdir = '/root/sites/DjangoBlog'  #gunicorn要切换到的目的工作目录**
    worker_class = 'sync' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
    workers = multiprocessing.cpu_count()
    #workers = 4 # multiprocessing.cpu_count()    #进程数
    threads = 16 #multiprocessing.cpu_count()*4 #指定每个进程开启的线程数
    loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
    access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
    
    accesslog = "/root/sites/DjangoBlog/log/gunicorn_access.log"      #访问日志文件  **
    errorlog = "/root/sites/DjangoBlog/log/gunicorn_error.log"        #错误日志文件  **
    # accesslog = "-"  #访问日志文件,"-" 表示标准输出
    # errorlog = "-"   #错误日志文件,"-" 表示标准输出
    
    proc_name = 'fof_api'   #进程名
    
    
    • 后台运行服务
    旧版本命令
    gunicorn python:gunicorn.conf.py
    新版本          (-c 表示指定的文件 , -D 表示后台运行)
    gunicorn -c gunciorn.conf.py 项目名称.wsgi -D 
    

    nginx

    不同的nginx版本配置不同
    源码安装会在/usr/local/ 下 , yum 安装会自动分配目录

    • nginx的配置文件: 我们也可以单独再创建一个文件下的conf, 在Nginx本身的conf文件中吧serve剪切到 新创建的里面,在本身自带的conf文件中include路径指定新创的conf (*.conf) 在新创建的conf中添加
    server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            charset utf-8;
           # root         /usr/share/nginx/html;
            root         /root/message/_book;
            # Load configuration files for the default server block.
    
            access_log  /var/log/nginx/build-access.log;                                        
            error_log  /var/log/nginx/build-err.log;                                            
            location = /favicon.ico { access_log off; log_not_found off; }                      
            location /static/ {                                                                 
            #静态文件如js,css的存放目录                                                          
                    alias /root/Code/django-log/DjangoBlog-master/sites-data/;                  
            }                                                                                   
            location / {                                                                        
                                                                                                
                    proxy_pass http://0.0.0.0:8080; # 这里要配合启动文件使用                      
                    proxy_redirect     off;                                                     
                    proxy_set_header   Host                 $http_host;                         
                    proxy_set_header   X-Real-IP            $remote_addr;                       
                    proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;         
                    proxy_set_header   X-Forwarded-Proto    $scheme;                            
            }                                                                                   
    
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    
    
    • 重新启动Nginx服务
    systemctl restart nginx.service
    
    • 杀死gunicorn进程
    killall gunicorn
    
    • 现在修改gunicorn.conf.py 绑定的端口,因为风险大
    • 再次启动gunicorn
    gunicorn -c gunicorn.conf.py 项目名称.wsgi -D
    

    Django

    • 打开manage.py文件有一个收集静态资源的文件
    python manage.py collectstatic (收集所有的静态资源到某个文件下(该文件在settings里有指定【STATIC_ROOT = os.path.join(SITE_ROOT, 'sites-data')
    】))
    
    • 接着在nginx 新创的conf中指定静态资源收集的路径 然后重新加载nginx配置文件
    指定: alias /root/Code/django-log/DjangoBlog-master/sites-data/;
    重新加载: systemctl reload   然后页面也就会跟指定的路径进行映射,出现效果
    

    nginx + gunicorn 部署Django博客访问速度比较快

    • nginx负责静态资源 gunicorn负责动态资源
  • 相关阅读:
    Shell编程进阶 2.2 shell数组
    Shell编程进阶 2.1 shell函数
    win7将 esc与 capslock 互换
    Vimium 快捷键记录
    mysql-server 的一些记录
    2003服务器断开rdp后会自动注销。
    CentOS云服务器数据盘分区和格式化
    autoproxy 规则
    理解MySQL——索引与优化
    Spinnaker简介
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12105899.html
Copyright © 2020-2023  润新知