nginx安装环境准备

  1. 操作系统的选择,centos7
  2. 下载nginx的方式

    rpm包安装 yum工具自动化安装 获取源代码,手动编译安装nginx(指定安装路径,额外的开启nginx第三方的功能)

    • 由于我们使用nginx希望能够拥有更多完整的功能,所以最好使用源代码编译安装,使用rpm和yum会比较简陋
  3. 选择nginx编译安装,那么就需要解决好linux的编译开发环境,gcc,make编译工具

使用yum工具之前,必须配置好阿里云的yum源

步骤1:确保有wget命令 yum install wget -y 步骤2:备份旧的yum仓库文件 mkdir /etc/yum.repos.d/repobak mv /etc/yum.repos.d/* /etc/yum.repos.d/repobak

因为yum只使用/yum.repos.d一级目录下的源,所以我们进行旧的备份,方便我们下载新的yum源

访问阿里云的镜像站:http://developer.aliyun.com/mirror/,通过查看可以找到各类型的yum安装地址 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

清空旧的yum缓存

yum clean all

生成新的阿里云的yum缓存

yum makecache

安装如下编译工具

yum install -y gcc gcc-c++ autoconf autoconf automake make

安装nginx所需的一些第三方系统库支持,比如nginx的静态资源压缩功能所需的gzip,lib库,nginx需要支持URL重写所需的pcre库,perl开发的依赖库,以及nginx搭建加密站点https,所需的openssl依赖库等

yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel wget httpd-tools vim -y

安装完毕nginx所需的基础依赖库,还得检查系统的防火墙是否关闭,selinux关闭,yum配置,网络情况等等

iptables -L #没有任何规则即可 getenforce #显示disable即可 ping baidu.com #能够连网即可

编译安装nginx

  1. 下载程序源代码

    从nginx官网下载代码

    wget https://nginx.org/download/nginx-1.21.6.tar.gz

    从淘宝获取nginx代码

    官网:https://tengine.taobao.org wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz

  2. 解压缩淘宝nginx或者官网ngxin源代码

    tar -zxvf tengine-2.3.3.tar.gz

  3. 进入源代码目录,简单了解其中的文件作用

    [root@localhost tengine-2.3.3]# ll total 388 -rw-rw-r— 1 root root 931 Mar 29 2021 AUTHORS.te drwxrwxr-x 6 root root 4096 Mar 29 2021 auto #检测系统模块依赖信息 -rw-rw-r— 1 root root 302927 Mar 29 2021 CHANGES #存放nginx的变化记录日志 -rw-rw-r— 1 root root 27289 Mar 29 2021 CHANGES.cn -rw-rw-r— 1 root root 34831 Mar 29 2021 CHANGES.te drwxrwxr-x 2 root root 184 Mar 29 2021 conf #存放nginx主配置文件的目录 -rwxrwxr-x 1 root root 2502 Mar 29 2021 configure #可执行的脚本,用于释放编译文件的定制脚本 drwxrwxr-x 4 root root 109 Mar 29 2021 contrib #提供了vim插件,让配置文件颜色区分,更友好 drwxrwxr-x 4 root root 67 Mar 29 2021 docs drwxrwxr-x 2 root root 40 Mar 29 2021 html #存放了标准的html页面文件 -rw-rw-r— 1 root root 1715 Mar 29 2021 LICENSE drwxrwxr-x 2 root root 21 Mar 29 2021 man drwxrwxr-x 26 root root 4096 Mar 29 2021 modules drwxrwxr-x 3 root root 20 Mar 29 2021 packages -rw-rw-r— 1 root root 3450 Mar 29 2021 README.markdown drwxrwxr-x 10 root root 103 Mar 29 2021 src #存放了nginx源代码的目录 drwxrwxr-x 4 root root 43 Mar 29 2021 tests -rw-rw-r— 1 root root 43 Mar 29 2021 THANKS.te

  4. 编译源代码文件

    ./configure —help #查看编译帮助信息 第一曲:执行编译脚本文件,指定安装路径,以及开启额外功能等 ./configure —prefix=/opt/tbnginx233 —with-http_ssl_module —with-http_flv_module —with-http_gzip_static_module —with-http_stub_status_module —with-threads —with-file-aio 第二曲:输入 make 指令(下一步安装) 第三曲:输入 make install (开始安装)

  5. 查看安装后的nginx目录

    [root@dzclinux tbnginx233]# ls conf html logs sbin conf:存放nginx的配置文件,如nginx.conf html:存放nginx的网页根目录文件,存放站点的静态文件数据 logs:存放nginx的各种日志目录 sbin:存放该软件的可执行命令

  6. 编写一个nginx专属的环境变量

    vim /etc/profile.d/nginx.sh ==>> export PATH=”$PATH:/opt/tbnginx233/sbin” 这个时候我们重启服务器,加载所有的环境变量,通过echo $PATH命令,可以查看到我们新加入的nginx环境变量

  7. 有了环境变量,快捷的使用nginx指令

    如果没有设置环境变量,我们可以通过文件的绝对路径运行

    /opt/tbnginx233/sbin/nginx

    设置了环境变量,指令如下

    nginx #直接输入nginx,表示启动该进程,这个时候再次启动会报错,端口被占用 nginx -s stop #停止nginx服务 nginx -s reload #平滑重启,不关闭nginx,直接重新加载配置文件

了解nginx配置文件

nginx.conf重要的指令块

核心功能都在于http{}指令块里,http{}块还包含了以下指令

  • server{}指令块,对应一个站点配置,反向代理,静态资源站点
  • location{},对应一个url
  • upstream{},定义上游服务,负载均衡池

    nginx配置文件语法

  • nginx.conf是由指令和指令块组成

  • 每行语句都得有分号结束,指令和参数之间是有空格分割的
  • 指令块可以由大括号{}组织多条语句
  • nginx.conf使用#号表示注释符
  • nginx支持用 $变量名 语法规则
  • nginx支持include语句,组合多个配置文件
  • nginx部分指令支持正则表达式,如rewrite重写指令

    nginx命令行

  1. nginx启停的指令 -s参数,给nginx进程发送某种信号

    nginx #初期启动,直接输入nginx,再启动会端口冲突 nginx -s stop #停止nginx进程 nginx -s reload #平滑重启 quit 优雅停止 reopen 重新记录nginx日志

  2. 查看nginx命令帮助

    nginx -h

-?,-h:输出nginx的帮助信息
-v:列出nginx的版本号
-V:列出nginx的版本和编译参数信息
-t:检查nginx的配置文件,语法是否正确
-T:检查配置,并输出配置信息
-q:在检测配置文件期间,屏蔽非错误信息
-p:设置nginx目录前缀
-c:指定配置文件启动
-g:覆盖设置一些默认参数
-m:列出nginx所有支持的模块
-l:列出nginx目录相关信息

命令行案例

配置文件重读

  1. 检查当前的nginx进程

ps -ef | grep nginx

  1. 修改nginx.conf配置参数

配置文件中,更改该行内容,更改最后的数字
worker_processes 3;

  1. 重新加载nginx配置

nginx -s reload

nginx-master信号传递

  1. master主进程是不处理请求的,而是分配请求发给worker进程,主进程负责重启,热加载,热部署等等
  2. master是根据nginx.conf中,worker_process定义启动时创建的工作进程数
  3. 当worker运行后,master就处于一个等待的状态,等待用户的请求来临,或者系统信号
  4. 系统管理员可以发送kill指令,或者nginx -s 信号,这样的形式操控nginx