• Django+uWSGI+Nginx 部署网站


    Django 1.11设置

    保证Django在本地调试没有问题;

    当然这是前提^_^

    收集静态文件至指定文件夹

    Django静态文件设置具体参考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/

    1. myproject/settings.py中设置静态文件STATIC_URL和STATIC_ROOT设置;
      如:

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static') #此文件夹需为空

    1. myproject/urls.py中添加static文件URL配置;

    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    1. 运行python3 manage.py collectstatic将静态文件收集到指定文件夹;

    python3 manage.py collectstatic #处于Django虚拟环境下

    1. 本地调试测试,网站是否正常;

      注:STATIC_ROOT不可与STATICFILES_DIRS目录一致。

    uWSGI设置

    参考文档:

    1. https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/
    2. https://www.cnblogs.com/chenice/p/6921727.html

    安装uwsgi

    1. 如果使用虚拟环境,请在Django虚拟环境下运行;

    pip3 install uwsgi

    1. 编写测试文件test.py进行测试,验证uwsgi是否正常安装;
    # test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"] # python3
    	
        #return ["Hello World"] # python2
    

    运行:

    uwsgi --http :8000 --wsgi-file test.py

    访问验证是否正常。
    
    1. 利用uwsgi启动myproject进行验证是否正常工作;

    uwsgi --chdir=/path/to/myproject(此为manage.py文件所在父目录) --module=myproject.wsgi:application --http=127.0.0.1:8000 --processes=2 --vacuum

    uwsgi后面具体参数,请自行百度。
    
    1. 如果无异常,编写uwsgi配置文件代替命令行形式;
    [uwsgi]
    # http = :8000 #直接提供http访问,配置为http模式,端口自定(下同)
    socket = :8001 #和nginx进行通信,配置为socket模式
    chdir = /path/to/myproject
    module = myproject.wsgi:application
    env = DJANGO_SETTINGS_MODULE=website.settings
    master = true
    processes = 4
    vacuum = true
    max-requests = 5000
    home = /path/to/django/python/virtual_env #(如/path/venv)
    daemonize = /var/log/uwsgi/website.log #后台运行
    

    使用配置文件启动:

    uwsgi --ini /path/to/uwsgi.ini

    停止uwsgi,请使用kill 进程,优化请自己写脚本进行控制。
    

    Nginx配置

    安装nginx,可选择nginx官方源

    linux版安装源配置

    修改nginx配置文件,本配置以Debian9系统下Nginx=1.12版为例

    1. nginx默认配置位置/etc/nginx
    2. 进行/etc/nginx/conf.d/添加自己的网站文件或者修改default.conf,nginx默认会对所有下面的配置文件进行读取和设置,配置文件以.conf结尾。
      注:default.conf文件默认端口为80,如使用80端口,请修改或删除default.conf或者在此基础进行设置配置文件;
    3. 配置文件示例:
    server {
        listen 80;
        server_name debian;
        charset utf-8;
    
        client_max_body_size 10M;
        location /media {
    	alias /path/to/myproject/media;
        }
    
        location /static {
    	alias /path/to/myproject/static;
        }
    
        location / {
    	# 此处记得和uwsgi里的socket配置保持一致,另记得uwsgi里启用socket而不是http
    	uwsgi_pass 127.0.0.1:8001;
    	include uwsgi_params;
        }
    }
    
    1. 测试nginx配置文件是否正确;

    nginx -t

    1. 启动nginx服务,访问进行验证是否正常工作;

    至此,Django + uWSGI + Nginx部署完成。

  • 相关阅读:
    typeof检测几种较为特殊的值与Boolean强制转换哪几种值为false Amy
    类型检测 Amy
    JS基本概念 Amy
    JS导入文件与CSS导入文件的不同 Amy
    JS运行环境 Amy
    主流浏览器及其渲染引擎 Amy
    JS引用类型 Amy
    同名函数的覆盖问题 Amy
    JS变量、作用域和内存问题 Amy
    HTTP协议学习(1)
  • 原文地址:https://www.cnblogs.com/li1234yun/p/8086929.html
Copyright © 2020-2023  润新知