Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183485
  • 博文数量: 46
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-26 14:22
个人简介

做最Low逼的DBA

文章分类

全部博文(46)

文章存档

2017年(46)

我的朋友

分类: 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


阅读(1773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~