目录
二、熟悉nginx常见操作(启动,快速关闭,关闭,重启,重载配置,配置检查)(以下命令均在sbin目录下运行)
一、编译安装Nginx1.19.0
安装依赖
yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
依赖包说明:
1、编译依赖 gcc
环境,所以需要:gcc gcc-c++
;
2、PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库,所以需要:pcre pcre-devel ;
3、zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib
对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库,所以需要:zlib zlib-devel ;
4、OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库,所以需要:openssl openssl-devel
;
因为我之前已经安装过,所以这部不需要再次安装
编译Nginx:
分为两种
1. 直接下载二进制文件
二进制格式的 Nginx 中模块已经编译,但并不是每一个模块(功能)都开启(被编译)一些第三方模块,同样包含强大的功能就无法编译到二进制 Nginx 中。
2. 自主编译 nginx 可以根据自己的需求合理开启需要编译的模块
我采用的是第二种,即直接编译源码
下载源码并上传(使用Xftp6软件,大家可以去官网下载,学生有免费版)
先在 /usr/local/新建一个nginx文件夹
mkdir nginx
上传到虚拟机 /usr/local/nginx
源码地址:https://nginx.org/en/download.html
解压
tar xzvf 压缩包全称
源码目录分析:
auto:有四个子目录,用于编译的 cc、lib库目录 lib、判断操作系统的 os、types 和19个文件用于辅助 configure判断当前系统支持哪些模块以及特性
conf:示例文件,安装成功后,会将此目录中的内容拷贝到安装目录
configure:执行编译前的必备动作,生成中间文件
contrib:提供两个 perl 脚本和一个vim 配置文件用于高亮显示 nginx 的配置文件,文件放置于~/.vim/中:cp -r contrib/vim/* ~/.vim/
html:提供两个标准 html 文件 index.html 和50X.html
src:源码目录
预编译后,会生成 objs 目录和 Makefile 文件
设置安装目录(如果不进行这步,安装后的资源会分散开,不利于使用)
./configure --prefix=/usr/local/nginx
编译的时候用来指定程序存放路径
编译并安装
执行make命令进行编译。make命令会根据Makefile文件进行编译。编译工作主要是调用编译器(如gcc)将源码编译为可执行文件,通常需要一些函数库才能产生一个完整的可执行文件。
编译生成的二进制文件存在于 src 目录中,如果使用了动态模块,编译产生的.so 文件,会存在于 objs 目录中。
上面之所以没有使用 make && make install,是因为如果是升级 nginx,则需要将二进制文件拷贝到安装目录中。首次安装 nginx时,可以使用make install将编译的文件复制到指定目录中。
make && make install
检查命令是否执行成功(上一条命令)
echo $?
//返回0则成功
//进入sbin目录下,输出版本号,暂时必须使用./ 因为只有在本目录下才有此命令
./nginx -v
检查配置文件语法是否正确
nginx -t
二、熟悉nginx常见操作(启动,快速关闭,关闭,重启,重载配置,配置检查)(以下命令均在sbin目录下运行)。
可以使用软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
将nginx运行文件链接到环境变量目录中
1**:启动(检查端口号)**
进入nginx的安装目录的sbin目录下
./nginx
检查端口号**:**
netstat -ntlp | grep nginx
-a或–all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
**2:**快速关闭
./nginx -s stop
//快速关闭 Nginx
3: 关闭
./nginx -s quit
//关闭Nginx
4**:重新载入配置文件(nginx启动时才可以)(修改了配置文件后先检查配置是是否正确)**
nginx -s reload
可以看到重新载入配置文件命令生效
5**:配置检查**
./nginx -t
看到
nginx.conf syntax is ok
nginx.conf test is successful
就表示一切ok
6**:重启**
nginx -s reload
或者
查找当前nginx进程号,然后输入命令:
kill -HUP 进程号
实现重启nginx服务
ps -ef|grep nginx //查询进程
编写启动脚本
vim /usr/lib/systemd/system/nginx.service
添加以下内容
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
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=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机自起
查看服务是否启动
systemctl status nginx
配置服务开机自启
systemctl enable nginx
三、搭建静态页面(html页面大家自己准备哦)
1、在Nginx安装目录下创建dlib文件夹,用于存放页面文件
mkdir dlib
2、先修改配置文件,将端口改为8080或80,更改location
- location后面"/",表示所有的请求,然后需要指定url它的后缀要与我的文件目录后面的后缀一一对应,有两种用法,一种叫root,一种叫alias
- root相对来说有一个问题,它会把url中的一些路径带到我们的文件目录中来,所以我们通常使用alias
vim conf/nginx.conf
//按i进入修改模式,按Esc退出,再按shift+q。在左下角:后输入x保存并退出
检查是否修改(可以看到端口已经修改)
本地主机访问:
CentOS系统在初始状态下是打开了防火墙的并且不允许任何流量的出入,当然 22端口的基础端口是开放的
这就需要我们自己来开启需要的端口,nginx需要代理HTTP/HTTPS请求 所以我们需要开放相应端口
先开启8080端口
firewall-cmd --zone=public --add-port=8080/tcp –permanent
重启防火墙
systemctl restart firewalld.service
查找虚拟机ip:
ifconfig
四、Nginx的主配置文件
Nginx 的配置文件
Nginx 的配置文件中,nginx.conf 为主配置文件,配置文件中,以#开始的行,或者是前面有若干空格或者 TAB 键,然后再跟#的行,都会被认为是注释。
Nginx 的配置文件是以 block(块)形式组织,每个 block 都是以一个块名称和一对大括号“{}”组成。block 分为几个层级,整个配置文件为 main 级别,即最大层级;在 main 级别之下会有 event、http、mail 等层级,而 http 中又会包含 server block,server block 中可以包含 location block。即块之间是可以嵌套的,内层 block 继承外层 block。最基本的配置项语法格式是“配置项名 配置项值1 配置项值2 配置项值3 … ”;
每个层级可以有自己的指令(Directive),例如 worker_processes 是一个main层级指令,它指定 Nginx 服务的 Worker 进程数量。有的指令只能在一个层级中配置,如worker_processes 只能存在于 main 中,而有的指令可以存在于多个层级,在这种情况下,子 block 会继承 父 block 的配置,同时如果子block配置了与父block不同的指令,则会覆盖掉父 block 的配置。指令的格式是“指令名 参数1 参数2 … 参数N;”,注意参数间可用任意数量空格分隔,最后要加分号。
下图是 Nginx 配置文件的一般结构: