分类: LINUX
2017-04-26 23:16:34
Nginx在Red Hat Enterprise 6下的安装指南
一:获取Nginx服务器的安装文件
1.1 下载网址
下载网址为:。当输入该网址后将会出现如下界面信息
1.2 下载界面信息解读
网页上提供了Nginx服务器三种版本的下载,分别是开发版本(Mainline version)、稳定版本(Stable version)、过期版本(Legacy versions)。
其中开发版本主要用于Nginx软件项目的研发,稳定版本即可作为web服务器投入商业应用。
1.3 下载部分各链接的具体含义
CHANGES-x.x 记录的是对应版本的功能变更日志。包括新增功能、功能的优化和功能缺陷的修复等
nginx-x.x.x 是nginx服务器的Linux版本下载链接
pgp 记录的是提供下载的版本使用PGP加密自由软件GnuPG计算后的签名,主要用于下载文件的验证
nginx/Windows-1.8.0是Nginx服务器的windows版本的下载链接
二:Nginx安装平台的准备
2.1 Nginx安装平台的选择
2.1.1 由于Nginx的poll和epoll的驱动模型是作为Linux平台上的驱动模式,并且此类驱动模型能充分利用其Nginx的性能。
2.2.2 由于目前DELL与HP服务器的升级,导致其RedHat Linux 5系列的操作系统以及无法安装在上述服务器上
综上所述:Nginx需安装在RedHat Linux 6的操作系统上
2.2 操作系统相关包的安装
2.2.1 为了编译Nginx源代码,我们需要标准的GCC编译器
2.2.2 我们还需要Automake工具,以完成自动创建Makefile工作
2.2.3 由于Nginx的一些模块需要依赖第三方库,通常有pcre库(支持rewrite模块),zlib库(支持gzip模块)和openssl库(支持ssl模块)等
三:Nginx在RedHat下的安装
3.1 Linux相关库的安装
3.1.1 本地yum源的搭建 (具体实施步骤请参考运维中心yum源搭建步骤)
1.创建yum源的目录 mkdir -R /web/yum
2.拷贝IOS文件到/web/yum目录下
cp -R /media/RHEL_6.5\ x86_64\ Disc\ 1/* /web/yum/
3.创建yum的配置文件
[root@nginx yum]# cd /etc/yum.repos.d/
[root@nginx yum.repos.d]# ll
total 4
-rw-r--r--. 1 root root 529 Oct 30 2013 rhel-source.repo
[root@nginx yum.repos.d]# mv rhel-source.repo rhel-source.repo.bak
[root@nginx yum.repos.d]# vi rhel6.repo
[rhel6]
name=rhel6
baseurl=file:///web/yum
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@nginx yum.repos.d]# sed -i "s#remote = url + '/' + relative#remote = '/web/yum' + '/' + relative#g" /usr/lib/python2.6/site-packages/yum/yumRepo.py
4.导入RPM的签名信息
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
3.1.2 安装相关库文件
[root@nginx yum.repos.d]# yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel
3.2 nginx在Linux版本下的编译与安装
说明:所有的服务器的安装必须按照如下约定的目录进行安装配置。
3.2.1 文件目录约定
1.操作系统目录的设置
[root@nginx ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 5.8G 40G 13% /
tmpfs 3.8G 224K 3.8G 1% /dev/shm
/dev/sda3 407G 3.8G 383G 1% /web --剩余空间分配为/web目录
2.nginx相关的目录设置
创建 /web/nginx_180目录
在web目录创建nginx_180目录,目录名称说明。其中180表示的是nginx-1.8.0.tar.gz这个版本的nginx
创建/web/nginx_180/nginx_compile目录
这个目录说明是用来解压相关nginx后用来编译nginx软件
创建/web/nginx_180/nginx目录
这个目录是用来存放nginx的安装目录
3.2.2 Nginx软件的安装
1.上传nginx软件
[root@nginx nginx_compile]# pwd
/web/nginx_180/nginx_compile
[root@nginx nginx_compile]# ll
total 816
-rw-r--r--. 1 root root 832104 Jul 11 11:09 nginx-1.8.0.tar.gz
2.解压nginx软件
[root@nginx nginx_compile]# tar -xvf nginx-1.8.0.tar.gz
3.解压后软件目录说明
[root@nginx nginx_compile]# cd nginx-1.8.0
[root@nginx nginx-1.8.0]# pwd
/web/nginx_180/nginx_compile/nginx-1.8.0
[root@nginx nginx-1.8.0]# ll
total 652
drwxr-xr-x. 6 1001 1001 4096 Jul 11 11:29 auto
-rw-r--r--. 1 1001 1001 249124 Apr 21 22:12 CHANGES
-rw-r--r--. 1 1001 1001 379021 Apr 21 22:12 CHANGES.ru
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 conf
-rwxr-xr-x. 1 1001 1001 2478 Apr 21 22:11 configure
drwxr-xr-x. 4 1001 1001 4096 Jul 11 11:29 contrib
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 html
-rw-r--r--. 1 1001 1001 1397 Apr 21 22:11 LICENSE
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 man
-rw-r--r--. 1 1001 1001 49 Apr 21 22:11 README
drwxr-xr-x. 8 1001 1001 4096 Jul 11 11:29 src
SRC 目录存放了Nginx软件所有的源代码。
Man 目录存放了Nginx软件的帮助文档。
Html目录存放了两个后缀名为.html的静态网页文件,这两个文件与Nginx服务器的运行相关。
Conf 目录存放的是Nginx服务器的配置文件,包含Nginx服务器的基本配置文件和对部分特性的配置文件。
Configure文件是Nginx软件的自动脚本程序。运行configure一般会完成两项工作:一是检查环境,根据环境检查结果生成C代码;二是生成编译代码需要的Makefile文件。
Auto目录存放的是各种脚本资源
4.生成makefile文件
[root@nginx nginx-1.8.0]# pwd
/web/nginx_180/nginx_compile/nginx-1.8.0
[root@nginx nginx-1.8.0]# ./configure--prefix=/web/nginx_180/nginx
--prefix指定了Nginx软件的安装路径,其他设置使用默认设置
在运行过程中./configure脚本调用auto目录中的各种脚本对系统环境以及相关的配置和设置进行检查。
注意:生成的Nginx软件的makefile文件就保存在当前的工作目录。
[root@nginx nginx-1.8.0]# pwd
/web/nginx_180/nginx_compile/nginx-1.8.0
[root@nginx nginx-1.8.0]# ll
total 660
drwxr-xr-x. 6 1001 1001 4096 Jul 11 11:29 auto
-rw-r--r--. 1 1001 1001 249124 Apr 21 22:12 CHANGES
-rw-r--r--. 1 1001 1001 379021 Apr 21 22:12 CHANGES.ru
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 conf
-rwxr-xr-x. 1 1001 1001 2478 Apr 21 22:11 configure
drwxr-xr-x. 4 1001 1001 4096 Jul 11 11:29 contrib
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 html
-rw-r--r--. 1 1001 1001 1397 Apr 21 22:11 LICENSE
-rw-r--r--. 1 root root 382 Jul 11 13:39 Makefile
drwxr-xr-x. 2 1001 1001 4096 Jul 11 11:29 man
drwxr-xr-x. 3 root root 4096 Jul 11 13:39 objs
-rw-r--r--. 1 1001 1001 49 Apr 21 22:11 README
drwxr-xr-x. 8 1001 1001 4096 Jul 11 11:29 src
5.使用make命令进行编译
注意在得到makefile的当前目录下进行源码编译
[root@nginx nginx-1.8.0]# pwd
/web/nginx_180/nginx_compile/nginx-1.8.0
[root@nginx nginx-1.8.0]# make
6.使用make install命令来安装Nginx软件
[root@nginx nginx-1.8.0]# make install
7.软件成功后的目录说明
[root@nginx nginx]# pwd
/web/nginx_180/nginx
[root@nginx nginx]# ll
total 16
drwxr-xr-x. 2 root root 4096 Jul 11 13:49 conf
drwxr-xr-x. 2 root root 4096 Jul 11 13:49 html
drwxr-xr-x. 2 root root 4096 Jul 11 13:49 logs
drwxr-xr-x. 2 root root 4096 Jul 11 13:49 sbin
conf 目录存放了Nginx的所有配置文件,其中nginx.conf文件是Nginx服务器的主配置文件。在此目录下都提供了.default结尾的默认配置文件,方便我们将配置过的.conf文件恢复到初始状态。
Html目录存放了Nginx服务器在运行过程中调用的一些html网页文件。
Logs目录,用来存放nginx服务器的日志的。
Sbin目录,就是Nginx服务器的主程序
四:Nginx的参数优化
4.1 针对Ipv4的内核参数优化
这里提及的参数是和Ipv4网络有关的Linux内核参数。我们可以将这些内核参数的值追加到Linux系统的/etc/sysctl.conf文件中。
4.1.1 net.core.netdev_max_backlog
表示当每个网络接口接收网络包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。
调整值为:net.core.netdev_max_backlog = 262144
4.1.2 net.core.somaxconn
该参数用于调节系统同时发起的TCP连接数,一般默认值是128.在客户端存在高并发请求的情况下,该默认值较小,可能导致链接超时或者重传问题。
调整值为:net.core.somaxconn = 262144
4.1.3 net.ipv4.tcp_max_orphans
该参数用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上。
调整值:net.ipv4.tcp_max_orphans = 262144
4.1.4 net.ipv4.tcp_max_syn_backlog
该参数用于记录尚未收到客户端确认信息的连接请求的最大值
调整值:net.ipv4.tcp_max_syn_backlog=262144
4.1.5 net.ipv4.tcp_timestamps
该参数用于设置时间戳,可以避免序列号的卷绕。
调整值:net.ipv4.tcp_timestamps=0
4.1.6 net.ipv4.tcp_synack_retries
该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量
调整值:net.ipv4.tcp_synack_retries = 1
4.1.7 net.ipv4.tcp_syn_retries
设置内核放弃建立连接之前发送SYN包的数量
调整值 :net.ipv4.tcp_syn_retries = 1
当修改完成后 使用sysctl –p来确保相关参数的生效
4.2 针对CPU的配置优化
4.2.1 worker_processes
该参数用来设置Nginx服务器的进程数,一般为机器总CPU核心数的1-2倍。我们这边设置为CPU的总核数
调整为:worker_processes=CPU的总核数
假设设置为 worker_processes=16;
4.2.2 worker_cpu_affinity
该指令时用来为每个进程分配CPU的工作内核。该指令的值是由几组二进制表示的。其中每一组代表一个进程,每组中的每一位表示该进程使用CPU的情况,1表示使用,0表示不使用。
根据上述worker_processes=16设置的值,那么
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;
4.3 与网络连接相关的优化
4.3.1 keepalive_timeout
该指令用于设置Nginx服务器与客户端保持连接的超时时间
调整值:keepalive_timeout 60;
该设置表示Nginx服务器与客户端连接保持活动的时间是60s,60s后服务器与客户端断开连接
4.3.2 send_timeout
该指令用于设置Nginx服务器响应客户端的超时时间。
调整值:send_timeout 10s;
该设置表示Nginx服务器与客户端建立连接后,某次会话中服务器等待客户端响应超过10s,就会自动关闭连接。
4.3.3 client_header_buffer_size
允许Nginx服务器接收较大的请求头部,可以改善服务器对客户端的支持能力
调整值:client_header_buffer_size 4K;
4.3.4 multi_accept
该指令用于配置Nginx服务器是否尽可能多接收客户端的网络连接请求,默认值为off。
调整值:multi_accept on;
4.4 与事件驱动模型的配置优化
4.4.1 use
Use指令用于指定Nginx服务器使用的事件驱动模型
调整值:use epoll;
4.4.2 worker_connections
该指令用于设置Nginx服务器的每个工作进程允许同时连接客户端的最大数量
调整值:worker_connections 65535;
此指令的赋值与Linux操作系统中进程可以打开的文件句柄数量有关系。可以使用以下命令将open file resource limit的值设为2390251
[root@nginx sbin]# echo "2390251" > /proc/sys/fs/file-max
[root@nginx sbin]# cat /proc/sys/fs/file-max
2390251
[root@nginx sbin]# sysctl –p
这样,Nginx的worker_connections指令赋值为65535就没问题了。
五:Nginx服务的启动与停止
5.1 nginx服务的启动
[root@nginx sbin]# pwd
/web/nginx_180/nginx/sbin
[root@nginx sbin]# ./nginx
[root@nginx sbin]# ps -ef|grep nginx
root 17521 1 0 15:41 ? 00:00:00 nginx: master process ./nginx
nobody 17522 17521 0 15:41 ? 00:00:00 nginx: worker process
通过进程我们可以看到nginx的进程,但是由于我们设置的worker_processes目前为1 所以只看到了一个worker processes进程
通过log目录下面的文件,我们可以看到nginx 主进程的进程号
[root@nginx logs]# pwd
/web/nginx_180/nginx/logs
[root@nginx logs]# ll
total 4
-rw-r--r--. 1 root root 0 Jul 11 15:41 access.log
-rw-r--r--. 1 root root 0 Jul 11 15:41 error.log
-rw-r--r--. 1 root root 6 Jul 11 15:41 nginx.pid
[root@nginx logs]#cat nginx.pid
17521
如果输入部署服务器的IP,出现如下界面就证明其部署成功:
5.2 nginx服务的关闭
ps -ef | grep nginx
从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx