安装nginx服务器

基础介绍

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
2
yum install nginx -y #安装最新版本的nginx
systemctl start nginx #centos7替代service命令

编译安装

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
3
wget 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中修改。
configure

生成文件: make

编译生成nginx, 此时使用make命令, 会根据上一步生成的Makefile生成对应的模块

1
make

运行结果大致如下:
make

覆盖安装: make install

创建相应目录, 如果已有目录, nginx主文件会覆盖之前的主文件

配置文件 nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
user  nobody; #启动用户
worker_processes 1; #启动进程数量
events { #设置网络连接
worker_connections 1024; #设置最大并发数
}
http { #http模块, 每个http模块包含多个server块, 用于监听不同的域名和端口请求,每个server块包含多个location块, server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
sendfile on; #是否调用 sendfile 函数来输出文件, 避免用户缓冲区和内核缓冲区之间的拷贝
keepalive_timeout 65; #超时时长
#gzip on; #gzip压缩
server { #设置一个虚拟主机, 监听端口
listen 80; #监听80端口
server_name localhost; #当前虚拟主机的名称
location / { #拦截 / 目录下所有的请求
root html; #root是访问文件的真实路径, 可以是绝对路径或相对路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html; #服务器50x错误
location = /50x.html {
root html;
}
}
}