以下准备工作理论部分看不懂不要紧,只要记住安装几个包准备几个目录就行。
首先需要一个内核为linux2.6及以上版本的操作系统,可以用uname -a
命令来查询Linux内核版本。
1)GCC编译器
GCC可以用来编译C语言程序,可以使用yum方式安装GCC,如
而nginx中也会用到C++,所以这时候需要用到G++编译器。
2)PCRE库
PCRE是由Philip Hazel开发的函数库,该库支持正则表达式。如果我们在配 置文件 nginx.conf 里使用了正则表达式,那么编译nginx时就必须把PCRE库 编译进nginx 。
3)zlib库
zlib库对于HTTP包内容做gzip格式压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,那么,在编译时就必须把zlib编译进nginx。
4)Open SSL
如果我们服务器不只要支持HTTP,还需要在SSL协议传输http,那么就需要OpenSSL了。
要使用nginx,还需要在linux文件系统上准备以下目录。
1) nginx源代码存放目录
该目录放置nginx源码文件,已及第三方或我们自己写的模块源代码文件。
2)nginx编译阶段产生的中间文件存放的目录
该目录用于放置在configure命令执行后所生成的源文件及目录,以及make命令执行后生成的目标文件和最终连接成功的二进制文件。默认情况下,configure命令会将该目录命名为objs,并放在nginx源代码目录下。
3)部署目录
该目录存放实际nginx服务运行期间所需要的二进制文件,配置文件等。默认情况下该目录为,/usr/local/nginx
4)日志文件存放目录
日志文件通常比较大,当研究,当研究nginx底层架构时,需要打开debug级别的日志,这个级别的日志非常详细,会导致日志文件大小增长的极快,需要预先分配一个拥有更大磁盘空间的目录。
这里面说一种最常用的参数配置,需要修改 /etc/sysctl.congf来更改内核参数,再然后执行sysctl -p使参数生效,永久生效。
可以在nginx官网获取nginx源码包。将下载的nginx源码压缩包放置在准备好的nginx源代码目录里(Windows下的同学可以通过FileZillaClient将源码包从Windows下挪到linux系统中),然后解压。
其实编译安装nginx超级简单,三条命令,最简单的编译方式就能安装了。
configure 命令至关重要大家可以自己在这儿学习尝试。
在linux中,需要使用命令行来控制nginx服务器的启动与停止、重载配置文件、回滚日志文件、平滑升级等行为。默认情况下,nginx被安装在目录/usr/local/nginx/中,其二进制文件路径为/usr/local/ngix/sbin/nginx,配置文件路径/usr/local/nginx/conf/nginx.conf。当然,可以通过configure执行时将他们装在不同的目录。
1) 默认启动方式
直接执行nginx二进制程序。
这时,会读取默认路径下的配置文件:/usr/local/nginx/conf/nginx.conf。
2) 另行制定配置文件的启动方式
使用-c参数指定配置文件。如:
这时,会读取-c参数后指定的nginx.conf配置文件来启动nginx。
3) 另行指定安装目录的启动方式
使用-p参数指定nginx的安装目录。如:
4) 另行指定全局配置项的启动方式
可以通过-g参数临时指定一下全局配置项,以使新的配置项生效。如:
上面这行命令意味着会把pid文件写到/var/nginx/test.pid中。
5) 测试配置信息是否有错误
在不启动nginx的情况下,使用-t参数仅测试配置文件是否有错误。
执行结果显示配置是否正确。
6) 在测试配置阶段不输出信息
测试配置选项时,使用-q参数可以不把error级别以下的信息输出到屏幕。
7)显示版本信息
使用-v参数显示nginx的版本信息
/usr/local/nginx/sbin/nginx -v
8)显示编译阶段的参数
使用-V参数除了可以显示nginx版本信息之外,还可以显示配置编译阶段的信息,如GCC编译器的版本、操作系统版本、执行configure时的参数等
9)快速停止服务
使用-s stop可以强制停止nginx服务。-s参数其实是告诉nginx程序向正在运行的nginx服务发送信号量,nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来关闭nginx服务
实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT信号,效果是一样的。例如,先通过ps命令来查看nginx master 的进程ID:
接下来直接通过kill命令来发送信号
或者:
10) “优雅”的停止服务
如果希望nginx服务可以正常地处理完当前所有请求再停止服务,那么可以使用-s quit 参数来停止服务。如:
该命令与快速停止nginx服务是有区别的。当快速停止服务时,worker进程与master进程在收听到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连续,然后把当前正在处理的连接全部处理完,最后再退出进程。
11)使运行中的nginx重读配置并生效
使用-s reload 参数可以使运行中的nginx服务重新加载nginx.conf文件。如:
12)日志文件回滚
使用 -s reopen 参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其它目录中进行备份,再重新打开时就会生成新的日志文件。这个功能使得日志文件不至于过大。如: