Nginx源码目录介绍
本文首先介绍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 libtoolcentos平台编译环境使用如下指令
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-devcentos下:
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.gztar -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/
Nginx源码目录介绍相关推荐
- Java源码学习--00源码目录介绍
源码目录中的 rj.jar就是我们需要学习的源码所在目录,打开后发现有,com,java,javax,jdk,org,sun等不同的包 我们学习源码肯定需要排除干扰,如com,jdk,sun,or ...
- thinkPHP源码目录介绍
解压源码目录 Application 整个应用的存储代码(项目代码存储的模型.视图.控制器) Extend 第三放扩展文件的存储目录(针对没有命名空间的类) Public 域名解析的目录,也可以存储各 ...
- Redis源码解析(1)——源码目录介绍
概念 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些 ...
- linux内核源码系统调用有多少个,Linux内核源码目录介绍
Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...
- Linux内核源码目录介绍
Linux内核目录如下: arch: 不同平台体系结构的相关代码 block:设备驱动 certs:与认证和签名相关代码 crypto:内核常用压缩算法.常用加密算法等等源代码 document:描述 ...
- android framework源码目录介绍
简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...
- RK3568平台开发系列讲解(环境篇)瑞芯微原厂源码目录介绍
- SRS流媒体服务器——单机环境搭建和源码目录介绍
SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...
- Android系统源码学习——源码目录结构介绍
2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Andr ...
- Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构
目录 一.Live555介绍 1.Live555项目介绍 2.官网及帮助文档介绍 二.源码目录结构 1.UsageEnvironment 2.BasicUsageEnvironment 3.group ...
最新文章
- yjk只算弹性的不计算弹塑性_基于ANSYS Workbench的表面裂纹计算
- Mysql服务器问题(2013.3.5日发现)
- Python1217作业
- MOS和三极管不同接法对应的性能比较
- Luogu 1941 飞扬的小鸟
- CRM_MESSAGES_DISPLAY debug
- 程序安装mysql数据库_安装Mysql数据库
- Bootstrap面包屑导航
- 当Ext.js中xtype: 'checkboxfield'时,没勾选则向后台发送的数据没有字段的解决方法...
- HttpClient配置
- 从SVN服务器下载project到本地
- java Swing+mysql实现的家庭收支管理系统(个人收支录入和查询)
- 性能测试---影响性能的因素
- 二极管和稳压管的区别
- Java设计模式——工厂模式——模拟Spring
- iOS应用性能调优的建议和技巧--中高级--王朋
- 海康SDK的NET_DVR_GET_FTPCFG_V40
- C/C++ 如何设计框架
- C++ 快速学习(一)
- 554 5.7.1详细排错过程