1、Nginx安装(自定义安装)
#安装gcc编译环境、pcre正则校验库、zlib压缩算法库、openssl证书校验库
yum -y install -y gcc pcre-devel pcre zlib zlib-devel openssl openssl-devel
#下载nginx nginx官网 https://nginx.org/en/download.html
wget https://nginx.org/download/nginx-1.22.0.tar.gz
#创建资源统一管理目录文件
cd /usr/local
mkdir -p nginx/core
mv /usr/sbin/nginx-1.22.0.tar.gz nginx/core
#解压缩
tar -xzf nginx-1.22.0.tar.gz
#进入安装环境配置
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock
2、Nginx
文件目录结构分析
#CGI(Common Gateway Interface)通用网关[接口],主要解决的问题是从客户端发送一个请求和熟虑,服务端获取到请求和数据后可以调用CGI[程序]处理及相应结果给客户端的一种标准规范
#fastcgi.conf: fastcgi相关配置
#fastcgi.conf.default: fastcgi.conf的备份文件
#fastcgi_params: fastcgi的参数文件
#fast_params.default: fastcgi_params的备份文件
#scgi_params: scgi的参数文件
#scgi_params.default: scgi_params的备份文件
#uwsgi_params: uwsgi的参数文件
#uwsgi_params.default: uwsig_params的备份文件
#mime.types: 记录的是HTTP协议中的Content-type的值和文件后缀名的对应关系
#mime.types.default: mime.types的备份文件
#nginx.conf: nginx的何昕配置文件
#nginx.conf.default: nginx.conf的备份文件
#html: 存放nginx自带的两个静态的html页面
50x.html: 访问失败后的失败页面
index.htmk: 成功访问的默认首页
#logs: 记录日志的文件,当nginx服务启动后,这里面会有access.log、error.log和nginx.pid三个文件
#sbin: 存放执行程序文件nginx
nginx是用来控制nginx的启动和停止等相关的命令
3、Nginx服务启停方式
方式一:Nginx服务信号控制
#Nginx中的master和worker进程?
nginx工作方式为一个master进程管理多个worker进程
#Nginx的工作方式
#如何获取进程的PID
1、查看/usr/local/nginx/logs/nginx.pid
2、ps -ef | grep nginx
#信号有哪些
TERM/INT 立即关闭整个服务
QUIT '优雅'的关闭整个服务
HUP 重读配置文件并使用服务对新配置项生效
USR1 重新打开日志文件,可以用来进行日志切割
USR2 平滑升级到最新版的nginx
WINCH 所有子进程不再接受处理新连接,相当于给work进程发送QUIT指令
#如何通过控制信号控制Nginx的启停等相关操作
调用命令为: kill -signal PID
signal 即为信号, PID即为获取到的master线程ID
1、发送TERM/INT信号给master进程,会将Nginx服务立即关闭
kill -TERM PID / kill -TERM `cat/usr/local/nginx/logs/nginx.pid`
kill -INT PID / kill -INT `cat/usr/local/nginx/logs/nginx.pid`
查看Nginx进程信息:ps -ef | grep nginx
root 23942 1 0 13:39 ? 00:00:00 nginx: master process ./nginx
nobody 23943 23942 0 13:39 ? 00:00:00 nginx: worker process
root 27585 1369 0 14:54 pts/0 00:00:00 grep --color=auto nginx
方式二:Nginx
的命令行控制
#此方式是通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态控制,我们可以通过nginx -h来查看都有哪些参数可以用:
#显示帮助信息
-?,-h : this help
#打印版本信息并退出
-v : show version and exit
#打印版本号信息及配置信息并退出
-V : show version and configure options then exit
#测试nginx的配置文件语法是否正确并退出
-t : test configuration and exit
#测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出
-T : test configuration, dump it and exit
#在配置测试期间禁止显示非错误消息
-q : suppress non-error messages during configuration testing
#signal信号,后面可以跟:
#stop [快速关闭,类似于TERM/INT信号的作用]
#quit[优雅的关闭,类似于QUIT信号的左右]
#reopen[重新打开日志文件类似于USR1信号的左右]
#reload[类似于HUP信号的作用]
-s signal : send signal to a master process: stop, quit, reopen, reload
#指定Nginx的prefix路径,(默认为: /usr/local/nginx)
-p prefix : set prefix path (default: /usr/local/nginx/)
#指定Nginx的错误日志路径,(默认为: /usr/local/nginx/logs/error.log)
-e filename : set error log file (default: /usr/local/nginx/logs/error.log)
#指定Nginx的配置文件路径,(默认为: /usr/local/nginx/conf/nginx.conf)
-c filename : set configuration file (default: /usr/local/nginx/conf/nginx.conf)
#用来补充Nginx配置文件,向Nginx服务指定启动时应用全局的配置
-g directives : set global directives out of configuration file
4、Nginx服务器版本升级
如果想对Nginx
的版本进行更新,或者要应用一些新的模块,最简单的做法就是停止当前的Nginx
服务,然后开启新的Nginx
服务,但是这样会导致在一段时间内,用户是无法访问服务器。为了解决这个问题,我们就需要用到Nginx
服务器提供的平滑升级功能。这个也是Nginx
的一大特点,使用这种方式,就可以使Nginx
在7*24
小时不间断的提供服务了,有以下两种方案:
方案一: 使用Nginx
服务信号完成Nginx
的升级
方案二: 使用Nginx
安装目录的make
命令完成升级
前置工作:环境准备
#1、先准备两个版本的Nginx,如:1.14.2和1.16.1
#2、使用Nginx源码安装的方式将1.14.2安装成功并正确访问
./configure
make & make install
#3、将Nginx1.16.1进行参数配置和编译,不需要进行安装。
./configuer
make
方案一:使用Nginx服务信号进行升级
第一步:将1.14.2版本的sbin
目录下的nginx
进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold
第二步:将Nginx1.16.1
安装目录编译后的objs
目录下的nginx
文件,拷贝到原来/usr/local/nginx/sbin
目录下
cd ~/nginx/core/nginx-1.16.1/objs
cp nginx /usr/local/nginx/sbin
第三步:发送信号USR2
给Nginx
的1.14.2版本对应的master
进程
kill -USR2 `more /usr/local/nginx/logs/nginx.pid.`
第四步:发送信号QUIT
给Nginx
的1.14.2版本对应的master
进程
kill -QUIT `more /usr/local/bginx/logs/nginx.oldbin`
方案二:是用Nginx
安装目录的make
命令完成升级
第一步:将1.14.2版本的sbin
目录下的nginx
进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold
第二步:将Nginx1.16.1
安装目录编译后的objs
目录下的nginx
文件,拷贝到原来/usr/local/nginx/sbin
目录下
cd ~/nginx/core/nginx-1.16.1/objs
cp nginx/usr/local/nginx/sbin
第三步:进入到安装目录,执行make upgrade
第四步:查看是否更新成功
./nginx -v
在整个过程中,其实Nginx
是一致对外提供服务的。并且当Nginx
的服务器启动成功后,我们是可以通过浏览器进行直接访问的,同时我们可以通过更改html
目录下的页面