nginx源码学习
Posted 香农随笔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx源码学习相关的知识,希望对你有一定的参考价值。
上一篇文章主要介绍了nginx在win和Linux平台上的安装。本章节主要介绍nginx源码学习方法和源码结构,以及nginx启动时main方法的位置,参数信息。后面的章节主要是linux平台,你要问为何是linux,而不是win。我只能说nginx是基于linux平台开发出来的,我也习惯了linux平台开发。
上一篇文章我讲了安装,现在打开MobaXterm,连接上nginx服务器。输入whereis nginx命令查看安装目录:
是的我的安装目录在 /usr/local/nginx。
现在我们进入这个目录,看看里面有哪些文件。
暂时先不管这些文件是做啥用的,像fastcgi_temp,proxy_temp, scgi_temp ,uwsgi_temp这些模块都是可配的,以后咱们再详细的讲解。
大家有没有看到sbin文件,对的,这里面就是我们启动nginx的地方。
先进入看看有啥:
有两个文件,一个nginx,一个nginx.old。old文件是之前为了平滑升级所备份的nginx文件。我们启动只需要nginx就行了。
ok,我们启动nginx。输入./nginx就行了。
怎么知道启动成功没有呢?输入ps -ef|grep nginx。
我们看到了一个nginx: master process 主线程,一个nginx: worker process 工作线程,这个工作线程多少是可配的,跟服务器内核数量有关。ok,如果你看到这两个线程,说明nginx已经启动。为了进一步验证,我们访问http://localhost页面,默认80端口。输入curl http://localhost。
已经访问到相关欢迎页面了,默认html文件里面index.html。
ok,到这里我们nginx已经正常启动。
接下来,我们通过gdb调试工具找到nginx启动时的main方法在哪。
还是在sbin目录下,我们输入 gdb nginx命令。
gdb调试工具是linux自带的,对于调试代码非常的方便,具体gdb信息大家可以上网看看。
ok,接下来输入 b main。
好的,看到了一行信息,file src/core/nginx.c line 198。
也就是在nginx.c文件的198行,这个地方就是main方法开始地方。不同的nginx版本这个main方法所在的行也有不一样,大家根据自己的信息来找就行了。
怎么找呢?
学习源码确实需要方法,不然会很乱,也很累。上一章讲安装,nginx网上下载的安装包我放在了/usr/local/src/nginx包里面。我们去看看。
我下载的版本是1.10.2
左边的nginx-1.10.2包是解压后并且编译过的,将这个包拷贝到win系统,放你自己计划的目录就行。我放在G:\学习日记\nginx\nginx-1.10.2。
ok,我们来找src/core/nginx.c line 198,进入G:\学习日记\nginx\nginx-1.10.2,你们按照自己的来,找到nginx.c的198行。
ok,我们找到了main方法,接下来的文章我将讲解main方法,到底nginx启动的时候做了什么事情,关于main方法里面的代码,大家可以自己先看看。
以上是关于nginx源码学习的主要内容,如果未能解决你的问题,请参考以下文章