django8.5 项目部署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的值就会被替换为 ****

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

(0)

相关推荐

  • uwsgi+nginx部署Django项目操作示例

    本文实例讲述了uwsgi+nginx部署Django项目操作.分享给大家供大家参考,具体如下: uWSGI概述 uWSGI 是一个全功能的 HTTP 服务器,可以把 HTTP 协议转化成语言支持的网络协议. 安装uwsgi 使用pip安装即可 pip install uwsgi 安装完成后可测试 #vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/ht

  • Nginx+Uwsgi+Django 项目部署到服务器的思路详解

    首先先说一下思路: 1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了.这个时候需要用到data_files.glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. from distutils.core import setup import glob setup( name

  • Centos8下django项目部署 nginx+uwsgi的教程

    1.虚拟环境virtualenv安装 1.安装virtualenv pip3 install virtualenv 2.创建目录,把项目文件传过来 mkdir My  cd My 3.创建独立运行环境-命名 virtualenv --no-site-packages --python=python3  venv1   #创建独立的环境,并且指定解释器是python3 4.进入虚拟环境 source venv1/bin/activate   #此时进入虚拟环境(venv1) 5.在虚拟环境中安装第

  • Django项目uwsgi+Nginx保姆级部署教程实现

    写在最前: 非常抱歉的是,因为突如其来的疫情,我的hadoop系列断更了,很难受,因为我的分布式环境在学校,我的笔记本配置带不起来,代码跑不起来我是不敢写博客的,然后寒假在家写代码也没啥意思,看了非常多的书,把计网和操作系统重新学了一遍.因为实习的需要,未来我更多的技术可能在Python这块,但是java相关的内容我也会努力保持更新,同时也会出更多的入门教程给大家谢谢大家. 背景: 最近在学习django的过程中,用django做了一个小demo,所以试试看能不能部署到服务器上,自己顺便也熟悉一

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

    1.概念:  Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理.负载均衡等一系列重要的特性.由C语言编写,执行效率高. 作用:   负载均衡,多台服务器轮流处理请求.  反向代理(nginx接到请求之后,可以把这个请求转发给后边的若干uWSGI,再给运行着Django的机器) 原理:客户端请求nginx,再由nginx将请求转发给uWSGI,再给Django. 2.安装:sudo apt install nginx,这是系统级的组件,所以要拿apt来装,安装完毕之后,可以

  • JavaWeb项目部署到服务器详细步骤详解

    JavaWeb项目部署到服务器详细步骤 本地准备 在eclipse中将项目打成war文件:鼠标右键要部署到服务器上的项目 导出项目数据库文件 MySql导出数据库文件方法:利用Navicat for MySQL.鼠标右键要导出的数据库,选择转出SQL文件即可 Oracle导出数据库文件:利用PLSQL Developer即可 服务器准备 基本的jdk安装,服务器(比如tomcat)还有数据库的安装都必不可少 将项目的war文件复制到tomcat的wepapps文件夹下即可 创建和代码中数据库连接

  • Docker Compose部署Nginx的方法步骤

    使用Docker Compose部署Nginx,创建docker-compose.yaml: [root@192 ~]# vim docker-compose.yaml 输入以下内容: version: '3' services: nginx: container_name: nginx image: nginx restart: always ports: - 8080:80 privileged: true networks: - mynginx networks: mynginx: dri

  • Docker上部署Nginx的方法步骤

    目录 1.从 docker 下载 Nginx 镜像 2.创建挂载目录 3.为了保证文件的正确性,建议先进入容器把对应的文件给复制出来 4.接下来修改下 default.conf 文件就好了 5.接下来就可以启动容器了 6.不停止 nginx 更新配置文件 1.从 docker 下载 Nginx 镜像 docker pull nginx 2.创建挂载目录 之后的文件就放这里面,对 docker 里 Nginx 对应的目录进行映射,就不用改文件进到容器里了 mkdir -p /data/nginx/

  • 多个Vue项目部署到服务器的步骤记录

    一.业务描述: 最近在做一个电商的项目,里面有平台端和商家端以及用户端,那么这么多Vue项目如何部署到服务器呢? 二.部署 (1)首先在本地测试项目可以启动并且能正常运行. (2)在项目中输入npm run build 此时会生成一个文件 (3)在服务器上安装Nginx,并将admin-web上传到服务器. 我上传的位置: (4)修改Nginx文件,找到nginx.conf  三.如果此时有多个vue项目呢? 多加几个location即可 四.最后记得保存 :wq 五.重新启动Nginx sys

  • 前端将项目部署到服务器(Nginx)的完整步骤

    目录 一.准备环境 二.安装Nginx 1. 安装Nginx依赖 2.下载Nginx 3.解压下载好的Nginx 压缩包 4.编译安装Nginx 5.启动Nginx服务 三.操作步骤 1.使用Xshell连接服务器 2.上传静态资源文件 3. 配置Nginx 4. 重启Nginx服务 总结 我们在会开发项目的同时,也应该了解一下前端是如何部署项目的: 一.准备环境 1.服务器或者虚拟机(后端已经搭建好的,这里就不讲述如何搭建服务器了)2.Xshell 和 Xftp --> 存放静态文件和操作服务

  • Vue项目打包并部署nginx服务器的详细步骤

    目录 使用场景: 一.打包 二.部署(nginx) 总结 使用场景: 我们常使用前后端分离项目时,会需要将前端vue打包然后部署. 一.打包 vue项目其实可以直接通过一下语句进行打包: npm run build 默认打包情况如下: 当我们需要将打包名称以及静态资源位置进行修改时便需要进行相应的配置: 1.首先在项目根目录下创建vue.config.js文件 配置内容如下所示(附带跨域问题解决): module.exports = { //打包 publicPath: './', output

  • Golang项目搭配nginx部署反向代理负载均衡讲解

    目录 部署Go语言项目 独立部署 编译 nohup supervisor 搭配nginx部署 正向代理与反向代理 使用yum安装nginx Nginx配置文件 Nginx常用命令 Nginx反向代理部署,无负载均衡 Nginx反向代理部署,有负载均衡 Nginx分离动静态文件请求 前后端分开部署 允许所有请求跨域 部署Go语言项目 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法. 独立部署 Go 语言支持跨平台交叉编译,也就是说我们可以在 W

  • Vue.js项目部署到服务器的详细步骤

    前言 最近做完了一个项目,Vue.js 2.0 + vuex + axios,还是有点大的.想着做了这么久,放服务器给朋友们体验一下,帮忙找找BUG,于是就有了研究服务器这一篇文章了. 准备工作 服务器 既然是部署到服务器,肯定是需要一个云的.我这里找基友拿的一个,做测试的话,可以买阿里云的学生机,9.9 一个月,不过不是学生的话就比较麻烦,因为涉及敏感操作都需要验证码. 编译打包 将项目打包成 dist 文件,这里我需要跨域请求一些数据,还写了一个小型服务器, app.js 放到 dist 文

随机推荐