Nginx介绍、安装和配置文件介绍

Nginx服务的软件特点
  • 支持高并发,消耗内存资源少

  • 具有多种功能

    • 网站web服务(apache)
    • 网站负载均衡功能(LVS)
    • 网站缓存服务(Squid)
  • 在多种系统平台都可以进行部署

  • nginx实现网络通讯时使用的是异步网络IO模型:epoll模型

    • apache使用的是select模型
      • epoll模型:找人,查看人员登记信息。
        • 小朋友上厕所,都站在教室某个位置一起问
      • select模型:找人,一个一个屋子去问——线性轮询
        • 小朋友上厕所,一个一个小朋友去询问
    指标 select epoll
    性能 随着连接数的增加性能急剧下降,处理成千上万并发连接数,性能很差 随着连接数的增加,性能基本上没有下降。处理成千上万并发连接时,性能很好
    连接数 连接数有限制,处理的最大连接数不超过1024,如果要处理的连接数超过1024个,则需要修改FD_SETSIZE宏,并重新编译 连接数无限制
    内在处理机制 线性轮询 回调callback
    开发复杂性
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 
      	}
      }
      

猜你喜欢

转载自blog.csdn.net/s_frozen/article/details/128841947