- 背景
要让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
网友评论