上一篇文章主要介绍了 Nginx 在 Window 和 Linux 平台上的安装。本章节主要介绍 Nginx 源码学习方法和源码结构,以及 Nginx 启动时 main 方法的位置,参数信息。后面的章节主要是 Linux 平台,你要问为何是 Linux,而不是 Window。我只能说 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 GDB与MAIN的更多相关文章

  1. 聊聊、Nginx GDB与MAIN参数

    接着上一篇,我们学习 Nginx 的 main 方法.用 gdb 工具调试 Nginx,首先 gdb nginx.如下: gdb 调试工具有很多的命令,上一篇为了找 main 方法用了 b 命令,也就 ...

  2. gdb 调试main

    gdb 调试main带参数 gdb program start a b c//参数为a b c然后从main函数开始 r a b c//参数为a b c来运行程序

  3. 利用 gdb 探究main(int argc, char *argv[]){} 中的char *argv[]

    在 Linux 系统中编写小程序 代码如下 编译并采用gdb调试  在调试之前设置三个参数   a   bb   ccc 输入 start 执行代码到 return 0; 从这里可以看到 argc = ...

  4. 聊聊 Nginx 的反向代理

    背景 最近在优化服务基础设施这块,正好有时间写一下Nginx的体会.相信大家都听说过反向代理,一提到反向代理一定会想到Nginx.什么你没听过Nginx?那么你一定听说过Apache吧!Apache是 ...

  5. 从压测碰到的诡异断连问题聊聊Nginx的连接管理

    本文主要分享一个在压测Nginx反向代理服务过程中碰到的连接异常断开问题,包括问题的定位与复现,最后由这个实际问题引申聊一下Nginx的连接管理. 本博客已迁移至CatBro's Blog,那是我自己 ...

  6. 聊聊、Nginx 初始化错误信息

    这篇文章我们继续学习 main 方法,我们先来看看 ngx_debug_init() 这个方法. 从方法名我们也知道,debug初始化.我们先看看方法位置在哪.我们来断点在这个方法上面. Functi ...

  7. Nginx代码调试——gdb工具

    参考网上的资料,写了一个configprint模块,其功能为打印输出location配置内容,并计数访问次数. 代码链接如下:https://github.com/PaulWeiHan/nginx_m ...

  8. 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)

    俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ...

  9. unknown log format "main" in /nginx/conf/nginx.conf

    vi /nginx/conf/nginx.conf找到http{ }模块中的 log_format去掉注释,或是log_format写到了别处. 解决方法: 将log_format 写到http开头 ...

随机推荐

  1. JFinal视频教程

    最近开始录制JFinal视频教程,发布在腾讯课堂上,免费公开面向JFinal开发者,作为JFinal开发者入门学习.实际项目用遇到问题寻找解决方案的最好途径. 目前JFinal课程已经开始更新. 腾讯 ...

  2. Android笔记--BroadcastReceiver

    BroadcastReceiver(一)--用法总结 一. BroadcastReceiver简介 BroadcastReceiver是Android四大组件之一,他的作用是监听并且接受系统或者其他A ...

  3. Spark Job具体的物理执行

    即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式: 1.f(record),f作用于集合的每一条记录,每次只作用于一条记录 2.f(records),f一次性作用于 ...

  4. 激光推送报错:APNs is not available,please check your provisioning profile and certification 和 设置别名问题 app not registed, give up set tag:

    前几天,项目中用到了推送功能,就集成了激光,遇到了2个问题,就给大家分享一下, 第一个问题: 在集成的过程是按照激光的文档做的,但是最后配置完了,一运行,就打印出这么一句话, APNs is not ...

  5. python_105_类的特殊成员方法

    aa.py class C(): def __init__(self): self.name='QiZhiguang' 类的特殊成员方法: # 1. __doc__ 表示类的描述信息 class Do ...

  6. setTimeout,clearTimeout的一些好用法

    if(hidden != 1){ $.ui.showMask(); var _aaa = setTimeout(function(){ $.ui.hideMask(); },5000); } //be ...

  7. Tomcat详细安装配置

    1.首先是Tomcat的获取和安装. 获取当然得上Apache的官方网站下载,开源免费,而且带宽也足够.下载会很快. 这是两种不同的下载,一个是普通安装版本,一个是解压安装版本.使用起来是一样的,只是 ...

  8. 使用objection来模块化开发iOS项目

    转自无网不剩的博客 objection 是一个轻量级的依赖注入框架,受Guice的启发,Google Wallet 也是使用的该项目.「依赖注入」是面向对象编程的一种设计模式,用来减少代码之间的耦合度 ...

  9. FMDB中的数据处理

    [self.db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)" ...

  10. Codevs3324 新斯诺克

    题目描述 Description 斯诺克又称英式台球,是一种流行的台球运动.在球桌上,台面四角以及两长边中心位置各有一个球洞,使用的球分别为1 个白球,15 个红球和6 个彩球(黄.绿.棕.蓝.粉红. ...