部署 --- 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剧本介绍及 ...
随机推荐
- Lua 学习之基础篇十<Lua 常见的语法规则>
下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助,最后附上的部分是lua的基本操作,基本包含所有常用语法语句. 1. if判断 lua把 nil 和false 视为"假&qu ...
- HDU 3824/ BZOJ 3963 [WF2011]MachineWorks (斜率优化DP+CDQ分治维护凸包)
题面 BZOJ传送门(中文题面但是权限题) HDU传送门(英文题面) 分析 定义f[i]f[i]f[i]表示在iii时间(离散化之后)卖出手上的机器的最大收益.转移方程式比较好写f[i]=max{f[ ...
- 在 Linux 下使用 scp 命令
将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去. here:在 Linux 下使用 scp 命令 摘要: scp 是安全拷贝协议(Secure Copy Protocol)的缩写, scp 是 ...
- 边学边体验django--模型
步骤: 1.选定数据库,然后修改 settings.py 中的 DATABASES配置 实验过了sqlite3. 应该是这个样子的: 2. 创建app, 建立数据表模型. python manage. ...
- Codeforces Round #350 (Div. 2) A B C D1 D2 水题【D2 【二分+枚举】好题】
A. Holidays 题意:一个星球 五天工作,两天休息.给你一个1e6的数字n,问你最少和最多休息几天.思路:我居然写成模拟题QAQ. #include<bits/stdc++.h> ...
- Luogu P2151 [SDOI2009]HH去散步 矩乘加速DP
思路:矩乘优化DP 提交:3次(用了一个奇怪的东西导致常数过大) 题解: 如果可以走完正向边后又走反向边那就显然了,但是不能走,所以我们要将正反向边分别编号,区分正反向边. 所以这道题的矩阵是以边的编 ...
- 关闭tomcat8080端口
netstat -ano | findstr 8080taskkill /F /PID 1234
- 解决InputStream中数据读取不完整问题
转载:https://blog.csdn.net/lilidejing/article/details/37913627 当需要用到InputStream获取数据时,这时就需要读取InputStrea ...
- chrome扩展开发实战入门之一-hellocrx
后记:在写这篇文章时,我还没搞懂chrome扩展的基本原理.后来才明白,最简单(且实用)的扩展只需要manifest.json和content_scripts.js两个文件,无需background. ...
- 23333 又是一篇水文章(以下是各种复制来的关于maven转成eclipse项目)
(转载) 当我们通过模版(比如最简单的maven-archetype-quikstart插件)生成了一个maven的项目结构时,如何将它转换成eclipse支持的java project呢? 1. 定 ...