osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

Django_uwsgi_nginx_centos_笔记

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-05-19.

我用的版本:

  • Django-2.1
  • uWSGI-2.0.18

通过 pip3 安装 Django, uwsgi

  • 用的python3.6,装好虚拟环境。
  • 创建虚拟环境。
  • 启动虚拟环境。
  • pip3 install Django
  • pip3 install uwsgi

Django 本地运行测试

  • 如果修改了程序,暂时不使用 uwsgi 启动。可以直接用python3运行。
python3 manage.py runserver
python3 manage.py runserver 5000  #指定端口
# 按 CTRL-C 就退出了。

配置参考,ini 和 xml 内容一样,任意选用一款即可

  • uwsgi-config.ini
[uwsgi]
#内部端口,自定义
socket=127.0.0.1:8228
#项目路径
chdir=/mydata/py3/proj
#home=/mydata/py3
pidfile=airport.pid
# module 指向 AIRPORT/wsgi.py
module=AIRPORT.wsgi
#module=AIRPORT.wsgi:application
master=true
#进程数
processes=3
#日志文件
daemonize=uwsgi.log
#指定静态文件映射
static-map=/mydir/static=/mydata/py3/proj/static
  • uwsgi-config.xml
<uwsgi>
   <socket>127.0.0.1:8228</socket><!-- 内部端口,自定义 -->
   <chdir>/mydata/py3/proj/</chdir><!-- 项目路径 -->
   <pidfile>/mydata/py3/proj/airport.pid</pidfile>
   <module>PROJNAME.wsgi</module> <!-- 指向PROJNAME/wsgi.py -->
   <master>1</master>
   <processes>3</processes> <!-- 进程数 -->
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
   <static-map>/mydir/static=/mydata/py3/proj/static</static-map><!-- 静态文件映射 -->
</uwsgi>

  • nginx.conf, location{ },
# 需要 path('/djg/hello',hello.main)
location ^~ /djg/ {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8081;
}

关于 ALLOWED_HOSTS

  • ALLOWED_HOSTS = ['localhost','127.0.0.1','mydomain.com'] 这样,本地运行,部署上站,都OK。

关于静态目录 STATIC_URL=

  • 在 settings.py 中,这个变量可以随便设置,但最好两头都带 '/' 号,否则会有说不清的问题(我没搞明白)。
    • STATIC_URL='/mystatic/'
    • STATIC_URL='/mydir/mystatic/'
    • 以上两种设置,本地运行runserver 都没有问题。
    • 但以 uwsgi 执行时 (DEBUG=True), 有可能不行。就需要在 urls.py 中加入两行。
urlpatterns = [ .... ]  #在这句之后添加两行
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

在 templates目录内 html 模板文件中使用 static 目录

{% load static %}
<img src="{% static "img.jpg" %}">

在 py 程序中使用 STATIC_URL 变量

from django.conf import settings
html='<img src="{static}img.jpg">'.format(static=settings.STATIC_URL)

关于静态文件目录

(Django 2.1 , uWSGI 2.0.18)

  • 本地测试运行(runserver),用 Django 自己提供的静态文件支持。需要设置 DEBUG=True
  • 部署到网站
    • 可以继续用 Django 自己提供的静态文件支持,需要保留设置 DEBUG=True。但debug打开了不安全,且性能比较差。
      Django的返回头多出x-frame-options: ,uwsgi没有。
    • 可以用 uwsgi 提供的静态目录映射支持,性能稍好。设置 Django 的 DEBUG=False 不影响这个映射。也能工作。
      uwsgi 的静态映射,见上面的 uwsgi 配置中 static-map 项。
    • 用 nginx 或 apache 来提供静态文件。这个方法是推荐的,也是性能最好的。

转载注明来源: 本文链接 来自osnosn的博客.

posted on 2020-05-19 14:12  osnosn  阅读(239)  评论(0编辑  收藏  举报