基础介绍
Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。
Nginx在官方测试的结果中,能够支持五万个平行连接,而在实际的运作中,可以支持二万至四万个平行链接。
安装nginx
本文中使用的是centos7 linux操作系统, 相关命令可能与centos5有所不同
直接安装
在centos7
下可以通过yum
命令直接安装编译过的nginx服务器
1 | yum install nginx -y #安装最新版本的nginx |
编译安装
在nginx
服务器中, 模块化设计是其一大特色, 在1.9.11之前的版本中, 我们都需要通过编译来添加和删除模块, 所以编译安装也是一个通点
安装环境: yum
先安装准备环境1
yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel
gcc为GNU Compiler Collection的缩写,可以编译C和C++源代码等,它是GNU开发的C和C++以及其他很多种语言 的编译器(最早的时候只能编译C,后来很快进化成一个编译多种语言的集合,如Fortran、Pascal、Objective-C、Java、Ada、 Go等。)gcc 在编译C++源代码的阶段,只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库链接(编译过程分为编译、链接两个阶段,注意不要和可执行文件这个概念搞混,相对可执行文件来说有三个重要的概念:编译(compile)、链接(link)、加载(load)。源程序文件被编译成目标文件,多个目标文件连同库被链接成一个最终的可执行文件,可执行文件被加载到内存中运行)。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。
gcc-c++也能编译C源代码,只不过把会把它当成C++源代码,后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。
automake是一个从Makefile.am文件自动生成Makefile.in的工具。为了生成Makefile.in,automake还需用到perl,由于automake创建的发布完全遵循GNU标准,所以在创建中不需要perl。libtool是一款方便生成各种程序库的工具。
pcre pcre-devel:在Nginx编译需要 PCRE(Perl Compatible Regular Expression),因为Nginx 的Rewrite模块和HTTP 核心模块会使用到PCRE正则表达式语法。
zlip zlib-devel:nginx启用压缩功能的时候,需要此模块的支持。
openssl openssl-devel:开启SSL的时候需要此模块的支持。
下载相关安装包: wget
官方网址在http://nginx.org
你可以在这个页面查看当前仍旧支持的所有版本, 戳这里
在linux
需要的目录下使用wget
命令安装, 我的位置是/root/
1
2
3wget http://nginx.org/download/nginx-1.13.1.tar.gz #下载对应文件
tar xvf nginx-1.13.1.tar.gz #x释放v报告相关信息f使用文件
cd nginx-1.13.1
编译nginx: ./configure
首先需要使用./configure
相关命令1
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/local/nginx.lock --usr=nginx --group=nginx --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
以上命令分别设置安装路径, 运行文件路径, 配置文件路径, 报告错误路径, 访问路径等等, 部分内容可以在对应的主配置文件nginx.conf
中修改。
生成文件: make
编译生成nginx, 此时使用make
命令, 会根据上一步生成的Makefile
生成对应的模块1
make
运行结果大致如下:
覆盖安装: make install
创建相应目录, 如果已有目录, nginx
主文件会覆盖之前的主文件
配置文件 nginx.conf
1 | user nobody; #启动用户 |