Nginx的源码安装以及master和worker的理解

Nginx中文文档参考资料

一、Nginx的源码安装:

1、解压nginx:tar zxf nginx-1.14.0.tar.gz

2、进入nginx解压包:

vim src/core/nginx.h

修改:#define NGINX_VER          "nginx/"(将此行末尾显示nginx版本号的配置删除)

vim auto/cc/gcc

修改:

# debug
#CFLAGS="$CFLAGS -g" (将这2行注释调,关闭debug)

nginx安装包里各个文件参数的理解:

[root@server1 nginx-1.14.0]# cd /root/lnmp/nginx-1.14.0
[root@server1 nginx-1.14.0]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README

1)auto目录:里面有4个子目录,cc是编译使用的,os是判断操作系统类型的,其他都是辅助configure编译的,也就是操作系统有什么特性供nginx使用

2)CHANGES:各版本的改变,bug修复等信息
  CHANGES.ru:nginx作者是俄罗斯人,这是俄罗斯版本

3)conf: 为了方便运维配置,conf目录里有示例文件,安装好后会拷贝到安装目录

4)configure:

5)contrib:提供nginx语法检测字体
   cp -r contrib/vim/* ~/.vim    ##家目录下如果没有.vim目录,手动新建

6)html:默认发布目录,50x.html是报500错误时的页面

7) src:源码目录

8) 编译完成后会生成一个中间目录objs,里面有个ngx_modules.c,表示编译进nginx的模块,可以打开看一下

9)make完成后再看objs目录,又有新文件

 

3、编译安装nginx:

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx

常用模块以及含义:

--prefix=PATH指定nginx的安装目录。默认 /usr/local/nginx
--conf-path=PATH设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf
--user=name设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似
--with-pcre设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 - 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
--with-zlib=PATH指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib
--with-http_ssl_module使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
 --with-http_stub_status_module用来监控 Nginx 的当前状态
--with-http_realip_module通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
--add-module=PATH添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

根据提示解决依赖性  

 ##此处应该还需要安装pcre-devel和openssl-devel

4、make && make install

判断是否安装好了,进装路径下找,看是否存在nginx软件。

5、创建nginx用户

我们可以在配置文件里面看到,用户为nobody,但是在系统里面,已经存在nobody这个用户,这个用户是系统为我们预留的,使用nobody用户登录没有错,但是从规范的角度来说,什么样的服务用什么样的用户登录,所以我们需要创建nginx用户和用户组,使用nginx用户登录。
注意:我们在nginx服务器上面建立一个nginx用户,它不可以登录系统,只能运行nginx服务,这样比较安全
 

vim /usr/local/lnmp/nginx/conf/nginx.conf
进去修改登陆用户(user)和用户组(usergroup)

  2 #user  nobody;
  3 user  nginx nginx

[root@server1 lnmp]# groupadd -g 900 nginx
[root@server1 lnmp]# useradd -u 900 -g 900 nginx
[root@server1 lnmp]# id nginx
uid=900(nginx) gid=900(nginx) groups=900(nginx)


5、将nginx启动脚本链接到/usr/local/sbin/
 

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
[root@server1 ~]# nginx -t    ##检测语法
[root@server1 ~]# nginx        ##开启nginx

 

6、启动nginx并访问:http://172.25.58.1

此时,nginx基础安装配置完成

 

二、master 进程 和 worker 进程

ngnix进程启动启动后会有一个master进程和多个worker进程。

master进程的主要作用:

    1.读取并验证配置信息;
    2.创建,绑定及关闭套接字;
    3.启动,终止worker进程以及维护worker进程的个数;
    4.无须终止服务而重新配置工作。
    5.控制非中断式程序升级,启用新的二进制程序并在需要的时回滚到老版本。
    6.重新打开日志文件。
    7.编译嵌入式perl脚本。

worker主要作用:

    1.接收,传入并处理来自客户端的连接;
    2.提供反向代理及过滤功能;
    3.nginx任何能完成的其他任务

    master 进程 和 worker 进程。其中 master 进程只有一个,worker 进程可以有多个
    worker 进程才是真正 working 的进程,才是真正处理请求的进程。worker 进程全部都是 master 进程的子进程

    相当于进程和线程的关系吧

     worker 进程是以普通用户的身份进行运行的,这样就可以极大增加程序的安全性
    就算是万一有一个进程被劫持,那也不会有管理员权限
    nginx 的热部署和其并发模型有着密不可分的关系。说白了,就是因为 master 进程的关系
    当通知 ngnix 重读配置文件的时候,master 进程会进行语法错误的判断
    如果存在语法错误的话,返回错误,不进行装载;如果配置文件没有语法错误,那么 ngnix 也不会将新的配置调整到所有 worker 中
    而是,先不改变已经建立连接的 worker,等待 worker 将所有请求结束之后
    将原先在旧的配置下启动的 worker 杀死,然后使用新的配置创建新的 worker

worker进程我们可以通过cpu内核来增加减。
在没有特定的设置之前,cpu只有一个内核
我们先在虚拟配置里面将cpu内核的数目改为我们所需要的

我们查看cpu内核的个数,

cat /proc/cpuinfo | grep ‘processor’ | wc -l  我们修改配置文件里面的worker,我们可以用auto,也可以直接写我们所需的cpu内核数,但是,缺陷是,如果我们使用auto的话,是将系统里面的所有cpu内核拿来使用,但是我们做实验的时候可能不需要那么多,会造成资源的浪费。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值