架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)

文章目录

  • Nginx 安装与运行(Centos7下)
    • nginx安装
        • 注: `\`表示命令行中换行, 提高可读性
        • nginx信号命令:
    • Nginx 进程模型
      • master 进程: 主进程 (领导者)
      • worker 进程: 工作进程 (服务者, 为 master 服务)
      • Worker抢占机制
      • 传统服务器事件处理(BIO, 同步阻塞机制)
      • Nginx 事件处理(异步非阻塞的多路复用器, 高效的通信方式, 可以应对高并发环境)
    • nginx.conf 配置结构 (大括号后没有封号哦)
    • nginx.pid 打开失败以及失效的解决方案

Nginx 安装与运行(Centos7下)

nginx安装

  1. 安装依赖环境
  • 安装gcc环境 yum install gcc-c++
  • 安装PCRE库, 用于解析正则表达式 yum install -y pcre pcre-devel
  • zlib压缩和解压缩依赖 yum install -y zlib zlib-devel
  • SSL安全的加密套接字协议层, 用于HTTP安全传输, 也就是https
    yum install -y openssl openssl-devel
  1. 解压, 需要注意, 解压后得到的是源码, 源码需要编译后才能安装
    tar -zxvf nginx-1.16.1.tar.gz
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第1张图片

  2. 编译之前, 先创建 nginx 临时目录, 如果不创建, 在启动 nginx的过程中会报错
    mkdir /var/temp/nginx -p

  3. 在 nginx 目录下, cd nginx-1.16.1/, 然后输入如下命令进行配置, 目的是为了创建makefile 文件

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_ssl_module

注: \表示命令行中换行, 提高可读性

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第2张图片
with-http_ssl_module : 添加 SSL 模块支持, 用于申请 https 的安全协议, http 默认端口是 80, https 的默认端口是 443
架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第3张图片

  1. make 编译 : 命令 make

  2. 安装: 命令 make install
    在这里插入图片描述

  3. 进入我们设置的sbin 目录启动 nginx: 命令
    cd /usr/local/nginx/sbin
    ./nginx

nginx信号命令:

停止 ./nginx -s stop
退出: ./nginx -s quit
重新加载: ./nginx -s reload
检测配置文件: ./nginx -t

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第4张图片

  1. 打开浏览器, 访问虚拟机所处的内网ip即可打开 nginx 默认页面 (要关闭防火墙, 后面有步骤)
    在这里插入图片描述
    本地主机直接访问我们的内网ip地址, 即: 192.168.181.134
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第5张图片
  • 注意: 要关闭系统和centos的防火墙

关闭centos防火墙命令步骤如下:

  • 在centos命令行中输入: 依次输入以下命令
    1 systemctl status firewalld.service
    2 systemctl stop firewalld.service
    3 systemctl status firewalld.service
    4 systemctl disable firewalld.service

Nginx 进程模型

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第6张图片

master 进程: 主进程 (领导者)

worker 进程: 工作进程 (服务者, 为 master 服务)

  1. 查看 Nginx 进程 ps -ef|grep nginx
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第7张图片
  2. 配置 worker 的进程数(默认如上, 只有一个)
  • vim nginx.conf
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第8张图片
  • nginx -t 用于检测配置文件是否正确
    在这里插入图片描述
  • nginx -s reload 重新启动nginx
  • 查看 Nginx 进程 ps -ef|grep nginx
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第9张图片

Worker抢占机制

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第10张图片

传统服务器事件处理(BIO, 同步阻塞机制)

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第11张图片
架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第12张图片

Nginx 事件处理(异步非阻塞的多路复用器, 高效的通信方式, 可以应对高并发环境)

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第13张图片
架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第14张图片
架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第15张图片
架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第16张图片

nginx.conf 配置结构 (大括号后没有封号哦)

main 全局配置
  event 配置工作模式以及连接数
  http  http模块的相关配置
    server 虚拟主机配置, 可以有多个
       location 路由规则, 表达式
       upstream 集群, 内网服务器

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第17张图片

#user  nobody;    # 默认由 nobody 调用 worker 进程, 可以修改为 root
worker_processes  2;   # 配置 worker进程数


# linux 的日志级别: debug info notice warn error crit 由低到高
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
     
	# 标准事件模型: select或poll
	# 高效事件模型: Kqueue, Epoll, Eventport
    # 默认使用 epoll
    use epoll;  
    # 每个worker允许连接的客户端最大连接数
    worker_connections  10240;  # 根据硬件配置处理设置
}


http {
     
    include       mime.types;   # 导入types文件, include 指令可以引入文件
    default_type  application/octet-stream;  # 默认的type类型


	# 配置日志格式
    #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  logs/access.log  main;   

    sendfile        on;    # 用于文件高效传输
    #tcp_nopush     on;    # 与上面的 sendfile 同时使用

    #keepalive_timeout  0;
    keepalive_timeout  65;  # 客户端连接服务器的超时时间设置, 以秒为单位

    #gzip  on;   # 数据压缩, 可以提高传输效率, 节约服务器带宽, 但是会格外消耗服务器cpu性能

    server {
     
        listen       80;  # 设置端口号
        server_name  localhost;  # 设置域名

        location / {
        # 设置路由  斜杠为根目录
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
     
            root   html;
        }
    }
}

nginx.pid 打开失败以及失效的解决方案

架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第18张图片
问题2解决:

  1. ./nginx -h 查看帮助命令文档
    架构师成长记_第四周_02_CentOS 安装 Nginx 及 Nginx的配置详解(不需要jdk环境)_第19张图片
    -c 命令重新定义文件名字, 即自动默认的路径在 conf/nginx.conf 下

所以, 我们要手动的去指定该位置:
./nginx -c /usr/local/nginx/conf/nginx.conf

然后重启即可.

你可能感兴趣的:(You,Are,the,Architect,nginx,centos)