Nginx安装环境准备以及三种不同安装方式;Nginx目录结构和核心配置文件nginx.conf模块分析

一、Nginx 环境准备

1.关闭防火墙

安全增强型 Linux(Security-Enhanced Linux)简称 selinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

getenforce                        查看selinux的状态
setenforce 0                      设置selinux的关闭状态
systemctl status firewalld        查看防火墙状态
systemctl stop firewalld          关闭防火墙
systemctl disable firewalld       禁止开机自启
systemctl start firewalld         开启防火墙

2.安装Nginx

方案一:Nginx的源码简单安装

需要先准备GCC编译器,PCRE兼容正则表达式库,zlib压缩库,OpenSSL安全通信软件库包。

(1)进入官网查找所需下载版本的链接地址,然后使用wget命令进行下载

wget 网址

(2) 将下载的资源进行包管理

mkdir -p nginx/core

mv 文件名 nginx/core

(3) 解压缩

tar -xzf 文件名

​ (4)进入压缩文件中,发现configure

./configure

​ (5)编译和安装

make

make insatll

注意:默认状态下,nginx被安装到/usr/local/nginx 路径下了,如果要自己设置安装路径,在./configure后加参数

方案二:通过yum安装nginx

如果直接用yum -y install nginx安装,会显示没有此安装包,可按照下面方法解决

1.远程下载安装nginx的yum仓库文件
#执行下面两行代码进行安装
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx

也可以通过官网http://nginx.org/en/docs/install.html详细说明了linux如何安装nginx

安装好nginx后,如何查找安装目录?

通过whereis nginx 查找nginx所在目录

然后进入到此目录,并执行./nginx 启动nginx,在浏览器输入本机地址或者localhost,会显示welcome nginx

方案三:安装epel-release软件包

很多软件包在yum里面没有的,解决的方法,就是使用epel源,也就是安装epel-release软件包。(这种方法需要挺大空间的,空间不够的话,不建议该方法)

sudo yum install epel-release
yum update
yum -y install nginx

二、Nginx目录结构分析

1)nginx相关目录

工作目录: /etc/nginx
执行文件:/usr/sbin/nginx
日志目录:/var/log/nginx
启动文件:/etc/init.d/nginx
web目录:/var/www/html/  首页文件是index.nginx-debian.html

三、Nginx服务器启停命令

1.Nginx服务的信号控制

Nginx中的master和worker进程是什么?

Master进程:master作为主进程仅有一个,用来管理worker进程。

Worker进程:worker进程有多个,它负责处理用户请求,各个worker进程之间是平等的并且相互度李,处理请求的机会也是一样的。

如何获取进程的PID?

通过 ps -ef |grep nginx 命令

image-20210604195503450

信号有哪些?

信号作用
TERM/INT关闭整个服务,会将nginx服务立即关闭
QUIT平缓停止当前Nginx服务进程
HUP使用新的配置文件启动进程,之后平缓停止原有进程(平滑重启)
USR1重新打开日志文件,通常应用于日志切割
USR2平滑升级到最新版的nginx
WINCH所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令
使用方法: kill -signal PID

2.Nginx的命令行控制

在/usr/sbin目录下执行 ./nginx 启动nginx

./nginx -h 列出当前nginx支持参数和配置,如下图

image-20210604202037108

-v nginx版本信息

-V nginx除了nginx版本信息外,还有其他内容

-t 默认找到nginx安装目录,检测nginx.conf配置文件是否有语法错误。

-T 在检测nginx.conf配置文件时,如果成功除了输出-t下相同信息外,还会输出nginx.conf详细信息

​ 检测失败时,输出的信息和-t下完全相同。

-q ./nginx -tq 在测试期间只输出错误信息,测试成功什么都不输出。

-s signal 信号:

​ stop 快速关闭,类似于TERM/INT

​ quit 类似于QUIT

​ reopen 类似于USR1

​ reload 类似于HUP

如 ./nginx -s stop 关闭nginx

