当前位置:   article > 正文

Linux服务:Nginx服务部署及基础配置_nginx -g daemon off

nginx -g daemon off

目录

一、Nginx介绍

1、Nginx简介

2、I/O模型相关概念

3、Nginx事件驱动模型

二、部署Nginx

1、yum部署Nginx

2、编译安装Nginx

三、Nginx使用

1、基础使用

2、nginx信号

四、web服务选择及优化

1、Nginx与Apache对比

2、Nginx服务调优


一、Nginx介绍

1、Nginx简介

①作用:支持七层(应用层)和四层(传输层)反向代理、可做web服务器。

②特性:高可靠性、支持热部署、可扩展性好、高并发高性能、单机部署。

⑤进程:一个主进程master生成多个worker子进程,worker子进程负责处理工作。

2、I/O模型相关概念

①Nginx服务使用异步非阻塞模式:请求不需要排队,会反馈任务的完成结果。

②Apache服务使用同步阻塞模式:请求需要排队,且不会主动返回结果。

③同步/异步:关注的是消息通信机制,即调用者在等待一件事情的处理结果时。被调用者是否提供完成。

④同步:调用者需要主动询问结果。

⑤异步:调用者不需要主动询问结果,被调用者会主动返回结果。

⑥阻塞:系统同时只能处理1个请求,另外的请求需要排队。

⑦非阻塞:系统同时处理多个请求。

3、Nginx事件驱动模型

①select:一个应用程序,代理系统功能处理异步请求,最大连接数是1024个。

它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。

②poll:select加强版取消了1024最大连接数。

poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的。

③epoll:poll的加强版。

epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll会把哪个流发生了怎样的I/O事件通知我们。所以我们说epoll实际上是事件驱动(每个事件关联上fd)的,此时我们对这些流的操作都是有意义的。

二、部署Nginx

1、yum部署Nginx

①使用yum部署Nginx需要先安装epel-release扩展包,官方源默认没有Nginx的yum源。

  1. yum install epel-release -y
  2. #安装epel-release扩展源

②扩展源安装完后直接安装Nginx

  1. yum install nginx -y
  2. #安装nginx服务

③使用yum安装的nginx配置文件位置在:/etc/nginx.conf。默认根目录在:/usr/share/nginx/html。默认日志文件在:/var/log/nginx/路径下。

2、编译安装Nginx

①官网下载安装包,nginx官网地址nginx news,进入后找到右边菜单栏的download,进入后选择自己想要下载的版本可以直接下载到本地然后传到Linux系统中或右键复制该包的下载连接在Linux系统中wget此地址直接下载到Linux系统中。

②安装包下载完成后安装编译需要的依赖环境和工具,然后进入对应的目录进行解压编译。

  1. yum -y install gcc pcre-devel openssl-devel zlib-devel
  2. #安装编译安装需要的依赖包和工具
  3. cd /opt
  4. #进入指定安装包下载的目录 /opt下
  5. tar xf nginx-1.18.0.tar.gz
  6. #将nginx包解压到当前文件夹
  7. cd nginx-1.18.0
  8. #进入解压后nginx包中
  9. ./configure
  10. #执行当前目录下的configure脚本检测编译安装环境和工具
  11. --prefix=/apps/nginx \
  12. #执行脚本时指定路径为 /apps/nginx文件夹中,若没有此文件夹需要先创建再进行编译指定
  13. --user=nginx \
  14. #指定用户为nginx用户
  15. --group=nginx \
  16. #指定组为nginx组
  17. --with-http_ssl_module \
  18. #以下是编译时安装的指定模块
  19. --with-http_v2_module \
  20. --with-http_realip_module \
  21. --with-http_stub_status_module \
  22. --with-http_gzip_static_module \
  23. --with-pcre \
  24. --with-stream \
  25. --with-stream_ssl_module \
  26. --with-stream_realip_module
  27. make
  28. #执行完成检测编译安装环境和工具后将nginx安装包翻译为二进制
  29. make install
  30. #翻译完成后将包写入磁盘中

③写进磁盘完成后进入部署的文件夹使用绝对路径启动nginx服务,然后查看是否有nginx进程。

  1. /apps/nginx/sbin/nginx
  2. #使用绝对路径启动nginx
  3. ps aux |grep nginx
  4. #查看是否有nginx进程

④至此编译安装完成,本文资源下载中有一键部署nginx脚本,名称为nginx.sh。

三、Nginx使用

注意:以下命令若非yum安装使用时要使用绝对路径调用nginx命令,或将编译安装路径中的sbin文件夹中的nginx程序拷贝到/usr/sbin路径下。

1、基础使用

①nginx -V 查看安装了那些模块

②nginx -v 查看版本号

③nginx -s 发送信号 后面可以跟stop、reload、quit、reopen

④nginx -t 检查著配置文件语法

nginx -g 修改执行用户ps aux |grep nginx中查看。需要注销配置文件中的user nginx中。nginx -g "daemon off"前台运行,默认后台运行容器中需要使用。

⑥nginx -c 指定配置文件,一般用于.service文件中

2、nginx信号

①quit信号 -----SIGTERM,直接停止,不等服务执行完,nginx -s quit或kill -TERM执行。

②stop信号-----SIGQUIT,优雅的退出,等所有服务执行完再退出,nginx -s stop 或kill -QUIT执行。

③reopen信号---SIGUSER1 分隔日志。

创建新的nginx日志时需要发送USER1信号给nginx主进程才可以生效。kill -USER1 nginx主进程pid号。

④SIGUSER2信号,优雅的升级,不影响正在使用的用户,kill -USER2执行。

⑤reload信号----SIGHUP 重新加载配置文件,nginx -s  reload或kill -HUP执行。

四、web服务选择及优化

1、Nginx与Apache对比

①Nginx使用异步非阻塞工作模式,Apache使用同步阻塞模式。

②Nginx处理静态资源更好,Apache处理动态资源更好。

③Nginx是轻量级web服务器,耗费资源比Apache少。

④Nginx抗并发性更好,Apache更稳定。

⑤Apache对接PHP简单,Nginx对接需要借助其他后端工具。

2、Nginx服务调优

①根据cpu数量配置master有多少个worker子进程。

配置文件全局中修改:work_processes auto(表示根据cpu数量决定个数)。

②设置长链接超时时间。

keepalive_timeout 50。

③调整nginx进程优先级。

worker_priority -20  (范围-20到19,越小优先级越高)

④调整nginx可打开文件数量。

worker_rlimit_nofile 65536;

需要配合修改内核参数vim /sercurity/limits.conf文件中加入下面参数重启机器即可。

*soft nofile 数量

*hard nofile 数量

⑥调整每个worker进程可打开文件数量,注意需要配合nginx总共可以打开文件数量限制。

worker_connections  数量;

⑦隐藏nginx版本号在http模块中添加以下参数。

   server_tockens off

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号