Centos7编译nginx1.9并搭建静态页面

参考文章

目录

一、编译安装Nginx1.19.0. 1

二、熟悉nginx常见操作(启动,快速关闭,关闭,重启,重载配置,配置检查)(以下命令均在sbin目录下运行)

设置开机自起

三、搭建静态页面

四、Nginx目录

一、编译安装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 配置文件的一般结构:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值