• Nginx:综合架构网站服务 -- 1-- 安装及重要目录介绍


    综合架构网站服务(Nignx)

    命令总览:

    python -V   --查看Python安装版本,Linux中默认已安装
    epoll		--nginx实现网络通讯时使用的时异步网络IO模型: epoll模型
    

    00. 内容说明:


    1. 常见的网站服务
    2. nginx网站服务特点
    3. nginx服务部署安装 yum
    4. nginx目录结构介绍 (站点目录)
    5. nginx配置文件默认参数说明
    6. nginx实现简单网站搭建 (html代码)
    7. nginx服务一些常见应用 (模块功能)

    01. HTTP回顾:


    1) 用户访问网站流程
    2) HTTP协议的报文结构

    • HTTP请求报文
    • HTTP响应报文

    3) 报文结构中重点内容

    • 请求方法 get post
    • 协议版本 1.0 1.1 2.0
    • 状态码 200 301 302 404 403 500+

    4) 网站资源信息

    • URL URI
    • 静态资源
    • 动态资源 LNMP架构
    • 伪静态

    5) 网站评测指标
    1. IP: 根据用户访问的源IP信息进行统计
    如何统计,一个页面(www)一天访问网站最多的前10个地址 (awk 数组/sort uniq),access.log
    访问用户源地址信息:

    北京: 192.168.10.1 192.168.11.2
    深圳: 192.169.11.1
    上海: 192.170.12.1
    北京: 192.168.11.2

    2. PV: 根据用户页面访问量进行统计

    统计用户访问哪个页面的次数比较多,取出前10名
    北京: 192.168.10.1: 根据用户访问的cookie信息,统计访问的用户数量

    3. 网站并发: 单位时间内同时处理的请求数 ab命令可以模拟压力测试

    02. 常用的网站服务软件


    Usage statistics of web servers:
    https://w3techs.com/technologies/overview/web_server

    处理静态资源的web服务:

    apache软件: http://apache.org/ ,如httpd. yum install -y httpd
    nginx软件: http://nginx.org

    处理动态资源的web服务:

    PHP: php.net 终端浏览器进行访问 渐渐没落了
    Tomcat(java): 利用移动端查看网页 安卓-java
    PYTHON: 开发难度比较低

    03. nginx服务的软件特点:


    Nginx--engine x

    1. 支持高并发,消耗内存资源少
    2. 具有多种功能
      网站web服务功能 --- 能代替apache
      网站负载均衡功能 --- 能代替LVS
      网站缓存服务 --- 能代替Squid
    3. 在多种系统平台都可以进行部署
    4. nginx实现网络通讯时使用的时异步网络IO模型: epoll模型(apache -- select模型)
    • epoll模型:
      宿舍管理员: 找人,查看人员登记信息 ---不是线性的,效率更高
      幼儿园阿姨: 小朋友上厕所, 都站在教室的某个位置

    • select模型:
      宿舍管理员: 找人,一个一个屋子去问, --线性轮询
      幼儿园阿姨: 小朋友上厕所, 一个一个小朋友去询问

    apache select和nginx epoll 对比

    04. nginx软件的安装部署过程:


    两种安装方式:01.yum安装软件和02.编译安装软件
    yum安装软件能解决依赖问题;编译安装需要提前安装依赖,但能制定安装

    01. 编译安装软件

    在web服务器上192.16.1.7,mkdir /server/tools -p
    http://nginx.org/en/download.html 官网找到稳定版,右键复制链接地址

    第一个步骤:

    下载源码包:wget http://nginx.org/download/nginx-1.16.0.tar.gz
    PS: 解决软件的依赖 openssl-devel pcre-devel devel表示依赖

    mkdir /server/tools -p
    cd /server/tools
    wget http://nginx.org/download/nginx-1.16.0.tar.gz
    yum install openssl openssl-devel pcre pcre-devel -y
    

    第二个步骤:

    解压下载好的软件, 并进入到软件目录中

    tar xf nginx-1.16.0.tar.gz
    cd nginx-1.16.0
    

    第三个步骤:

    编译安装三步曲

    a 进行配置操作
    ./configure --help
    ./configure --prefix=  --user=USER 
    --prefix=PATH        指定程序安装路径
    --user=USER          设置一个虚拟用户管理worker进程(安全)
    --group=GROUP    设置一个虚拟用户组管理worker进程(安全)
    
    b 进行软件的编译过程:
    make 编译(相当于翻译)	
    
    c 编译安装过程
    make install
    

    02. yum安装软件(本文使用)

    a 使用官方yum源进行安装    安装的是最新版本  软件目录结构比较标准 (推荐)  7
    b 使用非官方yum源进行安装  安装的不是最新版  目录结构会发生变化	       41
    

    yum官方源安装方法:

    找到官网http://nginx.org/en/download.html
    最后面有Linux packages for stable and mainline versions.进入RHEL/CentOS后有安装源信息
    只要nginx-stable稳定版本,不要主线版本

    第一个历程: 更新nginx官方yum源
    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
    
    第二个历程: yum安装nginx软件
    sudo yum install yum-utils
    yum install -y nginx
    
    第三个历程: 启动nginx服务,检查服务是否安装正确
    systemctl start nginx
    systemctl enable nginx
    systemctl status nginx
    
    测试访问nginx服务
    打开浏览器,输入web的IP地址如10.0.0.7,
    显示Welcome to nginx!successfully 相关界面
    

    05. 查看软件的目录结构


    logrotate.d --- 日志轮训目录

    /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    --- 文件内容说明
    # rotate log files weekly
    weekly                     --- 定义默认日志切割的周期
    
    # 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
    include /etc/logrotate.d   --- 加载包含/etc/logrotate.d/目录中文件配置
           
    # 上述均为全局设置,或默认设置
           
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp {            --- 单独对某个文件进行切割配置
    	monthly				  --- 按月切割
    	create 0664 root utmp  --- 切割后新创建的文件权限
    	minsize 1M             --- 最小大小为1M,小于1M不进行切割              
    	rotate 1				  --- 保留日志个数为1个
    }
        
    /var/log/btmp {
    	missingok
    	monthly
    	create 0600 root utmp
    	rotate 1
    }
    

    06. nginx服务配置文件


    /etc/nginx/nginx.conf -- 主配置文件
    /etc/nginx/nginx.d/default -- 扩展配置文件(虚拟主机配置文件)
    ps -ef|grep nginx -- 能看到两个Nginx进程,一个master,另一个worker默认由Nginx管理

    补充: nginx的进程
    master process: 主进程 ---管理服务是否能够正常运行 boss
    worker process: 工作进程 ---处理用户的访问请求 员工

    nginx.conf --- 主配置文件

    cd /etc/nginx/
    cp nginx.conf{,.bak}
    grep -v "^$" nginx.conf > nginx.conf

    ## 第一个部分: 配置文件主区域配置
    user  nginx;               	 				--- 定义worker进程管理的用户,可更改为www用户,重启后ps -ef|grep nginx
    worker_processes  2;         				--- 定义有几个worker进程  最好是CPU核数 / 核数的2倍
    error_log  /var/log/nginx/error.log warn;   --- 定义错误日志路径信息
    pid        /var/run/nginx.pid;              --- 定义pid文件路径信息
        
    ## 第二个部分: 配置文件事件区域
        events {                    
            worker_connections  1024;   		--- 一个worker进程可以同时接收1024访问请求
        }
        
    ## 第三个部分: 配置http区域
        http {
            include       /etc/nginx/mime.types;      		--- 加载一个配置文件
            default_type  application/octet-stream;   		--- 指定默认识别文件类型
            log_format  oldboy  '$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  oldboy;  --- 指定日志路径          
            sendfile        on;   ???
            #tcp_nopush     on;   ???
            keepalive_timeout  65;   						--- 超时时间
            #gzip  on;
            include /etc/nginx/conf.d/*.conf;        		--- 加载一个配置文件
        }
    

    default.conf --- 扩展配置

    /etc/nginx/conf.d/default.conf --- 扩展配置(虚拟主机配置文件),cd /etc/nginx/conf.d/

    cd /etc/nginx/conf.d/
    [root@web01 conf.d]# cp default.conf{,.bak}
    [root@web01 conf.d]# grep -Ev "^$|^    #" default.conf.bak  > default.conf
    
    [root@web01 conf.d]# cat default.conf
    # 相当于主配置文件的第四个部分: server区域信息(配置一个网站 www/bbs/blog -- 也称为一个虚拟主机)
    server {
        listen       8080;                		--- 指定监听的端口,默认80
        server_name  www.moox.com;      		--- 指定网站域名 
        
        location / {
        	root   /usr/share/nginx/html;     	--- 定义站点目录的位置
        	index  index.html index.htm;      	--- 定义首页文件
        }										--- 用户请求先在站点目录中找,没有时发送首页文件
        
        error_page   500 502 503 504  /50x.html;--- 以下优雅显示页面信息
        location = /50x.html {
        root   /usr/share/nginx/html;
        }
    }
    

    测试default.conf:

    # 1.修改监听端口:listen 8080;
    systemctl reload nginx
    netstat -lntup|grep nginx
    # 浏览器清除缓存后打开10.0.0.7报错,使用10.0.0.7:8080正常打开(win10不要使用IE)
    # 2.
    

    站点目录和首页文件关系示意图:

    客户请求时,首先查找站点目录中需要的文件如:
    10.0.0.7:8080/usr/share/nginx/html/moox.html;
    站点目录中不存在时,将首页文件index.html发给客户


    07. 总结:


    1. 常用的网站web服务 (静态请求 动态请求)
    2. nginx服务的特点 相比较于apache
      nginx实现网络通讯时使用的时异步网络IO模型: epoll模型
    3. nginx软件安装部署 yum官方源如何安装部署
    4. nginx程序重要目录结构
    1. /etc/nginx 配置文件
    2. /var/log/nginx 日志文件
    3. /usr/bin/nginx 命令文件
    4. /usr/share/nginx/html 站点目录
    1. nginx服务配置文件默认参数

    扩展:

    1. 熟悉排序和去重命令,对文件中数值信息进行统计分析
      统计用户访问哪个页面的次数比较多,取出前10名
    2. 如何对网站进行压力测试
  • 相关阅读:
    最短路径 Floyd && spfa
    queue 优先队列
    POJ Wormholes 最短路径 ballman_ ford 有负环
    上帝造题五分钟
    算法提高 新建Microsoft Word文档
    算法训练 最短路
    Ubuntu14 Could not open file /var/lib/dpkg/status
    MongoDB权威指南<2> 1-1 MongoDB 介绍
    SaltStack Char03 实践案例
    ELK Stack
  • 原文地址:https://www.cnblogs.com/moox/p/12689800.html
Copyright © 2020-2023  润新知