nginx源码学习(二)
来源:互联网 发布:mysql 重启服务 编辑:程序博客网 时间:2024/06/05 17:04
上一篇文章主要介绍了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源码学习(二)
- nginx 源码学习笔记(二)
- nginx源码学习(二)ngx_init_cycle(&init_cycle)函数解析
- nginx 源码学习笔记(二)——nginx精粹-模块
- nginx 源码学习笔记(二)——nginx精粹-模块
- nginx 源码学习笔记(二)——nginx精粹-模块
- Nginx源码学习(第零章):nginx安装
- nginx源码学习(一)
- nginx源码学习(三)
- nginx源码学习(四)
- nginx源码学习(五)
- nginx源码学习(六)
- nginx-0.8.38源码探秘(二)
- Nginx学习笔记(二)
- nginx 源码学习笔记(二十)—— event 模块(一) ——初始化
- nginx 源码学习笔记(二十二)—— event 模块(三) ——epoll模块
- nginx 源码学习笔记(二十三)—— event 模块(四) ——timer红黑树
- nginx 源码学习笔记(二十)—— event 模块(一) ——初始化
- spring揭秘----(1)
- TCP中的四个计时器
- 数字限时增长效果实现:numberGrow.js------遇到的产品提的要求
- 欢迎使用CSDN-markdown编辑器
- 使用清华tuna下载anaconda安装ipython notebook
- nginx源码学习(二)
- C语言 字符串截取
- 123. Best Time to Buy and Sell Stock III
- hdu 1839 Delay Constrained Maximum Capacity Path 二分+最短路
- 关于java中AWT和Swing之间的区别鱼联系?
- Ansible 系列之 Ad-Hoc介绍及使用
- Django中关于根据配置生成SQL语句的问题
- Python 异常处理 try/except
- MyBatis 官方文档学习2---XML 映射配置文件