第一章:nginx的安装和目录结构

  • Linux下安装Nginx
  • 1.下载Linux解压
  • 2.安装准备
  • 3.源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)
  • 配置
  • 编译,指令:
  • 安装,指令:
  • 4.检查是否安装成功
  • 5.启动Nginx
  • 6.关闭防火墙或者开放端口
  • 关闭防火墙
  • 放心端口
  • 7.安装成系统服务
  • 创建服务脚本
  • 服务脚本内容
  • 重新加载系统服务
  • 启动服务
  • 开机启动
  • Nginx目录结构
  • 目录结构
  • conf
  • html
  • logs
  • access.log
  • error.log
  • nginx.pid
  • sbin
  • 基本运行原理


Linux下安装Nginx

1.下载Linux解压

wget -c https://nginx.org/download/nginx-1.12.6.tar.gz  //下载Nginx
tar -zxvf nginx-1.14.0.tar.gz  // 解压文件

2.安装准备

我们先检验下系统是否安装g++、gcc、openssl-devel、pcre-devel和zlib-devel,这些安装nginx所需要的依赖包。

yum list installed | grep gcc //这个指令既可以检查gcc又可以检查g++
yum list installed | grep openssl-devel
yum list installed | grep pcre-devel
yum list installed | grep zlib-devel

3.源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

配置

配置,-- prefix是指定安装的位置,执行编译、安装(make,make install)成功后,生成的配置文件(conf文件夹)和启动文件(sbin文件夹)等会放到生成的nginx这个文件夹里(nginx文件夹的名字是可以自定义的),这样做的好处就是方便以后的维护。因为如果不设置的话,直接执行./configure,会把文件生成到/usr/local/nginx下(但有的时候你可能没有对这个(usr)文件夹下的文件有操作权限,所以建议指定到你有操作权限的文件夹(dada),指令:

cd /usr/local/nginx解压目录
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf
编译,指令:
make
安装,指令:
make install

4.检查是否安装成功

执行完上面的命令后,你在指定的文件夹里的找到了生成的conf和sbin文件,就说明基本安装成功。

nginx指定工作目录 nginx 运行目录_服务器

5.启动Nginx

进入安装好的目录 /usr/local/nginx/sbin

./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置

6.关闭防火墙或者开放端口

关闭防火墙
systemctl stop firewalld.service
放心端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
// 重启防火墙
firewall-cmd --reload

7.安装成系统服务

创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载系统服务
systemctl daemon-reload
启动服务
systemctl start nginx.service
开机启动
systemctl enable nginx.service

Nginx目录结构

目录结构

进入Nginx的主目录我们可以看到

client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件

client_body_temp fastcgi_temp proxy_temp scgi_temp
conf

conf文件夹下面主要存放配置文件相关内容

html

用来存放 默认情况下我们的网页、静态文件的默认目录 html、css等。

logs

logs存放的是

access.log  error.log  nginx.pid
access.log

access.log文件存放的我们访问的记录文件会包含用户请求携带的所有参数

nginx指定工作目录 nginx 运行目录_服务器_02

error.log

error.log文件会存放用户请求的错误或者404都会帮我们记录下来

nginx.pid

nginx.pid存放的是Nginx主程序的进程号

nginx指定工作目录 nginx 运行目录_nginx_03

sbin

nginx的主程序

基本运行原理

用户在请求我们的系统的时候通过网络请求 , 当请求发送的时候,Nginx相应请求是通过:

  1. 首先当我们开启/sbin/nginx 主程序开启master主进程
  2. 主进程会把主配置文件读取出来并校验配置文件有没有错误,如果没有错误会开启子进程worker
  3. 子进程开启后才是真正运行在服务器的多个进程之一,子进程的个数是可以设置的,一般会设置与机器cpu核数一致
  4. 子进程和主进程都启动后会等待用户的请求接入进来,用户请求接入是由worker来响应并解析,此时在了解用户的请求后worker会读取conf目录下的nginx.conf里面记录着用户请求的对象的站点在哪,worker就会根据指引去对应的位置寻找,找到后就会开始加载。
  5. 在以上过程中会有多个子进程同时完成用户请求,而master进程则负责协调子进程。在完成请求后worker就会被删掉,新的worker去读取新的文件。
  6. Nginx是多进程的模式,通过主进程来Worker来的子进程进行处理请求,而主进程来协调对应的子进程,而配置文件的校验是又主进程来完成,读取是由子进程来完成

nginx指定工作目录 nginx 运行目录_服务器_04