Linux下安装Nginx与版本升级【nginx-1.24.0】
- 六、Nginx环境准备
-
- 6.1.Nginx版本
- 6.2.获取Nginx源码
- 6.3.准备服务器系统
-
- 6.3.1.环境准备
- 6.3.2.确认centos的内核
- 6.3.3.确保centos能联网
- 6.3.4.确认关闭防火墙
- 6.3.5.确认停用selinux
- 七、Nginx安装方式【源码安装和yum安装】
-
- 7.1.Nginx源码安装需要提前准备
-
- 7.1.1.GCC编译器
- 7.1.2.PCRE
- 7.1.3.zlib
- 7.1.4.OpenSSL
- 7.1.5.警告时缺少安装包
- 7.2.方案一:Nginx的源码安装
-
- 7.2.1.进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载
- 7.2.2.将下载的资源进行包管理
- 7.2.3.解压缩
- 7.2.4.进入资源文件中,发现configure
- 7.2.5.指定编译参数,编译Nginx复杂安装
- 7.2.6.编译&安装
- 7.2.7.启动Nginx
- 7.2.8.测试
- 7.3.方案二:yum安装【默认安装最新版】
-
- 7.3.1.官方安装步骤
- 7.3.2.安装yum-utils工具
- 7.3.3.添加yum源文件
- 7.3.4.查看是否安装成功
- 7.3.5.使用yum进行安装
- 7.3.6.查看nginx的安装位置
- 7.3.7.启动测试
- 7.4.卸载nginx
-
- 7.4.1.步骤一:需要将nginx的进程关闭
- 7.4.2.步骤二:将安装的nginx进行删除
- 7.4.3.步骤三:将安装包之前编译的环境清除掉
- 八、Nginx目录结构分析
-
- 8.1.Nginx目录结构
- 8.2.nginx所有配置文件目录
- 8.3.nginx.conf
- 8.4.Nginx基础配置文件nginx.conf 解读
- 九、Nginx服务器版本升级和新增模块
-
- 9.1.环境准备
-
- 9.1.1.先准备两个版本的Nginx分别是 1.22.1和1.24.0
- 9.1.2.使用Nginx源码安装的方式将1.22.1版本安装成功并正确访问
- 9.1.3.将Nginx1.24.0进行参数配置和编译,不需要进行安装。
- 9.2.方案一:使用Nginx服务信号进行升级
-
- 9.2.1.将1.22.1版本的sbin目录下的nginx进行备份
- 9.2.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来`/usr/local/nginx/sbin`目录下
- 9.2.3.发送信号USR2给Nginx的1.22.1版本对应的master进程
- 9.2.4.发送信号QUIT给Nginx的1.22.1版本对应的master进程
- 9.3.方案二:使用Nginx安装目录的make upgrade命令完成升级
-
- 9.3.1.将1.22.1版本的sbin目录下的nginx进行备份
- 9.3.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来`/usr/local/nginx/sbin`目录下
- 9.3.3.进入到安装目录,执行`make upgrade`
- 9.3.4.查看是否更新成功
- 十、Nginx安装成系统服务
-
- 10.1.创建脚本
- 10.2.服务脚本内容
- 10.3.进行权限设置
- 10.4.开机启动
- endl
六、Nginx环境准备
6.1.Nginx版本
Nginx的官方网站为: http://nginx.org
Nginx的官方下载网站为http://nginx.org/en/download.html
6.2.获取Nginx源码
http://nginx.org/download/
打开上述网站,就可以查看到Nginx的所有版本,选中自己需要的版本进行下载。
6.3.准备服务器系统
6.3.1.环境准备
FinalShell SSH工具官网:http://www.hostbuf.com/
FinalShell SSH工具官网下载:http://www.hostbuf.com/t/988.html
Centos官网:https://www.centos.org/download/
MobaXterm官网:https://mobaxterm.mobatek.net/
MobaXterm官网下载:https://mobaxterm.mobatek.net/download.html
6.3.2.确认centos的内核
准备一个内核为2.6及以上版本的操作系统,因为linux2.6及以上内核才支持epoll,而Nginx需要解决高并发压力问题是需要用到epoll
# 查询linux的内核版本 uname -a
6.3.3.确保centos能联网
ping www.baidu.com
6.3.4.确认关闭防火墙
关闭的方式有如下两种:
# 关闭运行的防火墙,系统重新启动后,防火墙将重新打开 systemctl stop firewalld # 永久关闭防火墙,,系统重新启动后,防火墙依然关闭 systemctl disable firewalld # 查看防火墙状态 systemctl status firewalld
6.3.5.确认停用selinux
selinux(security-enhanced linux),美国安全局对于强制访问控制的实现,在linux2.6内核以后的版本中,selinux已经成功内核中的一部分。可以说selinux是linux史上最杰出的新安全子系统之一。虽然有了selinux,我们的系统会更安全,但是对于我们的学习Nginx的历程中,会多很多设置,所以这块建议大家将selinux进行关闭。
# 查看状态 sestatus
如果查看不是disabled状态,我们可以通过修改配置文件来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。
vim /etc/selinux/config # 重启系统 reboot
七、Nginx安装方式【源码安装和yum安装】
7.1.Nginx源码安装需要提前准备
7.1.1.GCC编译器
Nginx是使用C语言编写的程序,因此想要运行Nginx就需要安装一个编译工具。
GCC就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。
# 安装gcc yum install -y gcc # 查看gcc是否安装成功 gcc --version
7.1.2.PCRE
Nginx在编译过程中需要使用到PCRE库(perl Compatible Regular Expressoin 兼容正则表达式库),因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。
# 安装 PCRE库 yum install -y pcre pcre-devel rpm -qa pcre pcre-devel
7.1.3.zlib
zlib库提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-devel
yum install -y zlib zlib-devel rpm -qa zlib zlib-devel
7.1.4.OpenSSL
-
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。
-
SSL:Secure Sockets Layer安全套接协议的缩写,可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的
保密性和可靠性 。- -
在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库,所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。
yum install -y openssl openssl-devel rpm -qa openssl openssl-devel
上述命令,一个个来的话比较麻烦,我们也可以通过一条命令来进行安装
# 一条命令来进行全部安装 yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc --version rpm -qa pcre pcre-devel zlib zlib-devel openssl openssl-devel
7.1.5.警告时缺少安装包
安装gcc
yum -y install gcc
checking for OS + Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... not found ./configure: error: C compiler cc is not found
安装perl库
yum install -y pcer-devl
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.
安装zlib库
yum install -y zlib zlib-devel
./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option.
7.2.方案一:Nginx的源码安装
7.2.1.进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载
yum -y install wget wget http://nginx.org/download/nginx-1.24.0.tar.gz
7.2.2.将下载的资源进行包管理
mkdir -p /app/nginx/core mv nginx-1.24.0.tar.gz /app/nginx/core
7.2.3.解压缩
cd /app/nginx/core tar -zxvf nginx-1.24.0.tar.gz
7.2.4.进入资源文件中,发现configure
cd /app/nginx/core/nginx-1.24.0
7.2.5.指定编译参数,编译Nginx复杂安装
./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 --with-http_gzip_static_module --with-http_ssl_module --with-stream
7.2.6.编译&安装
make & make install
7.2.7.启动Nginx
进入安装好的目录 /usr/local/nginx/sbin
cd /usr/local/nginx/sbin ./nginx -V 查看版本详细信息 ./nginx 启动 ./nginx -s stop 快速停止 ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求 ./nginx -s reload 重新加载配置
7.2.8.测试
7.3.方案二:yum安装【默认安装最新版】
官网:http://nginx.org/en/docs/install.html
RHEL and derivatives:http://nginx.org/en/linux_packages.html#RHEL
使用源码进行简单安装,我们会发现安装的过程比较繁琐,需要提前准备GCC编译器、PCRE兼容正则表达式库、zlib压缩库、OpenSSL安全通信的软件库包,然后才能进行Nginx的安装。
7.3.1.官方安装步骤
RHEL and derivatives:http://nginx.org/en/linux_packages.html#RHEL
RHEL and derivatives
This section applies to Red Hat Enterprise Linux and its derivatives such as CentOS, Oracle Linux, Rocky Linux, AlmaLinux.
Install the prerequisites:
sudo yum install yum-utils
To set up the yum repository, create the file named
vim /etc/yum.repos.d/nginx.repo
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:
# 切换成主线版本,暂时不需要 sudo yum-config-manager --enable nginx-mainline
To install nginx, run the following command:
sudo yum install nginx
When prompted to accept the GPG key, verify that the fingerprint matches
7.3.2.安装yum-utils工具
sudo yum install -y yum-utils
7.3.3.添加yum源文件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
7.3.4.查看是否安装成功
yum list | grep nginx
7.3.5.使用yum进行安装
yum -y install nginx
7.3.6.查看nginx的安装位置
whereis nginx
7.3.7.启动测试
cd /usr/sbin ./nginx
7.4.卸载nginx
7.4.1.步骤一:需要将nginx的进程关闭
# 先看下nginx是否在运行中 ps aux | grep nginx # 如果在运行中,则停止 ./nginx -s stop 或者直接杀死进程 pkill nginx或 kill -9 进程号
7.4.2.步骤二:将安装的nginx进行删除
cd ~ # 找到所有nginx有关文件 find / -name nginx* # 删除有关nginx的文件(linux中一切都文件) rm -rf /usr/local/nginx
7.4.3.步骤三:将安装包之前编译的环境清除掉
cd /app/nginx/core/nginx-1.24.0 make clean # 卸载nginx的有关依赖 yum remove nginx
八、Nginx目录结构分析
8.1.Nginx目录结构
# 安装tree工具展示目录结构 yum -y install tree # 查看centos系统上的文件目录结构 tree /usr/local/nginx # 显示所有文件和目录 tree /usr/local/nginx -a
8.2.nginx所有配置文件目录
[root@192 sbin]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp ├── conf # 用来存放配置文件相关的 │ ├── fastcgi.conf # fastcgi相关配置文件 │ ├── fastcgi.conf.default # fastcgi.conf的备份文件 │ ├── fastcgi_params # fastcgi的参数文件 │ ├── fastcgi_params.default # fastcgi的参数备份文件 │ ├── koi-utf │ ├── koi-win │ ├── mime.types # 媒体类型,记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系 │ ├── mime.types.default # mime.types的备份文件 │ ├── nginx.conf # 这个是Nginx的核心配置文件 │ ├── nginx.conf.default # nginx.conf的备份文件 │ ├── scgi_params # scgi的参数文件 │ ├── scgi_params.default # scgi的参数备份文件 │ ├── uwsgi_params # uwsgi的参数文件 │ ├── uwsgi_params.default # uwsgi的参数备份文件 │ └── win-utf # koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码 ├── fastcgi_temp ├── html # 存放nginx自带的两个静态的html页面 │ ├── 50x.html # 访问失败后的失败页面 │ └── index.html # 成功访问的默认首页 ├── logs # 记录入门的文件,当nginx服务器启动后,这里面会有 access.log error.log 和nginx.pid三个文件出现 │ ├── access.log # 访问日志 │ ├── error.log # 错误日志 │ └── nginx.pid # nginx进程的PID ├── proxy_temp ├── sbin # nginx的主程序 │ └── nginx # nginx是用来控制Nginx的启动和停止等相关的命令 ├── scgi_temp └── uwsgi_temp
# 查看Nginx的PID more /usr/local/nginx/logs/nginx.pid # 查看日志 tail -f /usr/local/nginx/logs/access.log tail -f /usr/local/nginx/logs/error.log
8.3.nginx.conf
Nginx的核心配置文件默认是放在
vi /usr/local/nginx/conf/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
8.4.Nginx基础配置文件nginx.conf 解读
# 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 1; # 默认为1,表示开启一个业务进程 # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 sendfile on; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; include nginx_gzip.conf; # server块,是Nginx配置和虚拟主机vhost相关的内容 server { # 虚拟主机配置 listen 80; # 监听端口号80 server_name localhost; # 域名、主机名 # location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理 location / { # 匹配路径 root html; # 文件根目录 index index.html index.htm; # 默认页名称 } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } }
nginx_gzip.conf
# Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length gzip_buffers 4 16K; #缓存空间大小 gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本 gzip_vary on; #往头信息中添加压缩标识 gzip_disable "MSIE [1-6]."; #对IE6以下的版本都不进行压缩 gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件
gzip on; gzip_types *; gzip_comp_level 6; gzip_min_length 1024; gzip_buffers 4 16K; gzip_http_version 1.1; gzip_vary on; gzip_disable "MSIE [1-6]."; gzip_proxied off;
九、Nginx服务器版本升级和新增模块
需求:Nginx的版本最开始使用的是nginx-1.22.1,由于服务升级,需要将Nginx的版本升级到nginx-1.24.0,要求Nginx不能中断提供服务。
为了应对上述的需求,这里我们给大家提供两种解决方案:
方案一:使用Nginx服务信号完成Nginx的升级
方案二:使用Nginx安装目录的make命令完成升级
9.1.环境准备
9.1.1.先准备两个版本的Nginx分别是 1.22.1和1.24.0
9.1.2.使用Nginx源码安装的方式将1.22.1版本安装成功并正确访问
# 进入安装目录,指定编译参数,按照自己需求 ./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 --with-http_gzip_static_module --with-http_ssl_module --with-stream
make && make install
9.1.3.将Nginx1.24.0进行参数配置和编译,不需要进行安装。
# 进入安装目录,指定编译参数,按照自己需求 ./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 --with-http_gzip_static_module --with-http_ssl_module --with-stream
# 不需要进行安装,直接make make
9.2.方案一:使用Nginx服务信号进行升级
9.2.1.将1.22.1版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin mv nginx nginxold
9.2.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin 目录下
cd /nginx/core/nginx-1.24.0/objs cp nginx /usr/local/nginx/sbin
9.2.3.发送信号USR2给Nginx的1.22.1版本对应的master进程
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
9.2.4.发送信号QUIT给Nginx的1.22.1版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
9.3.方案二:使用Nginx安装目录的make upgrade命令完成升级
9.3.1.将1.22.1版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin mv nginx nginxold
9.3.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin 目录下
cd /nginx/core/nginx-1.24.0/objs cp nginx /usr/local/nginx/sbin
9.3.3.进入到安装目录,执行make upgrade
make upgrade
9.3.4.查看是否更新成功
cd /usr/local/nginx/sbin ./nginx -v
十、Nginx安装成系统服务
10.1.创建脚本
vi /usr/lib/systemd/system/nginx.service
10.2.服务脚本内容
[Unit] Description=nginx web service Documentation=http://nginx.org/en/docs/ After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=default.target
[Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式ExecStartpre是检查配置文件 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
10.3.进行权限设置
chmod 755 /usr/lib/systemd/system/nginx.service
10.4.开机启动
# 重新加载系统服务 systemctl daemon-reload # 启动服务 systemctl start nginx #停止 systemctl stop nginx #重启 systemctl restart nginx #重新加载配置文件 systemctl reload nginx # 查看nginx状态 systemctl status nginx # 开机启动 systemctl enable nginx.service # 查看nginx是否启动 ps -ef | grep nginx