-p 设置nginx安装目录

-c 指定nginx的配置文件路径

-g 用来补充nginx配置文件,向nginx服务指定启东市应用全局的配置

四、Nginx核心配置文件 nginx.conf

nginx.conf配置文件中有三大块:全局块,events块,http块

http中可以配置多个server块,每个server块又可以配置多个location块。

nginx.conf在/etc/nginx目录下

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {    //用来配置与用户网络连接相关内容
    worker_connections  1024;
}


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;

    include /etc/nginx/conf.d/*.conf;  
}


在http配置中有一句 include /etc/nginx/conf.d/*.conf; ,也就是它还包含conf.d下的所有后缀名为.conf文件。在此处,本机该目录下有一个default.conf文件,文件内容如下:

server {  
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

全局块:

usr指令

(1)usr:用于配置运行Nginx服务器的worker进程的用户和用户组

​ 作用:指定启动运行工作进程的用户及用户组,对系统权限访问控制更加精细,安全。

实验:

修改nginx.conf文件,设置一个用户信息"www"

user www;

设置完后,进行检测,发现错误,image-20210604210304116这是因为当前系统中没有www用户,需要添加www用户

添加用户

useradd www

然后重启nginx以及查看nginx进程,发现现在worker进程属于www用户下面了。

image-20210604212026556

www和nginx,nobody用户区别:

现在我在root/html/目录下创建一个index.html文件,当访问localhost的时候希望访问的是该目录下的index.html

思路应该是想到更改default.conf下的loacation 中的root路径,如图image-20210604212908021

然而访问发现报错,image-20210604213115767

这是因为使用www用户启动的nginx想要访问root组的目录是没有权限的。通过权限访问控制可以提高系统的安全性。

woker process指令

master_process:用来指定是否开启工作进程,

worker_processs:配置Nginx生成工作进程的数量, 理论上来说,worker process的值越大,处理的并发量越高。但建议该值与系统cpu的个数保持一致。配置使用这个时,master_process应该设为off

include指令

用来引入其他配置文件,使nginxde 配置更加灵活

include 可以在nginx.conf文件中任何位置进行配置

events块

accept_mutex:用来设置网络序列化

accept_mutex on|off;

因为nginx是以多进程来工作,当有用户请求是,多个worker进程会被同时唤醒,而最终只有一个进程获得连接,这样的方式会影响nginx的整体性能。

将accept_mutex设置为on状态,能够将多个nginx进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢。

multi_accept:用来设置是否允许同时接收多个网络连接

multi_accept on|off;

如果在off状态,nginx一个工作进程只能接收一个新的连接。on状态,一个工作进程可以同时接收所有的新的连接。

worker connections:用来配置单个worker进程最大的连接数

worker connections number;

number的值不能大于操作系统支持打开的最大文件句柄数量。

use:用来设置Nginx服务器选择哪种时间驱动来处理网络信息

use method(select/poll/epoll/kqueue等)

http块

定义MIME-Type

MIME Type 是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。

Nginx配置文件中,默认有两行

include mime.types;
default_type application/octet-stream;

任务:实现请求某些接口的时候返回指定的文本字符串或者json字符串

实现方法:修改nginx.conf文件

image-20210605172115428

修改完后,重新运行nginx, 分别打开 localhost/get_text, localhost/get_json网址,显示如下信息

image-20210605172429962 image-20210605172529947

server块和location块

server {  
    listen       80;     #默认监听窗口
    server_name  localhost;  #域名

    #access_log  /var/log/nginx/host.access.log  main;

    location / {         
        root   /usr/share/nginx/html;     #资源所对应的目录,index.html..要放在此目录下
        index  index.html index.htm;
    }
 	error_page   500 502 503 504  /50x.html;  #发生指定状态码时跳转到50x.html
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

有些指令即可以配置到http,也可以配置在server和location中

如果同时三个块里面都配置了,优先级从高到底:location>server>http 就近原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值