公司使用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
kill -s SIGINT

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命令的参数

诺,找到配置文件的位置了,其他的配置也可以同过相同的方法找到

了解并安装Nginx的更多相关文章

  1. centos直接yum安装nginx

    Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便. 但是今天装了CentOS6.2,直接yum install nginx不行,要先处理下源,下面是安装完整流 ...

  2. 安装Nginx服务

    Nginx最大特点: 静态小文件(1M),支持高并发,同时占用系统资源很少.3W并发,10个进程,内存150M. Nginx特点: 1.配置简单,灵活,轻量. 2.高并发(静态小文件),静态几万的并发 ...

  3. Linux下安装nginx

    一直会使用nginx,也学习了好多nginx知识.也在本地安装过nginx,这次是第一次在正式的环境安装nginx,把这些记录下来总结经验. 一.安装环境 操作系统:CentOS release 6. ...

  4. centos系统编译安装nginx+php环境另加独立mysql教程

    以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...

  5. Mac OS使用brew安装Nginx、MySQL、PHP-FPM的LAMP开发环境

    准备工作 新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号: httpd -v Server version ...

  6. 手把手教你玩转nginx负载均衡(四)--源码安装nginx

    引言: 在上一篇,我们已经装好了虚拟机,并且已经配置好了网络,那么今天我们就要开始安装nginx服务器了. 安装工具以及过程 安装gcc编译套件以及nginx依赖模块 yum -y install g ...

  7. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  8. 安装nginx

    [yum安装nginx] yum clean all(这步不执行会出现no more mirrors to try错误) cd /etc/yum.repos.d/ vi nginx.repo 填写 [ ...

  9. unbuntu14.04 安装nginx配置

    记录一下linux下安装nginx的所需要的配置. 首先从 nginx官网 下载所需要的版本,复制链接,执行 wget http://nginx.org/download/nginx-1.8.0.ta ...

  10. linux 安装 nginx 及反向代理配置

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,以下为Linux centos平台下安装nginx并配置反向代理的过程(采用源码安装的方式) 一:安装 ...

随机推荐

  1. springboot2.0+线程池+Jmeter以模拟高并发

    声明:原创在这里https://blog.csdn.net/u011677147/article/details/80271174,在此也谢谢哥们. 1.目录结构 2.BusinessThread.j ...

  2. C#连接内存数据库redis【1、Redis存读取数据】

    这一节演示下载.NET中怎样使用Redis存储数据.在.net中比较常用的客户端类库是ServiceStack,看下通过servicestack怎样存储数据. DLL下载:https://github ...

  3. python 类中__call__内置函数的使用

    class F: def __call__(self, *args, **kwargs): print('执行__call__') s = F()s() 先给类创建一个对象,直接通过对象来执行,就会自 ...

  4. Day3 && Day4

    本章内容对我来说真的是学的稀里糊涂的,除了前两题吭哧吭哧独立完成,第三题参考了别人的思路外,其余题目均是现学现卖,有点迷啊.所以写这篇博客的目的是先记录下聚聚们对本章内容相关重点的要求,并搜集一些相关 ...

  5. 走进异步编程的世界 - 在 GUI 中执行异步操作

    转载:https://www.cnblogs.com/liqingwen/p/5877042.html 走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://w ...

  6. 【HANA系列】SAP HANA SLT 在表中隐藏字段并传入HANA的方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SLT在表中隐 ...

  7. python高级 之(五) --- 文件操作

    文件操作 """ 在程序中操作的文件内容: 1. 读取文件中的内容 2. 向文件中写入内容 首先: 在程序中与文件建立一个通道,通过通道操作文件指针,达到所要的结果 向文 ...

  8. Python assert 关键字

    Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常. 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况. 语法格式: ...

  9. CDH目录

    配置文件都在:/etc/服务名, 看hadoop的classpath |grep conf /etc/hadoop/conf log都在: /var/log/服务名 看scm的log: tail -1 ...

  10. Kafka的知识总结

    前言 转自(https://www.cnblogs.com/zhuifeng523/p/12081204.html) Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partit ...