1、Nginx是什么
Nginx (engine x) 是一款自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。
2、Nginx的优点
(1)更快
体现在两方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期,Nginx可以比其他Web服务器更快的响应请求。
(2)高扩展性
Nginx完全是由多个不同功能、不同层次、不同类型且耦合程度极低的模块组成的,也造就了Nginx庞大的第三方模块。
Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。
(3)高可靠性
Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速的“拉起”新的worker子进程提供服务。
(4)低内存消耗
一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB内存,这是Nginx支持高并发连接的基础。
(5)单机支持10万以上的并发连接
理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。
(6)热部署
master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7*24小时不间断服务的情况下,升级Nginx的可执行文件。当然,也支持不停止服务就更新配置项、更换日志文件等功能。
(7)最自由的BSD许可协议
BSD许可协议不只是允许用户免费使用Nginx,还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布。
3、Nginx的安装文件目录
如下图所示:
4、使用Nginx的必备软件
(1)GCC编译器
GCC可用来编译C语言程序,是必备的编译工具。
(2)PCRE库
PCRE(Perl兼容正则表达式)是一个函数库,该库支持正则表达式。
(3)zlib库
zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里面配置了gzip on,并指定队友某些类型的HTTP响应使用gzip来进行压缩以减少网络传输量,那么,在编译的时候必须把zlib编译进Nginx。
(4)OpenSSL开发库
如果我们的服务器不只是要支持HTTP,还需要在更安全的的SSL协议上传输HTTP,那么就需要拥有OpenSSL。如果我们想要使用MD5、SHA1等散列函数,也需要安装它。
5、安装Nginx及其必备软件
(1)安装GCC
1 下载
在GCC网站上(http://gcc.gnu.org)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 4.2.1。可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
2. 解压缩
拷贝gcc-4.1.2.tar.bz2(我下载的压缩文件)到/usr/local/src(根据自己喜好选择)下,根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
% tar zxvf gcc-4.1.2.tar.gz
或者
% bzcat gcc-4.1.2.tar.bz2 | tar xvf -
新生成的gcc-4.1.2这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。
在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。
3. 建立目标目录
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
例如,可以这样建立一个叫 /usr/local/gcc-4.1.2的目标目录:
% mkdir /usr/local/gcc-4.1.2
% cd gcc-4.1.2
以下的操作主要是在目标目录 ${objdir} 下进行。(否则会出错,后面有解释)
4. 配置
配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它选项]
例如,如果想将GCC 4.1.2安装到/usr/local/gcc-4.1.2目录下,则${destdir}就表示这个路径。
在我的机器上,我是这样配置的:
% ../gcc-4.1.2/configure --prefix=/usr/local/gcc-4.1.2 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux--with-system-zlib --enable-languages=c,c++,java
将GCC安装在/usr/local/gcc-4.1.2目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。
5. 编译
% make
6. 安装
执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):
% make install
至此,GCC 4.1.2安装过程就完成了。
(2)安装OpenSSL
(3)安装pcre
(4)安装zlib
(5)安装nginx
5、安装中可能出现的问题
(1)安装pcre
错误提示:checking build system type... configure: error: cannot guess build type; you must specify one
解决方案:加一个--build=arm-linux参数,即./configure --build=arm-linux
(2)安装nginx
错误提示:nginx: [emerg] unknown directive "stub_status" in /usr/local/openresty/nginx/conf/conf.d/ngx_metric.conf:19
解决方案:Nginx没有添加modules/ngx_http_stub_status_module.o模块,加上对应的参数,即./configure --with-http_stub_status_module
6、Nginx的启动
没有手动指定安装Nginx的目录的话,默认是在/usr/local目录下。
进入到/usr/local/nginx/sbin目录,使用命令./nginx启动nginx。然后可以使用ps -ef|grep nginx查询nginx的进程是否启动成功。
7、Nginx的基本操作
启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx
停止/重启
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)
命令帮助
[root@localhost ~]# /usr/local/nginx/sbin/nginx -h
验证配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf