本文首先介绍Nginx几大流派(分支),然后简述Nginx核心组成部分,最后介绍在编译安装时的重要参数和核心目录。
文章目录
- 1.Nignx几大分支
- 2.Nginx组成部分:
- 3.编译安装Nginx
- 编译参数说明
- 编译中间文件介绍:
- 安装目录介绍:
- 4.源码目录介绍
- 5.conf配置文件高亮显示:
1.Nignx几大分支
1.开源版nginx.org
2.商业版:nginx.com
3.阿里巴巴的 Tengine
4.OpenResty:分为开源和商业版
首先俄罗斯人开发出了Nignx,最后发展为开源版本Nginx和商业版Nginx,有点类似Centos和RedHat。后来张玉春在Nginx基础上,扩展开发形成OpenResty,也成为一个很重要的分支。阿里巴巴最后在Nginx基础上开发了自己的Tengine。 三者用法几乎一致,而且底层都是基于最开始的Nginx核心模块,并且相互之间的一些模块可以互相使用。
2.Nginx组成部分:
Nginx就像一辆高性能的汽车,Nginx二进制可执行文件是发动机(可更换,即热部署),Nginx.conf配置文件就是驾驶舱,access.log就是行车记录仪,而error.log便是黑匣子。
3.编译安装Nginx
使用编译源码方式安装。这里不推荐其他安装方式。源码安装一方面可以获取最新的Nginx,另一方面可以方便灵活的编译不同模块到Nginx,在生产环境可能需要经常热部署升级等,这些都必须是编译源码安装。
这里我仅以Centos7为例演示安装Nginx:
- 第一步:在官网下载Nginx源码 ,
Nginx官网提供了三个类型的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版
sudo wget http://nginx.org/download/nginx-1.16.0.tar.gz
- 第二步:安装必要的一些类库和软件支持(如果已装,可跳过)
#1.安装gcc g++开发类库是否装好
ububtu平台编译环境可以使用以下指令
apt-get install build-essential
apt-get install libtool
centos平台编译环境使用如下指令
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
#2.正则表达相关PCRE
sudo apt-get install libpcre3 libpcre3-dev
centos:
yum install -y pcre pcre-devel
#3.安装openssl
ubuntu下:
apt-get install openssl
apt-get install libssl-dev
centos下:
yum -y install openssl openssl-devel
#4.安装zlib库
sudo wget
https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
tar -zxf zlib-12.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
- 第三步:解压并进入解压目录
sudo tar -zxf nginx-1.16.0.tar.gz
cd cd nginx-1.16.0
- 第四步:编译安装(老三步)
./configure --prefix=/home/zx/nginx
make
make install
- 第五步:启动和停止Nginx服务
sudo ./nginx -c /usr/local/src/nginx/conf/nginx.conf //启动
sudo /usr/local/src/nginx/sbin/nginx -s reload //平滑重启
./nginx -s stop #立即停止服务
./nginx -s quit #优雅的停止服务
./nginx -s reload #重载配置文件
./nginx -s reopen #重新开始记录日志文件
停止:
ps -ef|grep nginx
kill -QUIT 2072 //停止
kill -TERM 2132
kill -9 nginx //强制停止
重启:
kill -HUP 进程号
编译参数说明
第四步中 --prefix 可以指定安装目录,如果不指定该参数默认是/usr/local/nginx 目录。
通过下面命令可以查看更多可选编译参数:
./configure --help | more
这些参数主要分为三类:
- 1.指定一些目录
比如:–prefix 可以指定安装目录。 - 2.指定编译时使用或者排除那些模块:
其中–with开头的说明默认不会编译进nginx如果需要该模块,需要加上该参数去编译进Nginx二进制文件,–without开头则说明默认会编译进去,如果不需要,需要指定进行移除。 - 3.指定一些特殊参数:比如要打印一些debug日志等
编译中间文件介绍:
编译产生的中间文件会在objs目录中。其中最重要的是ngx_modules.c 这里边会决定nginx会将那些模块进行安装。另外nginx的运行二进制文件也会在objs中,如果我们是做nginx升级,我们不能运行make install ,而需要将nginx文件拷贝到nginx目录中覆盖原有的二进制文件。objs中的src是c语言编译产生的中间文件。
安装目录介绍:
执行make install便会安装nginx到指定目录。安装目录中的nginx.conf配置文件就是从源码的conf中拷贝的,sbin目录中则是核心的二进制执行文件。
4.源码目录介绍
上面编译安装的第三步解压后目录如下:
drwxr-xr-x 6 1001 1001 326 Aug 26 20:14 auto
-rw-r--r-- 1 1001 1001 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 1001 1001 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 1001 1001 168 Aug 26 20:14 conf
-rwxr-xr-x 1 1001 1001 2502 Apr 23 21:12 configure
drwxr-xr-x 4 1001 1001 72 Aug 26 20:14 contrib
drwxr-xr-x 2 1001 1001 40 Aug 26 20:14 html
-rw-r--r-- 1 1001 1001 1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 1001 1001 21 Aug 26 20:14 man
-rw-r--r-- 1 1001 1001 49 Apr 23 21:12 README
drwxr-xr-x 9 1001 1001 91 Aug 26 20:14 src
- auto中是一些判断操作系统支持,编译等相关的文件。
- CHANGES:是版本的更改日志(.ru是俄语版,因为作者是俄罗斯)
- conf中是示例配置文件,可方便配置,可以直接拷贝到安装目录,简化配置。
- configure脚本:是编译生成中间文件前的一个必备动作。
- contrib : 提供了语法高亮支持脚本,让vim打开时,语法高亮。需要拷贝contrib中到 本地vim目录(如果根目录没有该目录,先mkdir ~/.vim)
cp -r contrib/vim/* ~/.vim/
- man:帮助目录
- html: 有两个默认页面一个是报错后的显示
- src: 源码目录
5.conf配置文件高亮显示:
将源码目录的vim目录拷到系统用户根目录:(如果系统不存在.vim目录,先新建目录)
cp -r contrib/vim/* ~/.vim/