部署 --- 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剧本介绍及 ...
随机推荐
- windows builder里面的可伸缩面板
使用 org.eclipse.wb.core.controls.flyout.FlyoutControlComposite.FlyoutControlComposite类 构造方法中传入的prefer ...
- 2019牛客暑期多校训练营(第五场)F maximum clique 1 二分图求最大独立集
https://ac.nowcoder.com/acm/contest/885/F #include <bits/stdc++.h> //CLOCKS_PER_SEC #define se ...
- Win10远程桌面 报错:CredSSP加密Oracle修正……
解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击. 参考: https://blog.c ...
- django -过滤器的使用
前情提要: 最近工作中用到django 中的 自定制过滤器的内容, 再此 复习一波过滤器和自定制 过滤器的内容 自定制过滤器 1.在settings中的INSTALLED_APPS配置当前app ...
- Laravel 5.8: Automatic Policy Resolution
Laravel 5.8: Automatic Policy Resolution March 26, 2019 One of the new features in Laravel 5.8 allow ...
- 049_指定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录
#!/bin/bash[ ! -d /data ] && mkdir /data #确保有此目录[ -z $1 ] && exit #为空不需要打包if [ -d ...
- C# 窗体 类似framest 左侧点击右侧显示 左侧菜单右侧显示
首先托一个splitContainer调节大小位置 然后进行再新创建一个窗体名为add 在左侧拖入button按钮 进入代码阶段 更改属性 public Main() { InitializeComp ...
- Egyptian Collegiate Programming Contest (ECPC 2015) C题 Connecting Graph
这题上次用的是线性求LCA过的,数据比较水,当时没有被T掉(不过线性的做法是在线的).现在重新的分析一下这个问题.在所有的操作都进行完毕以后,这个图形肯定会变成一棵树,而我们的要求是在这棵树上的一条链 ...
- elasticsearch shield在java中的应用
官方文档:https://www.elastic.co/guide/en/shield/current/_using_elasticsearch_java_clients_with_shield.ht ...
- 解析配置文件 redis.conf
1.units单位 2.INCLUDES包含 3.GENERAL通用 1).daemonize daemonize yes 启用后台守护进程运行模式 2).pidfile pidfile /var/r ...