安装python
在python下载源码包:
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz # 解压 tar -zxf Python-3.6.5.tgz cd Python-3.6.5 #编译 ./configure --prefix=/appliocation/python3 --enable-optimizations make && make install # 配置环境变量 vim ~/.bash_prefile # 在这一行增加python的bin路径,如下 export PATH=$HOME/bin:/usr/local/python3/bin:/usr/local/bin:$PATH source ~/.bash_profile
安装django
pip3 isntall django==1.11.8 # 创建django项目 django-admin startproject hello_django cd hello_django #创建应用 python3 manager.py startapp app01 #创建uwsgi配置文件 vim hello_django.ini #输入这些内容 # myweb_uwsgi.ini file [uwsgi] # Django-related settings socket = :8080 #真实服务的端口 # Django项目根目录 (绝对路径) chdir = /root/hello_django # wsgi.py文件在项目中的位置 module = hello_django.wsgi # process-related settings # master master = true # 运行的进程数 processes = 4 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true ###安装uwsgi pip install uwsgi
启动uwsgi
uwsgi hello_django/hello_django.ini 在seething.py修改才可以访问,默认只是localhost,如下 ALLOWED_HOSTS = ['192.168.0.75', '127.0.0.1', 'localhost']
配置Nginx
找到nginx.conf,写入如下内容
server { #这里是访问时用到的端口 listen 80; server_name localhost; charset UTF-8; client_max_body_size 75M; location / { include uwsgi_params; #同uwsgi内容 uwsgi_pass 127.0.0.1:8080; #链接超时时间 uwsgi_read_timeout 30; } }
如此一来,重启你的nginx,访问80端口,就能看到效果了。
还有问题?
你可能发现了,你网页上的静态资源无法访问!!比如说admin页面,会特别简陋,这是因为nginx+uwsgi+Django时,Django对静态资源的处理nginx不能代理(可能吧)。总之这种事不该让Django做,因为nginx在处理静态资源上能力更强,对于静态资源,就让nginx处理吧。
通常来说,你会有两种静态资源/media/
开头的链接和/static/
开头的。static用来处理一些网站原始图片,视频,js,css文件,Django是自己就支持这种链接的。那么如何关闭让Django处理/static/
开头的文件呢,很简单,在setting.py
中将DEBUG
值改为False
,这时,Django就不去处理/static/
文件了。
那么/media/
呢?一般来说,用户上传的图片,我们会保存起来,在网页上显示时候就用/media/
,在setting.py
中设置
MEDIA_URL = '/media/' #访问的前缀链接 MEDIA_ROOT = os.path.join(BASE_DIR, '../media') #存放文件的具体位置
再在url.py
中添加
from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这里的意思是在DEBUG=True时,会解析/media/
文件,文件存放的位置是第二个参数。
如此一来当即在部署为生产环境时,只需要吧DEBUG改为False,Django就不会去处理static
和media
了。
收集静态文件
Django有一个工具可以将应用里用到的所有静态文件收集起来,方便nginx解析。具体:
在setting.py
中设置STATIC_ROOT = os.path.join(BASE_DIR, '../collectedstatic')
这样收集的静态文件就都放进上面的目录里了。如何运行这个工具?python3 manager.py collectstatic
配置nginx解析静态文件
同样,nginx.conf
首先,在文件顶部加入 user root
声明让root用户跑nginx,否则访问静态文件可能提示没有权限
其次,在上面说的配置文件location /
前加入以下带内容
location /static/ { autoindex on; alias /root/SchoolBuyWeb/collectedstatic/; } location /media/ { autoindex on; alias /root/SchoolBuyWeb/media/; }
注意alias
后对应好自己设定的目录即可!
重启nginx,现在已经ok了~~