部署 --- Nginx
Nginx介绍
简介:
- Nginx是由伊戈尔.塞索耶夫开发的,在04年10月开源的一款高性能HTTP和反向代理服务器。
- 因为它的稳定性好,功能丰富,有示例配置文件和较低的系统资源消耗而闻名
- 同时也是一款轻量级的Web服务器、反向代理服务器、和电子邮件代理服务器
官网:
特点:
Nginx是一款高性能的Web和反向代理服务器。具有占用内存少,并发能力强的优势
在同类型的网页服务器中表现十分优秀。具有反向代理、负载均衡、管理静态文件等功能。默认单台连接数5万
- Nginx相比Apache使用资源更少,支持更多的并发连接体现出更高的效率,能够支持高达5万个并发连接数的响应
- Nginx既可以在内部直接支持Redis和PHP,也可支持作为HTTP代理服务器对外进行服务,Nginx使用C编写不论是系统资源开销还是CPU使用效率都处理的非常优秀
- Nginx安装简单、配置文件简洁、Bug少、Nginx启动容易,且几乎可以做到7 * 24小时不间断运行,即使运行数个月也不需要重新启动,还可以在不间断服务的情况下进行软件版本的升级
Nginx原理
工作原理:[正向代理:隐藏了用户的细节;反向代理:隐藏了服务器的细节]
Nginx做HTTP服务器如蓝线所示,直接对接的是资源;
Nginx做反向代理服务器如绿线所示,对接的是另外的服务器,Nginx只是做请求的转发处理
工作流程:
开发模式
浏览器(chrome) <=> 开发服务器(Flask WSGI Server/runserver) <=> Python程序(Flask) <=> 数据库(MySQL)
生产模式
浏览器(chrome) <=> 反向代理服务器(Nginx) <=> WSGI服务器(uWSGI) <=> Python程序(Flask) <=> 数据库(MySQL)
- 工作流程:
用户的请求访问到Nginx上面,Nginx会对后面的业务做负载均衡,反向代理。其后面可能会有多个python代码服务与其对接
Python程序是不能直接在Nginx执行的,所有需要我们的Python程序在WSGI SERVER容器中去完成执行的,
执行完后返回响应交个Nginx,执行完的python程序交个Nginx后,再由Nginx去返回给我们的客户端去响应
/ WSGI SERVER 1 <======> Python(Flask app) <====> 数据库(MySQL) client <----> Nginx - WSGI SERVER 2 <======> Python(Flask app) <====> 数据库(MySQL) \ WSGI SERVER 3 <======> Python(Flask app) <====> 数据库(MySQL)
环境迁移:
pip freeze > requirements.txt 将当前项目所使用的依赖包列表(包名及版本号)保存到requirements.txt中
pip install -r requirements.txt 安装 requirements.txt 中所列举的依赖包
Nginx使用
安装:
- 包管理工具安装
- 去官网将所使用依赖添加到包管理工具中
- 更新包管理工具资源
- 使用包管理工具安装
- 安装步骤:http://www.nginx.cn/doc/index.html参考
- 下载公钥:
- cd doc : 进入到doc目录下
- mkdir pgp_key : 创建一个pgp_key文件
- wget http://nginx.org/keys/nginx_signing.key : 下载公钥
- 添加元信息
- sudo vim /etc/apt/sources.list :打开/etc/apt/sources.list文件并编辑,
- 将如下两行内容添加到打开的文件中末行(xenial是对应系统版本名字)
- deb http://nginx.org/packages/ubuntu/ xenial nginx
- deb-src http://nginx.org/packages/ubuntu/ xenial nginx
- sudo apt update :更新源信息
- sudo vim /etc/apt/sources.list :打开/etc/apt/sources.list文件并编辑,
- 添加Nginx源为信任
- sudo apt-key add nginx_signing_key
- 安装nginx
- sudo apt install nginx
- 下载公钥:
控制:
- 启动nginx:
- sudo nginx
- nginx启动后会有两个进程:master process(主进程)和worker process(从进程)
- 杀死从进程后,主进程会自动分配一个新的从进程。
- 杀死主进程后,如果从进程没有工作任务,会和主进程一起杀死
- 查看nginx信息:
- ps -ef | grep nginx (查看nginx进程状态)
- nginx -v (显示nginx的版本信息)
- nginx -V (显示nginx构建过程中的所有参数配置)
- 控制nginx:
- nginx -s signal
- sudo nginx -s stop: 快速关闭
- sudo nginx -s quit: 优雅关闭[推荐使用]
- sudo nginx -s reload:重新加载配置
- 通过系统命令控制nginx
- systemctl status nginx: 查看nginx状态
- systemctl start nginx: 启动nginx服务
- systemctl stop nginx: 关闭nginx服务
- systemctl enable nginx:设置开机自启
- systemctl disable nginx:禁止开机自启
- 不建议使用,nginx会加载配置文件,这种方式不能控制配置文件,容易出现未知错误
配置文件
Nginx配置文件包含指定指令控制的模块。指令分为简单指令和块指令。
一个简单指令由名称和参数组成,以空格分隔,并以分号结尾
一个块指令和简单指令具有相同的结构,但不是以分号结束,而是以一个大括号包围的一堆附 加指令结束。
如果一个大括号内可以有其他的指令,它就被称为一个上下文,比如(events,http,server,location)
- 指令
- nginx -t:不运行,仅测试配置文件
- nginx -c configpath 从指定路径加载配置文件
- nginx -t -c configpath 测试指定配置文件
项目部署
Nginx
Django框架中自带的开发者服务器runserver虽然功能健壮,但性能是比较低仅适用于开发环境。
在真实部署中不会像django中runserver那样使用单一服务器。而是使用Nginx做HTTP服务器处理静态资源,
或者做反向代理和uWSGI(HTTP服务器)、gunicorn(HTTP服务器)对接。也可以做邮件服务器或流媒体服务器
uWSGI
gunicorn
部署 --- Nginx的更多相关文章
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- debian7下部署nginx服务器
笔者是在vmware中的Debian7下部署nginx服务器,采用离线部署方式.过程如下: 1.准备好需要的离线安装包 nginx-1.6.2.tar.gz,pcre-8.34.tar.gz,open ...
- 在Docker下部署Nginx
在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...
- 自动部署Nginx和nfs并架设Nginx集群脚本
本人经过多次尝试,简单完成了自动部署Nginx和nfs脚本,并且能够自动部署web反向代理集群,下面详细的阐述一下本人的思路.(以下脚本本人处于初学阶段,写的并不是很完善,所以需要后期进行整理和修正, ...
- Linux中以单容器部署Nginx+ASP.NET Core
引言 正如前文提到的,强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器,本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程. Ng ...
- Windows Server 2008 R2 Enterprise x64 部署 nginx、tomcat、mysql
部署nginx nginx主要做反向代理用,可以单独部署到其它机器上,这里nginx和tomcat部署在同一台机器上. 下载nginx-1.14.1.zip,并解压到目标目录,打开cmd进入到解压后的 ...
- windows10下面部署nginx(解决文件名中文乱码问题)
由于开发需要,我们总是需要先在windows环境下面部署项目进行测试,通过之后才会移植到linux系统进行测试部署. 本篇文章会介绍一下windows终端下面部署nginx WEB服务的一些步骤流程, ...
- 【原创】大数据基础之Mesos+Marathon+Docker部署nginx
一 安装 安装docker:https://www.cnblogs.com/barneywill/p/10343091.html安装mesos:https://www.cnblogs.com/barn ...
- centos7 下 安装部署nginx
centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...
- Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken
前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...
随机推荐
- proc文件系统详解
/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux内核空间和用户间之间进行通信.在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段, ...
- mac安装MySQLdb(mysql-python模块)
折腾了有一会,网上资料很多,但是在实际安装时就会发现有很多坑,如下实战操作可行.供参考. Command "python setup.py egg_info" failed wit ...
- idea 查看类继承关系的快捷键
类似eclipse ctrl+t的快捷键,idea中是ctrl+H
- 使用selenium实现站长素材图片采集
from selenium import webdriver import requests,os from lxml import etree from selenium.webdriver.chr ...
- django获取数据
获取单个值 request.POST.get('user') # user对应前端name属性对应的值 获取多个值(如checkbox,multiple) request.POST.getlist(' ...
- 【leetcode】1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold
题目如下: Given a m x n matrix mat and an integer threshold. Return the maximum side-length of a square ...
- 生日礼物 HYSBZ - 1293 【单调队列】【求最短区间的长度,区间需要满足包含所有颜色种类】
生日礼物 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在 ...
- scroll([[data],fn])
scroll([[data],fn]) 概述 当用户滚动指定的元素时,会发生 scroll 事件. scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口).大理石平台支架 参数 ...
- php win/linux/mac 安装redis扩展或者扩展报错 zend_smart_str.h file not found
1 windows 安装reids 扩展 根据phpinfo 查看php信息.在pecl.php.net 下载对应的redis扩展版本,放如扩展目录,在php.ini 配置扩展信息,重启服务 2 li ...
- postgresql 一些操作
postgresql 对sql语句敏感的. 所以尽量标准化输入 #############查看版本信息 ############ 1.查看客户端版本 psql --version 1 2.查看服务器端 ...