公司使用nginx作为请求分发服务器,发现本人在查看nginx配置上存在些许困难,故仔细阅读了陶辉的《深入理解nginx模块开发与框架》第一部分,并作此记录。
了解
我根据书上的思路来了解nginx的作用及配置,首先回答提出的问题:
什么是Nginx?它有哪些特点?我们选择Nginx的理由是什么?如何编译安装Nginx?这种安装方式背后隐藏的又是什么样的思想呢?
1. 什么是Ngnix?
Nignx是一个跨平台的,支持高效处理大规模并发连接,高性能Web服务器。
2. 它有哪些特点?
1)快:单机响应更快,高并发响应快
2)高扩展性:它由耦合度极低的模块组成,对某一模块进行修复和升级时只需要关注模块自身
3)高可靠性:其核心框架代码的优秀设计、模块设计的简单性;每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。
4)低内存消耗
5)单机10w以上并发
6)热部署:master管理进程与worker工作进程的分离设计,保证在不间断服务的情况下,升级Nginx的可执行文件,更新配置项、更换日志文件等功能。
7)最自由的BSD许可协议:它还允许用户在自己的项目中直接使用或修改Nginx源码
3. 我们选择Nginx的理由是什么?
Nginx先天的事件驱动型设计、全异步的网络I/O处理机制、极少的进程间切换以及许多优化设计,都使得Nginx天生善于处理高并发压力下的互联网请求,同时Nginx降低了资源消耗,可以把服务器硬件资源“压榨”到极致。
编译安装
1. 首先我们需要一个内核为Linux 2.6及以上版本的操作系统,查看linux内核版本
[root@localhost ~]# uname -a
2. 安装GCC、PCRE、zlib、OpenSSL库
3. 磁盘目录
1)Nginx源码存放目录
2)Nginx编译阶段产生的中间文件存放目录(默认情况下,configure命令会将该目录命名为objs,并放在Nginx源代码目录下)
3) 部署目录
该目录存放实际Nginx服务运行期间所需要的二进制文件、配置文件等。默认情况下,该目录为/usr/local/nginx。
4) 日志文件存放目录
4. Linux内核参数的优化(不做了解)
5. 编译安装nginx
安装Nginx最简单的方式是,进入nginx-1.0.14目录后执行以下3行命令:
./configure
make
make install
1)configure命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。
a. 当configure执行成功时会生成objs目录,并在该目录下产生以下目录和文件:
2)make命令根据configure命令生成的Makefile文件编译Nginx工程,并生成目标文件、最终的二进制文件。
3)make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。
Nginx命令行
1. 默认方式启动(这时会读取默认路径下的配置文件:usr/local/nginx/conf/nginx.conf,实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf -path=PATH指定的nginx.conf文件)
2. 在不启动Nginx的情况下,测试配置信息是否有错误
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
3. 显示版本信息
[root@localhost ~]# /usr/local/nginx/sbin/nginx -v
4. 显示编译阶段的参数
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
5. 快速地停止服务
使用-s stop可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop
实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT信号,效果是一样的。例如:
kill -s SIGTERM 10800 kill -s SIGINT 10800
6. “优雅”地停止服务
当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s quit
7. 使运行中的Nginx重读配置项并生效
使Nginx服务重新加载nginx.conf文件。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s reload
事实上,Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。
8. 查看帮助命令
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -h
学到这有个灵感,当进入服务器怎么找到相应的配置文件呢:
1. 查看nginx进程
我们知道,nginx默认启动的是configure命令中 -conf -path=PATH中PATH路径的配置文件
2. 查看configure命令的参数
诺,找到配置文件的位置了,其他的配置也可以同过相同的方法找到