八九月份找好工作之后,着实懒散了一段时间。现在回想起来,九月份没有做一件有意义的事情,成天都是胡思海想。现在工作基本上定下来了,打算这段时间直到毕业,好好学习几个方面的知识:
- 后台开发
- 数据存储
后台开发上主要是打算吃透nginx。为了达到这个目的,这段时间会写一系列的nginx源码剖析的文章。由于水平实在有限,可能会写相当长的时间,并且写的时候也会有许多问题。不过我总是会尽自己最大的努力的。
想起来,第一次尝试看nginx是在一年前了。时间过的很快,虽然一年过去了,还是有很多不懂的地方,因此写这个系列的博文主要还是想督促自己把它看透。
nginx是一个轻量级的web服务器。它性能好,设计优雅,因此无论从功能实现,还是架构设计上都值得我们研读。这篇博文从main函数开始。
main函数是服务器启动的入口,总的来说,main主要是做了两件事情。
- 初始化服务器的一些全局变量
- 启动各个IO事件进程
对于初始化任务,主要都是在ngx_init_cycle函数中完成。这个函数主要是完成对ngx_cycle_t结构体的初始化。Nginx所有动作都是围绕着ngx_cycle_t结构体进行的。Nginx的高度灵活性,主要就是来自于它的高可配置性,也就是说,在不需要改变源代码,只需要改变配置文件的情况下,就可以实现不同的功能。这是系统设计中的一个很重要的方法。而ngx_cycle_t结构体就是和可配置性息息相关的。
可以说,ngx_cycle_t是配置文件通往nginx实际运行的桥梁,配置文件可以通过改