django -- uwsgi+nginx部署


比起牺牲自己的圣人,我更愿意成为不明事理的勇者


说明

直接记录完整的部署操作,详细的可以查看官方文档

使用uWSGI和nginx来设置Django和你的web服务器


前提

  • 项目根目录:/root/youxue
  • django 环境搭建好
  • 安装 uwsgi
  • 安装 supervisor
  • 安装 nginx

部署文件

  1. uwsgi_params(使用socket时nginx连接uwsgi要用到)
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;
  1. youxue_uwsgi.ini (uwsgi可以直接使用此文件启动服务)
[uwsgi]

# 根目录
chdir           = /root/youxue
# Django's wsgi file
module          = youxue.wsgi

# process-related settings
# master
master          = true
# 开启的最多进程数
processes       = 10
# 使用 socket连接的时候需要制定路径
# 使用 http 连接的时候制定端口 # socket=:8000
socket          = /root/youxue/youxue.sock
# 管理员不需要另外设置权限
# chmod-socket    = 664

# 服务器退出时自动清理环境 删除 sock 文件和 pid 文件
vacuum          = true

pidfile         = /tmp/youxue.pid  # 制定pid文件的位置
  1. /etc/nginx/sites-enabled/default(nginx 配置)

也可以新建 conf 文件

upstream youxue {

    server unix:///root/youxue/youxue.sock;

}

server {

    listen 80;
    server_name youxue.pinsily.site; # 域名 or IP
    root /root/youxue;              # 项目根目录
    index index.html index.htm;
    charset utf-8;  
    location /static {              # 

        alias /root/youxue/static;

    }

    # 日志文件
    access_log /root/log/youxue.log;
    error_log /root/log/youxue_error.log;

    location /media {

        alias /root/youxue/media;

    }

    location / {

        uwsgi_pass youxue;
        include /root/youxue/uwsgi_params;
    }

}

使用 supervisor 进行进程管理

  1. 安装使用自行搜索

  2. 配置文件

# vim /etc/supervisor/supervisord.conf

[program:youxue]
command=uwsgi --ini /root/youxue/youxue_uwsgi.ini
autostart=true
autorestart=true
user=root
log_stderr=true
logfile=/var/log/uwsgi-youxue.log
  1. 基本操作
supervisorctl start youxue
supervisorctl stop youxue
supervisorctl restart youxue

总结

稍后需要的话继续完善修改