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

    技术2022-08-01  100

    关与作者更多博客请访问云里云外开源社区 参考文章

    目录

    一、编译安装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,一种叫aliasroot相对来说有一个问题,它会把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 配置文件的一般结构:

    Processed: 0.016, SQL: 9