Nginx之(二)Nginx安装

首先从官网上http://nginx.org/下载最新的stable version源码,当前最新版本为nginx-1.10.2.tar.gz。nginx

2.1 configure

解压以后,会发现里面有一个名为“configure”的文件:正则表达式

configure自己是一个Shell脚本,中间会调用<nginx-source-path>/auto/目录下别的脚本执行各类任务。根据不一样的用途,auto目录下面的脚本各司其职,有检查编译器版本的,有检查操做系统版本的,有检查标准库版本的,有检查模块依赖状况的,有关于安装的,有关于初始化的,有关于多线程检查的等等。configure做为一个总驱动,调用这些脚本去生成版本信息头文件、默认被包含的模块的声明代码和makefile文件,版本信息头文件和默认被包含的模块的声明代码被放置在新建立的objs目录下。算法

 

插段广告,先来普及一下有关makefile的知识。浏览器

通常来讲,不管是C仍是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动做叫作编译(compile),每一个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。而后再把大量的ObjectFile合成执行文件,这个动做叫做连接(link)安全

编译时,编译器须要保证语法的正确,函数与变量的正确。对于后者,一般是须要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要全部的语法正确,编译器就能够编译出中间目标文件。服务器

连接时,主要是连接函数和全局变量,因此,咱们可使用这些中间目标文件(O文件或是OBJ文件)来连接咱们的应用程序。连接器并无论函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,因为源文件太多,编译生成的中间目标文件太多,而在连接时须要明显地指出中间目标文件名,这对于编译很不方便,因此,咱们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。多线程

总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。若是函数未被声明,编译器会给出一个警告,但能够生成Object File。而在连接程序时,连接器会在全部的Object File中找寻函数的实现,若是找不到,那到就会报连接错误(Linker Error)。函数

Linux下的make命令用于编译源代码,可是它执行以前须要一个 makefile 文件以告诉它须要怎么样去编译和连接程序。性能

广告完毕,继续来讲Nginx。网站

 

因为咱们下载下来的是源码,须要编译后才能安装。在编译安装Nginx以前,咱们须要使用configure命令作大量“幕后”工做,包括检测操做系统内核和已经安装的软件,参数解析,中间目录生成以及根据各类参数生成的.c文件、makefile文件等。

因此,第一步须要运行configure脚本,该命令能够携带多种参数,使用“configure --help”查看参数列表:

例如:

--prefix=<path> - 指定Nginx安装路径,默认为 /usr/local/nginx。

--sbin-path=<path> -指定Nginx可执行文件安装路径,默认为<prefix>/sbin/nginx。

--conf-path=<path> -指定配置文件路径,默认为<prefix>/conf/nginx.conf。

--pid-path=<path> - 指定pid文件路径,默认为 <prefix>/logs/nginx.pid。

……等等。

 

注意,Nginx的一些模块须要依赖其余lib库,若是系统没有安装,运行configure命令的时候会报这样的错误:

./configure: error: the HTTP rewrite module requiresthe PCRE library.You can either disable the module by using--without-http_rewrite_module option, or install the PCRE library into thesystem, or build the PCRE library statically from the source with nginx byusing --with-pcre=<path> option.

通常须要提早安装三个lib库:

(1)rewrite模块依赖的PCRE

PCRE(PerlCompatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite依赖PCRE库来实现正则匹配。

(2)gzip模块依赖的 zlib

咱们在Linux中常常会用到后缀为“.gz”的文件,它们就是gzip格式的。现今已经成为Internet 上使用很是广泛的一种数据压缩格式,或者说一种文件格式。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点经常使用GZIP压缩技术来让用户感觉更快的速度。这通常是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器就将网页内容压缩后传输到来访的电脑浏览器中显示出来。通常对纯文本内容可压缩到原大小的40%。

zlib是一个通用的压缩开源库,提供了在内存中压缩和解压的函数,包括对解压后数据的校验。Nginx依赖zlib库来实现gzip格式的数据压缩。

(3)ssl 模块依赖的openssl

SSL是Secure Sockets Layer(安全套接层协议)的缩写,能够在Internet上提供秘密性传输。OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、经常使用的密钥和证书封装管理功能及SSL协议。

Nginx依赖openssl库实现https安全链接等方面的功能。


2.2 make && make install

make是Linux下的编译命令,它根据makefile文件中描述的规则来自动进行编译。

make install是Linux下的安装命令。

能够直接输入“make&& make install”一并完成编译与安装操做。默认的安装路径为“/usr/local/nginx”。

安装完毕后,输入“nginx-v”若是出现以下的版本信息,证实安装成功:

nginx version: nginx/1.10.2

使用“nginx”命令启动Nginx,浏览器输入“127.0.0.1:80”,会看到Nginx的默认页面:


2.3 经常使用命令

使用“nginx -h”可列出全部可以使用的命令列表:


经常使用命令以下:

l   nginx

启动Nginx,能够利用“-c”参数指定要使用的配置文件。

l   nginx –s stop

中止Nginx,等效于“nginx –s quit”。“-s”表明采用向 Nginx 发送信号。注:stop是快速中止nginx,可能并不保存相关信息;quit是完整有序的中止nginx,并保存相关信息。

l   nginx –s reload

重载配置,修改配置文件后须要使用该命令使之生效。

l   nginx –v

查看Nginx的版本信息。

l   nginx –t

检查配置文件是否正确。

l   nginx –c filename

指定配置文件的路径为“filename”。默认路径为“conf/nginx.conf”

l   nginx -g

临时指定一些全局配置项,以使新的配置项生效,例如:

nginx -g"pid /var/nginx/test.pid"

上面这行命令意味着会把pid文件写到/var/nginx/test.pid中。

-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,不然没法启动。就像上例那样,相似这样的配置项:pidlogs/nginx.pid,是不能存在于默认的nginx.conf中的。

另外一个约束条件是,以-g方式启动的Nginx服务执行其余命令行时,须要把-g参数也带上,不然可能出现配置项不匹配的情形。例如,若是要中止Nginx服务,那么须要执行下面代码:

nginx -g"pid /var/nginx/test.pid;" -s stop

若是不带上-g"pid /var/nginx/test.pid;",那么找不到pid文件,也会出现没法中止服务的状况。

相关文章
相关标签/搜索