文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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的值就会被替换为 ****

到此这篇关于django8.5 项目部署——Nginx的文章就介绍到这了,更多相关django项目部署Nginx内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