官网地址:http://nginx.org/en/download.html。可以点击进入,看到如图所示页面:
其中红圈圈住的代表当前最新的稳定正式版本,我们也下载此版本。因为是在centos7.5上面安装,我们下载Linux版本:
下载完后,上传到服务器上面,比如我们上传的路径为 /packages。
安装前先要确定Linux的内核版本要在2.6以上,只有2.6之后才支持epool ,在此之前使用select或pool多路复用的IO模型,无法解决高并发压力的问题。通过命令uname -a 即可查看:
另外Nginx需要GCC编译器,用来编译C语言环境,Nginx不会提供二进制可执行程序,只能下载源码进行编译;
另外还需要PCRE库,是专门用来做正则表达式的,Nginx里面很多地方都用到了正则表达式,因此需要进行安装;
另外还需要zlib库,zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量;
另外还需要OpenSSL开发库,如果我们的服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它;
上面几个库都是Nginx 基础功能所必需的,为简单起见我们可以通过yum 命令统一安装:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
安装完毕后,解压nginx,在对应的目录/packages中,有我们下载的包:
tar -zxvf nginx-1.16.0.tar.gz
可以看到解压到了目录下面:
进入nginx文件夹,执行命令:
./configure
make && make install
执行完成之后nginx 运行文件 就会被安装在 /usr/local/nginx 下。
进入安装目录:
cd /usr/local/nginx
可以看到目录下有四个文件夹,conf是配置目录,html是静态资源目录,logs是日志,sbin是一些执行命令。
下面介绍几种启动方式:
#默认方式启动:
./sbin/nginx
#指定配置文件启动
./sbing/nginx -c /tmp/nginx.conf
#指定nginx程序目录启动
./sbin/nginx -p /usr/local/nginx/
介绍几种停止方式:
#快速停止
./sbin/nginx -s stop
#优雅停止
./sbin/nginx -s quit
其它命令:
# 热装载配置文件 ,不用停止可以刷新配置(一定要熟练,这是用的最多的命令)
./sbin/nginx -s reload
# 重新打开日志文件(下面单说)
./sbin/nginx -s reopen
# 检测当前使用的是哪个配置文件,配置是否正确(可以在配置文件加点乱码测试一下)(这个命令也经常使用)
./sbin/nginx -t
我们启动nginx,访问页面,查看是否启动成功:
可以看到启动成功!
注意,nginx默认使用的端口是80,如果端口已经被占据,那么需要修改默认端口!默认的配置在安装文件夹下的conf文件夹下的ngixn.conf文件中,目录为 /usr/local/nginx/conf ,修改端口:
启动可以看到端口改为8080:
除了上面最简单的安装方式之外,在执行./configure命令的时候,还可以指定一些参数,比如安装目录,构建模块等等。下面我们以基于参数的形式安装:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-debug
上面的参数中包含了安装目录,加入了http_stub_status(用来做连接数检测)模块,和http_ssl(https协议)模块,with debug表示打开debug开关。
然后执行make,
执行完后,源文件目录下有个objs文件夹,
进入这个文件夹,把其中的nginx文件替换掉安装目录下的sbin下的nginx文件,执行下面的命令:
cd objs
cp nginx /usr/local/nginx/sbin/
会出现一个是否覆盖的问题,输入y,点击回车即可。
启动完后,我们可以看到nginx有两个进程:
一个master,一个worker。master进程主要用来做热装载更新或者日志之类的。worker进程才是真正执行客户端连接的进程,为了提高性能,worker进程是可以设置成多个的。后面文章再说。
上面有个命令 ./sbin/nginx -s 是从新打开日志文件,什么意思呢?下面做个演示,首先查看我们日志目录下面的日志文件大小:
然后打开页面,连续刷新几次,再查看大小:
可以看到access.log文件变大了,那么我们把现在的日志文件备份一下,然后新建一个access.log文件:
cd /usr/local/nginx/logs/
mv access.log access.log.bak
然后新建一个文件命名为access.log:
现在再次刷新页面,然后查看哪个日志文件变大了:
发现不是新的日志文件变大了,而是老的备份文件,说明日志还是写到老文件里面去了,这是什么原因呢?
nginx把日志写入日志文件的时候,并不是根据文件路径去找文件,而是根据日志文件的句柄,而句柄中记录了使用哪个日志文件,不会因为文件的名字改变而改变。
这个时候要写使用新建的日志文件,必须使用 reopen 命令从新打开文件,相当于从新切换句柄中的日志文件引用,现在执行命令:
./sbin/nginx -s reopen
然后再刷新页面,可以看到日志写入到新文件中:
用上面这种方式可以进行日志切割备份。