Nginx学习笔记1

概念

web服务器

基于事件驱动的架构,并发处理百万级别TCP连接

高度模块化设计和自由的许可证,扩展第三方模块层出不穷,极佳稳定性

优点

更快

单次请求、高峰请求,都得到更快的响应

高扩展性

低耦合的模块设计,造就庞大的第三方模块;

模块嵌入二进制文件中执行,第三方模块极具优秀性能。

高可靠性

核心框架代码的优秀设计,模块设计的简单性,官方模块非常稳定。

低内存消耗

1万非活跃连接,仅消耗2.5MB内存

尽量使内存消耗更少

单机支持10万以上的并发连接

峰值期支持10万以上并发请求的server

热部署

管理进程和工作进程分离设计,不间断服务,升级nginx的可执行文件、更新配置和更换日志文件

最自由的BSD许可协议

免费使用、直接使用源码和修改源码,并发布

准备

linux系统

2.6以上版本

内核参数优化:

修改/etc/sysctl.conf文件

file-max:进程最大句柄数

tcp_tw_reuse:1:允许将time-wait的socket,重新用于新的TCP连接

tcp_keepalive_time:启用keepalive时,TCP发送keepalive消息的频度。

tcp_fin_timeout:主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间

tcp_max_tw_buckets:TIME_WAIT套接字数量最大值

tcp_max_syn_backlog:三次握手阶段,接收SYN请求队列的最大长度

ip_local_port_range:UDP和TCP连接在本地端口的取值范围

ip.ipv4.tcp_rmem:TCP接收缓存的最小值、默认值、最大值

ip.ipv4.tcp_wmem:TCP发送缓存的最小值、默认值、最大值

netdev_max_backlog:网卡接收数据包速度大于内核处理速度,保存数据包队列的最大值

rmem_default:内核套接字接收缓存区默认的大小

wmem_default:内核套接字发送缓存区默认的大小

rmem_max:内核套接字接收缓存区最大大小

wmem_max:内核套接字发送缓存区最大大小

必备软件

GCC编译器:编译c程序,nginx执行程序

命令:

yum install -y gcc

G++编译器:编译c++程序,用于nginx http模块

命令:

yum install -y gcc-c++

PCRE库:函数库,支持正则表达式

命令:

yum install -y pcre pcre-devel

zlib库:对HTTP包的内容做gzip格式压缩

命令:

yum install -y zlib zlib-devel

OpenSSL库:SSL协议上传输HTTP,使用MD5、SHA1等散列函数

命令:

yum install -y openssl openssl-devel

磁盘目录

源代码存放目录

nginx源码文件、第三方或自己编写模块源码文件

编译中间文件目录

执行configure命令后,产生的原文件及目录;

执行make命令后,生成目标文件和二进制文件;

默认nginx源码目录的obj目录

部署目录

运行需要的二进制文件、配置文件

日志文件目录

nginx底层DEBUG日志文件增长快,需要预先分配大磁盘空间目录

编译与安装

./configure

编译准备:

操作系统内核与已安装软件、

参数解析、

中间目录生成、

生成c源码文件、Makefile文件等

make

编译nginx工程、

生成目标文件

生成最终二进制文件

make install

部署nginx到指定目录

目录生成

复制二进制文件、配置文件

配置(./configure)

命令参数

路径

在编译、运行nginx时,路径相关参数

编译

编译nginx时,编译相关参数

依赖软件

nginx依赖常用软件支持参数

模块

nginx使用的模块相关参数

分类:

事件模块

编译进入nginx的HTTP模块

不编译进入nginx的HTTP模块

邮件代理服务器相关的mail模块

其它模块

其它

执行流程

处理命令参数

脚本初始化,产生文件

分析nginx源码结构

生成目标文件目录

建立必要编译文件

写入命令行的配置参数

判断DEBUG标志

检查操作系统参数是否支持后续编译

输出OS名称、版本

检查设置编译器

定义特定操作系统相关方法,并检查环境是否支持

检查连接期间,第三方静态库、动态库、目标文件是否存在

处理安装后nginx、conf文件、二进制文件、pid、lock文件路径

创建编译时,使用objs/Makefile文件

加入objs/Makefile文件,需要第三方静态库、动态库、目标文件

加入objs/Makefile文件的install功能

加入宏

显示配置执行结果

生成文件

执行./configure,生成objs目录

结构:

src:编译产生的目标文件

Makefile:编译、安装nginx工程的参数设置

autoconf.err:保存执行./configure结果

ngx_auto_header.h\ngx_auto_header.h:保存宏

ngx_modules.c:定义ngx_modules数组,指明模块在nginx处理优先级,最前最优;HTPP除外

命令

启动

默认

/usr/local/nginx/sbin/nginx

指定配置文件

/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf

指定安装目录

/usr/local/nginx/sbin/nginx -p /usr/local/nginx/

指定全局配置项

/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid;"

注意:以 -g启动的nginx,执行其它命令时,需要带-g参数

测试配置

检查测试信息是否有误

/usr/local/nginx/sbin/nginx -t

不输出信息

/usr/local/nginx/sbin/nginx -t -q

显示版本信息

/usr/local/nginx/sbin/nginx -v

显示编译阶段参数

/usr/local/nginx/sbin/nginx -V

停止服务

快速

/usr/local/nginx/sbin/nginx -s stop

优雅

/usr/local/nginx/sbin/nginx -s quit

运行中重读配置并生效

/usr/local/nginx/sbin/nginx -s reload

日志回滚

/usr/local/nginx/sbin/nginx -s reopen

平滑升级

通知旧版本准备升级

kill -s SIGUSR2 <nginx的pid>

启动新版本

优雅关闭旧版本

显示帮助

/usr/local/nginx/sbin/nginx -h

/usr/local/nginx/sbin/nginx -?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值