nginx+uwsgi+django部署

  • 背景

要让django的程序性能更好,需要借助nginx+uwsgi部署提高性能

  • 步骤
安装uwsgi
pip install uwsgi
在manage.py同级目录下创wsgi.py
vim wsgi.py
填入以下内容

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "adserver.settings")

application = get_wsgi_application()

保存退出


在manage.py同级目录下创建uwsgi.ini文件
vim uwsgi.ini
填入以下内容,具体的project_name和module,socket,pidfile,logto这些选项根据自己的实际项目配置

[uwsgi]
project_name    = adserver
root_dir        = %D
# Django-related settings
chdir           = %(root_dir)
module          = %(project_name).wsgi
py-autoreload   = true
master          = true
pidfile         = /var/run/%(project_name)_master.pid
processes       = 1
socket = 127.0.0.1:7070
http            = :%(http_port)
vacuum          = true
max-requests    = 65535
logto           = %(root_dir)/uwsgi.log
#disable-logging = true
daemonize       = /var/log/%(project_name)_uwsgi.log

保存退出

在manage.py同级没了下创建uwsig.param文件
vim uwsig.param
填入以下内容

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;

保存退出

在nginx.conf配置里面的监听端口,和代理的端口,里面的路径根据自己实际项目配置,这里表示当访问nginx的8777端口时,会代理到7070端口,也就是uwsgi服务的端口

server {
        listen       8777;
       location / {
           include /opt/xxx/adserver/uwsgi_params;
           uwsgi_pass 127.0.0.1:7070;
        }
        location /static/ {
                alias /opt/xxx/adserver/static/;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置完了启动nginx
以上步骤完了,大家会发现其实项目里可能没有/opt/xxx/adserver/static/这个目录,这就意味着访问一些html,css,js是访问不到的,但是在使用python manage.py runserver 0.0.0.0:7070这种方式是会拿到页面的html,css,js这些东西,那是因为这种启动方式它默认是去django的安装目录里去获取的。
所以如果你用了nginx+uwsgi这种方式,你就得去将django安装目录里的static这些依赖文件弄出来,django提供有命令可以弄出来

要在项目的setting.py里填写这个配置项,这个表示获取包含依赖文件会放到哪个目录里去,这些是放到和manage.py同级目录static文件夹
STATIC_ROOT = os.path.join(BASE_DIR, "static")

然后使用这个命令就可以将依赖文件找出来并放到static文件夹里
python manage.py collectstatic

大功告成

这时可以启动uwsgi了
使用命令

uwsgi --ini /opt/xxx/adserver/uwsgi.ini

你可能感兴趣的:(nginx+uwsgi+django部署)