欢迎来到代码驿站!

Nginx

当前位置:首页 > 服务器 > Nginx

django8.5 项目部署Nginx的操作步骤

时间:2022-07-15 08:34:23|栏目:Nginx|点击:

1、概念:
??Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理、负载均衡等一系列重要的特性。由C语言编写,执行效率高。

  1. 作用:

??负载均衡,多台服务器轮流处理请求。
??反向代理(nginx接到请求之后,可以把这个请求转发给后边的若干uWSGI,再给运行着Django的机器)

  1. 原理:客户端请求nginx,再由nginx将请求转发给uWSGI,再给Django。

2.安装:sudo apt install nginx,这是系统级的组件,所以要拿apt来装,安装完毕之后,可以输入nginx -v查看。

3.配置:

1.修改nginx的配置文件: /etc/nginx/sites-enables/default , sudo vim该文件.

#在server节点下添加新的location项,指向uwsgi的ip和端口。
server {
		...
		location / {
		#禁掉try_files
		uwsgi_pass 127.0.0.1:8000; #重定向到127.0.0.1的8000端口(所有/ 开头的请求,都用uwsgi的协议转发给127.0.0.1:8000)
		include /etc/nginx/uwsgi_params; #将所有的参数转到uwsgi下
		}
}

2.改完之后就重启nginx:

sudo /etc/init.d/nginx restart.

用到的命令有:sudo /etc/init.d/nginx start|stop|restart|status或者sudo service nginx start|stop|restart|status

注意:nginx配置只要修改,就需要重启,否则配置不生效。sudo nginx -t 可以检查修改之后语法有没有问题。

3.修改uWSGI配置:

??说明nginx负责接收请求,并把请求转发给后面的uWSGI,此模式下,uWSGI需要以socket模式启动,修改项目同名目录下的uwsgi.ini文件。

[uwsgi]
socket=127.0.0.1:8000 #把http=127.0.0.1:8000注释掉

??改完之后,再重启uWSGI(cd到能看见uwsgi.ini的那个文件夹,再输入命令。uWSgi开着的话就先停掉,sudo uwsgi --stop uwsgi.pid,停下之后一定要ps aux|grep 'uwsgi'检查一下,是不是停止成功。再启动sudo uwsgi --ini uwsgi.ini,启动之后也ps aux|grep 'uwsgi'检查是否启动启动成功)

??nginx监听的是80,uWSGI监听的是8000,那么测试效果时,浏览器中输入的地址端口号应该是80,因为默认的就是80,所以可以直接访问127.0.0.1开头的地址,例如127.0.0.1/test_upload或者127.0.0.1:80/test_upload.

4.常见问题:(如果涉及到权限较高的很多操作,可以先sudo su进入超级用户,后边就能正常使用命令了)

1.排查错误时可以看日志:

1.nginx日志位置:
异常信息 /var/log/nginx/error.log ;
正常信息 /var/log/nginx/access.log

2.uwsgi日志文件:在项目同名目录下,uwsgi.log

2.访问127.0.0.1:80 地址,出现502响应:
??502响应表示nginx反向代理配置成功,但是对应的uWSGI未启动,解决方法就是cd到uwsgi.ini在的那个文件夹,uwsgi --ini uwsgi.ini 启动

3.访问127.0.0.1:80/url 出现404响应:有两种情况:

1.如果是一个很“django”的黄色报错页,估计就是写的路由错了,当前的这个路由没在django中配置。

2.也可能是nginx配置错误,没有禁掉try_files。

5.nginx静态文件配置:

  1. 创建新路径:主要存在Django的所有静态文件,如:/home/tarena/项目名_static/
  2. 在Django的settings.py中添加新配置:STATIC_ROOT='/home/tarena/项目名_static/static ; STATIC_ROOT是正式上线之后,静态文件的存储目录 ; 防止路径拼错,可以使用pwd命令看一下,直接复制。
  3. 进入项目目录后,执行python manage.py collectstatic(只要有静态文件的添加,就要执行这条命令), 执行该命令后,Django将项目中所有静态文件复制到STATIC_ROOT中,包括Django内建的静态文件。
  4. 静态文件收集好之后,得告诉nginx什么样的请求是静态资源请求,以及这个请求来了之后,nginx该去怎么处理:

??在nginx配置中添加新的配置:修改 /etc/nginx/sites-enabled/default,(sudo vim,否则权限不够。)新添加location /static 路由配置,重定向到指定的 第一步创建的路径即可。

server {
		...
		location /static {
		#root 第一步创建的文件夹的绝对路径,如:
		root /home/tarena/项目名_static;
		}
}

添加location没有顺序要求.

添加完之后记得保存退出,Esc->:wq->回车 ,然后重启nginx,使用命令sudo /etc/init.d/nginx restart

6.404/500页面:
??在模板文件中添加404.html模板,当视图触发Http404异常时将会被显示。404.html仅在发布版中(即settings.py中的DEBUG=False时)才起作用。
??当响应处理函数触发Http404异常时就会跳转到404界面。

7.邮箱告警:

1.当正式服务器上代码运行有报错时,可以将错误追溯信息发送至指定的邮箱:
在settings.py中 —— 在基础邮箱授权后,添加如下配置:

# 关闭调试模式
DEBUG = False
# 错误报告接收方
ADMINS = [('xxx', 'xxxxxxx@example.com'), ('yyy', 'yyyyyyy@example.com')]
# 发送错误报告方,默认为root@localhost账户,多数邮件服务器会拒绝,所以改成email配置中的邮箱,也就是授权的那个邮箱
SERVER_EMAIL = 'email配置中的邮箱'

2.django可以把报错邮件中的敏感信息用*过滤掉:

1.过滤局部变量:使用sensitive_variables()装饰器(多个装饰器时得放在最上边)

from django.views.decorators.debug import sensitive_variables
@sensitive_variables('user', 'pw', 'cc')  # 参数就是想过滤掉的数据的变量名
def process_info(user):
    pw = user.pass_word
    cc = user.credit_card_number
    name = user.name
    ...

2.过滤POST数据:

from django.views.decorators.debug import sensitive_post_parameters
@sensitive_post_parameters('password', 'username')
def index(request):
    s = request.POST['username'] + request.POST['abcd']
    # 'abcd' 并不存在,此时会引发error,POST中的username和password的值就会被替换为 ****

上一篇:Linux下nginx编译安装教程和编译参数详解

栏    目:Nginx

下一篇:没有了

本文标题:django8.5 项目部署Nginx的操作步骤

本文地址:http://www.codeinn.net/misctech/207822.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有