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 就退出了。
配置参考
- 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><!-- 日志文件 -->
</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
def xxxxx(self):
html='<img src="{static}img.jpg">'.format(static=settings.STATIC_URL)