Nginx服务的软件特点
-
支持高并发,消耗内存资源少
-
具有多种功能
- 网站web服务(apache)
- 网站负载均衡功能(LVS)
- 网站缓存服务(Squid)
-
在多种系统平台都可以进行部署
-
nginx实现网络通讯时使用的是异步网络IO模型:epoll模型
- apache使用的是select模型
- epoll模型:找人,查看人员登记信息。
- 小朋友上厕所,都站在教室某个位置一起问
- select模型:找人,一个一个屋子去问——线性轮询
- 小朋友上厕所,一个一个小朋友去询问
- epoll模型:找人,查看人员登记信息。
指标 select epoll 性能 随着连接数的增加性能急剧下降,处理成千上万并发连接数,性能很差 随着连接数的增加,性能基本上没有下降。处理成千上万并发连接时,性能很好 连接数 连接数有限制,处理的最大连接数不超过1024,如果要处理的连接数超过1024个,则需要修改FD_SETSIZE宏,并重新编译 连接数无限制 内在处理机制 线性轮询 回调callback 开发复杂性 低 中 - apache使用的是select模型
Nginx软件的安装部署过程
-
yum安装软件
- 使用官方yum源进行安装,安装的是最新版本,软件目录结构比较标准(推荐)
- 使用非官方yum源进行安装,安装的不是最新版,目录结构会发生变化
-
编译安装软件
-
wget下载软件包
-
解决软件的依赖:
- openssl-devel
- pcre-devel
-
解压下载好的目录并进入目录中
-
编译安装三部曲
-
进行配置操作
./configure --prefix= --group= --prefix=PATH:指定程序安装路径 --user=USER:设置一个虚拟用户管理worker进程(安全) --group=GROUP:设置一个虚拟组管理worker进程(安全)
-
进行软件的编译过程
make install make 编译(翻译) C:gcc python:python解释器
-
-
yum官方源安装方法:
-
第一个历程:更新nginx官方yum源
https://nginx.org/en/linux_packages.html#RHEL vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true ##如果验证失败 将gpgcheck=1改为0或者注释掉 enabled:是否启用
-
第二个历程:yum安装nginx软件
yum install nginx
-
第三个历程:启动nginx服务
systemctl start nginx systemctl enable nginx
-
测试访问nginx服务
输入ip地址信息
-
查看软件的目录结构
rpm -ql nginx
路径信息 | 类型信息 | 作用说明 |
---|---|---|
/etc/logrotale.d/nginx | 配置文件 | 用于日志轮训切割 |
/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf | 配置文件 配置目录 | nginx主配置文件 |
/etc/nginx/fastcgi_params /etc/nginx/scgi_params /etc/nginx/uwsgi_params | 配置文件 | cgi、Fastcgi、uwcgi配置文件 |
/etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf | 配置文件 | nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | http协议的content-type与扩展名 |
/usr/lib/systemd/system/nginx.debug.service /usr/lib/systemd/system/nginx.service | 配置文件 | nginx服务守护进程管理文件 |
/etc/nginx/modules /usr/lib64/nginx /usr/lib64/nginx/modules | 目录信息 | nginx模块目录 |
/usr/sbin/nginx /usr/sbin/nginx-debug | 命令信息 | nginx终端管理命令 |
/usr/share/doc/nginx-1.14.2 /usr/share/man/man8/nginx.8.gz | 目录信息 | nginx帮助手册信息 |
/usr/share/nginx /usr/share/nginx/html /usr/share/nginx/html/index.html | 目录信息 | nginx默认站点目录 |
/var/cache/nginx | 目录信息 | nginx缓存目录信息 |
/var/log/nginx | 目录信息 | nginx日志目录信息 |
-
/etc/logrotate.d:实现nginx日志文件定时切割处理
-
利用脚本实现切割
#!/bin/bash #将当天的日志重命名 mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%F).log #生成新的一天日志文件 systemctl restart nginx
-
利用专用文件切割程序——logrotate
vim /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly:定义默认日志切割周期 weekly #daily:每天、weekly:每周、monthy:每月 # keep 4 weeks worth of backlogs:定义只保留几个切割后的文件 rotate 4 # create new (empty) log files after rotating old ones:创建出一个相同的原文件 create # use date as a suffix of the rotated file: #定义角标(扩展名称信息) dateext # uncomment this if you want your log files: #是否对切割后的文件进行压缩处理 compressed #compress:进行压缩 # RPM packages drop log rotation information into this directory:加载包含/etc/logrotate.d目录中文件配置 include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here:单独对某个文件进行切割配置 /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } #minsize:当文件最小要到达的大小时才进行切割 #maxsize:当文件最大到达的大小时进行切割 #这两个参数优先于设置的切割周期 /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
-
查看子配置文件:cd /etc/logrotate.d/
ll -rw-r--r--. 1 root root 91 Apr 11 2018 bootlog -rw-r--r--. 1 root root 160 Sep 15 2017 chrony -rw-r--r-- 1 root root 93 Apr 28 2021 firewalld -rw-r--r--. 1 root root 224 Oct 30 2018 syslog -rw-r--r--. 1 root root 100 Oct 31 2018 wpa_supplicant -rw-r--r--. 1 root root 103 Nov 5 2018 yum [root@pert logrotate.d]# cat syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
-
目录总结
- /etc/nginx:配置文件
- /var/log/nginx:日志文件
- /usr/bin/nginx:命令文件
- /usr/share/nginx/html:站点目录
nginx服务配置文件
-
主配置文件:/etc/nginx.conf
-
第一部分:配置文件主区域
#定义worker进程管理的用户(ps -ef | grep nginx) 有两个nginx进程 user nginx #定义有几个worker进程,进程越多,处理并发能力越强。数量最好===cpu核数(lscpu) worker_processes 1; #定义错误日志 error_log /var/log/nginx/error.log warn; #定义pid文件路径信息:存在服务启动,不存在就代表没启动 pid /var/run/nginx/pid;
-
第二部分:配置文件事件区域
#一个worker进程可以同时接收1024访问请求 events { worker_connections 1024; }
-
第三部分:配置http区域
http { #加载一个配置文件 include /etc/nginx/mime.types; #指定默认识别文件类型 default_type application/octet-stream; #定义日志的格式 log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer"' '"$http_user_agent" "$http_x_forwarded_for"' #指定日志路径 access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #定义超时时间 keepalive_timeout 65; #gzip on; #加载配置文件(这里是default) include /etc/nginx/conf.d/*.conf; }
-
补充
#nginx进程 master process:主进程,管理服务是否能够正常运行(boss) worker process:工作进程,处理用户的访问请求(员工)
-
-
扩展配置文件(虚拟主机配置文件):/etc/nginx/nginx.d/default
-
第四个部分:server区域信息(配置一个网站—一个虚拟主机)
server { #指定监听的端口 listen 80; #指定网站域名 server_name localhost; location / { #定义站点目录的位置 root /usr/share/nginx/html; #定义首页 index index.html index.htm; } #优雅显示报错页面 error_page 500 502 503 504 /50x.html; location = /50.html { root /user/share/nginx/html } }
-