在前面的文章曾记录过如何在同一局域网中访问Django开发的网站,现在写一下如何将django和nginx+uwsgi放到一起,下面就用我写的一个微信公众号的目录为例吧。
创建的项目名:weixin
app:weixin_app
位置:/root/weixin
uwsgi
在/root/weixin/weixin/中新建一个文件uwsgi.ini
[uwsgi] socket = :8000 #端口号 chdir = /root/weixin #django项绝对路径 module = weixin.wsgi #wsgi.py文件在项目中的位置 master = true #允许主进程存在 processes = 4 #进程数 vacuum = true #当服务器退出的时候自动清理环境,删除unix socket文件和pid文件
保存之后可以在测试一下是否成功,在终端与行
uwsgi --ini /root/weixin/weixin/uwsgi.ini
然后在浏览器打开127.0.0.1:8000,是否可以打开自己的项目,如果可以代表uwsgi配置完毕。
nginx
配置nginx.conf(位置可以通过find / -name nginx.conf查找),vim nginx.conf
server { listen 80 default_server; listen [::]:80 default_server; server_name 127.0.0.1 120.79.129.221; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { # 同uwsgi连接 include uwsgi_params; # uwsgi.ini中开放端口 uwsgi_pass 127.0.0.1:8000; }
}
保存后启动uwsgi(uwsgi --ini /root/weixin/weixin/uwsgi.ini),然后启动nginx(systemctl start nginx)。
然后在浏览器输入自己的ip地址或者域名即可打开网站。
静态文件的处理
如果你的网站可以打开了但是如果你打开admin会发现页面无法加载css,这时我们就需要对django的静态文件进行处理
首先,修改django的setting.py文件
DEBUG = False #关闭开发者功能
STATIC_ROOT = os.path.join(BASE_DIR, '../weixin/static') #‘../weixin/static’是你想保存把网站中用的css和js保存的位置,可以自己定义
修改完setting.py后保存,然后在终端中运行python3 manager.py collectstatic
,将django中需要的css和js等数据收集后存放到static_root定义的文件夹中。
然后,修改urls.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时,会解析
/static/
文件,文件存放的位置是第二个参数。
如此一来当即在部署为生产环境时,只需要吧DEBUG改为False,Django就不会去处理static
了。
最后再次配置nginx.conf
在server中添加
location /static/ {
autoindex on;
alias /root/weixin/static/; # 静态文件存放的位置
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
还有最容易被忽视的一个步骤修改nginx.conf 顶部uesr,修改为:
user root
保存nginx.conf后
重新启动uwsgi和nginx,这时就可以打开经过css修饰的网页了。