zoukankan      html  css  js  c++  java
  • Gunicorn+django部署

    部署前提是服务器中要有项目中所需的其他服务,例:mysql数据库,nginx,python解释器等,在其他环境搭好的情况下使用此方式可简单部署一个django项目。

    至于安装上面提到的这些,有兴趣可点击前往博客查看

    1、准备工作

    • 创建干净的虚拟环境
    • 执行下载命令下载所需依赖包
    • 测试数据库链接
    • 测试项目运行
    • (其中详细步骤上面博客链接中有,这里不赘述了)

    2、下载Gunicorn

    # workon进入项目的虚拟环境中下载
    # pip install gunicorn 
    

    4、修改配置文件

    # 修改settings.py文件的:INSTALLED_APPS
    INSTALLED_APPS = [
        ...
        'gunicorn',  # 把gunicorn添加到apps中
    ]
    

    5、使用Gunicorn命令运行django项目

    # 在manage.py 同级目录下执行命令,注:book是项目名
    gunicorn book.wsgi -b 127.0.0.1:8000
    

    基本参数列表:

    -c        指定一个配置文件(py文件)
    -b        与指定的socket进行绑定
    -D        以守护进程形式来运行Gunicorn进程
    -w        工作的进程数量,后面加数字;[gunicorn -w 2 untitled.wsgi -b 0.0.0.0:8000]
    –threads  后面加数字,处理请求的最大线程数
    -k        工作进程类型: sync(默认), eventlet, gevent, or tornado, gthread, gaiohttp.
    –chdir    后面加路径,跳转到目录下执行
    –reload   后面可加参数,默认参数false,开启为true,开启时当代码发生改变,会重新加载修改的代码,并启动程序,(热加载)
    -proxy-protocol
    –worker-connections
    –access-logfile
    

    6、测试运行

    # 执行命令curl后查看返回状态,这里未开启守护进程,加载需要再开一个终端执行命令
    curl 127.0.0.1:8000
    

    7、运行可能报错

    # 如果使用参数 -k gevent 有可能报错,错误大致信息就是缺少gevent或者gevent版本低,pip下载一下就好,或者更换版本
    # 同理使用其它 -k 参数也是如此
    

    8、配置脚本文件启动django项目

    在manage.py同级目录创建配置文件gunicorn.conf.py

    # gunicorn_config.py
    import logging
    import logging.handlers
    from logging.handlers import WatchedFileHandler
    import os
    import multiprocessing
    
    bind = '127.0.0.1:8000'      # 绑定ip和端口号
    # chdir = '/opt/workspace/bookstore'  # 目录切换
    # backlog = 500              # 监听队列
    timeout = 60                 # 超时
    worker_class = 'gevent' # 使用gevent模式,还可以使用sync 模式,默认的是sync模式
    workers = multiprocessing.cpu_count() * 2 + 1    # 进程数
    threads = 2  # 指定每个进程开启的线程数
    loglevel = 'info'  # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
    access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
    accesslog = "/opt/workspace/bookstore/log/gunicorn_access.log"  # 访问日志文件
    errorlog = "/opt/workspace/bookstore/log/gunicorn_error.log"    # 错误日志文件
    

    9、运行命令

    # gunicorn.conf.py 是配置文件
    # bookstore 是项目名
    # gunicorn -c gunicorn.conf.py bookstore.wsgi:application
    

    10、nginx简单部署示例

    找到nginx配置文件打开添加站点

    http {
        include       mime.types;
        default_type  application/octet-stream;
        
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  www.flag.space, 109.39.89.199;
            location / {
                proxy_pass http://127.0.0.1:8000;
                #root   html;
                #index  index.html index.htm;
            }
            location /static {
                alias /opt/workspace/bookstore/static;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    

    其中的 location / 中配置项目的url地址

    location /static 中配置静态文件路径

  • 相关阅读:
    (二十九)动态单元格
    (二十八)QQ好友列表的展开收缩
    (二十七)QQ好友列表的实现
    (二十六)静态单元格(Cell)
    (二十五)键盘的设置与TextField细节处理
    poj 1734 Sightseeing trip
    BZOJ 2200: [Usaco2011 Jan]道路和航线
    LUOGU P1073 最优贸易
    poj 3662 Telephone Lines
    poj 3539 Elevator
  • 原文地址:https://www.cnblogs.com/wylshkjj/p/15567951.html
Copyright © 2011-2022 走看看