Linux下安装Nginx服务
一:Nginx简介
Nginx是一个开源的高性能、轻量级的Web服务器和反向代理服务器。同时也提供了IMAP/POP3/SMTP服务。它最初由俄罗斯的程序设计师伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,其解决C10k问题(即处理数以万计并发连接的问题)。
Nginx第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日Nginx 1.0.4发布。
Nginx是一款轻量级的Web服务器,它被广泛用于构建静态资源服务器(如HTML文件、图像文件等)、负载均衡器、反向代理服务器和HTTP缓存等。并支持FastCGI、uWSGI、SCGI和HTTP等多种协议与后端应用程序进行通信。除了性能优势外,Nginx还提供了丰富的模块化功能。通过添加不同的模块,可以扩展Nginx的功能,如SSL/TLS支持、gzip压缩、URL重写、访问控制和流量限制等。此外Nginx是高性能的HTTP和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50000个并发连接数,并且支持热部署,可以做到7*24不间断运行。几个月都不需要重新启动。
总的来说,Nginx是一款功能强大、高性能的Web服务器和反向代理服务器,适用于各种规模的网站和应用程序。它非常受欢迎,并得到了许多大型网站和公司的广泛采用。
二:Nginx软件包下载
1:源码包下载(Windows或Linux)
源码包我们就可以直接推荐在官方网站下载:跳转地址;具体可以按照如下方式下载:
2:RPM包下载(Linux红帽派系)
其实Nginx的RPM包安装简单又方便,可以直接通过systemctl命令启动关闭等等操作,官方网站下载:跳转地址
下载也特别简单,直接点击需要的版本下载即可,这里我选择的是:nginx-1.22.1-1.el7.ngx.x86_64.rpm
比如我使用的版本Nginx下载,在Linux中直接使用wget下载:
wget http://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.22.1-1.el7.ngx.x86_64.rpm
三:源码包方式安装
1:Linux环境下安装
Ⅰ:依赖环境安装(若存在则忽略;但若是在内网环境则需要使用RPM方式安装上面的每一个包)
①:安装编译时依赖的gcc环境
yum -y install gcc gcc-c++ autoconf automake make
②:安装pcre,它提供nginx支持重写功能
yum -y install pcre pcre-devel
③:安装zlib,这个zlib库提供了很多压缩和解压缩的方式,nginx使用zlib对http包内容进行gzip压缩
yum -y install zlib zlib-devel make libtool
③:安装openssl,因为涉及到Https(安全套接字层密码库,用于通信加密)
yum -y install openssl openssl-devel
Ⅱ:解压之前上传的tar.gz文件(直接下载则在Linux运行:wget http://nginx.org/download/nginx-1.24.0.tar.gz)
tar -zxvf nginx-1.22.1.tar.gz
Ⅲ:生成Makefile可编译文件
cd nginx-1.22.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
其它可选参数:
--prefix=PATH:指定nginx的安装目录(默认/usr/local/nginx)
--conf-path=PATH:指定nginx.conf配置文件路径
--user=NAME:nginx工作进程的用户
--with-pcre:开启PCRE正则表达式的支持
--with-http_ssl_module:启动SSL的支持
--with-http_stub_status_module:用于监控Nginx的状态
--with-http-realip_module:允许改变客户端请求头中客户端IP地址
--with-file-aio:启用File AIO
--add-module=PATH:添加第三方外部模块
Ⅳ:编译源码并安装
make && make install
Ⅴ:测试Nginx服务
①:启动服务
/usr/local/nginx/sbin/nginx
可通过IP+80端口在浏览器访问
②:重新加载服务
/usr/local/nginx/sbin/nginx -s reload
③:停止服务
/usr/local/nginx/sbin/nginx -s stop
⑤:查看Nginx进程
ps -ef | grep nginx
⑥:查询Nginx版本
/usr/local/nginx/sbin/nginx -V
Ⅵ:Nginx配置服务
前面的nginx运行过程中,需要nginx作为系统的服务运行。但一般我们都是使用systemctl命令运行服务,执行如下命令:
注:执行此命令前面不能存在空格
cat > /lib/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
补充介绍:
Description:服务的描述
After:在网络服务启动后执行
Type:运行类型,此处为forking,表示启动一个守护进程
ExecStart:启动命令,指定Nginx可执行文件的路径
ExecReload:重载命令,用于重新加载Nginx配置
ExecStop:停止命令,用于停止Nginx服务
PrivateTmp:启用私有临时目录,使每个服务实例具有独立的临时目录
WantedBy:指定在multi-user target(多用户模式)下自动启动Nginx服务
Ⅶ:服务添加到系统启动项
systemctl enable nginx.service # 加入到开机自启动(必须执行)
systemctl disable nginx.service # 设置开机不自启
systemctl status nginx # 查询状态
systemctl start nginx # 启动
systemctl stop nginx # 关闭
systemctl restart nginx # 重启
四:RPM包方式安装
相对于源码包方式安装,RPM方式安装会简单不少,处理动态链接库的依赖问题,其它都特别简单,如下:
说明:RPM包是由源码制作而成,这里不探讨如何编译RPM包,我们直接从官方下载即可。
这里我下载此版本:wget http://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.22.1-1.el7.ngx.x86_64.rpm
Ⅰ:使用yum安装依赖(若没yum则使用rpm安装全部依赖,RPM程序包管理器说明)
yum -y install gcc gcc-c++ autoconf automake make pcre pcre-devel zlib zlib-devel make libtool openssl openssl-devel pcre2.x86_64
Ⅱ:安装Nginx的RPM包:
rpm -ivh nginx-1.22.1-1.el7.ngx.x86_64.rpm
Ⅲ:常用Nginx服务命令
systemctl enable nfginx.service # 开机自启动
systemctl disable nginx.service # 开机不自启动
systemctl status nginx # 查询状态
systemctl start nginx # 启动
systemctl stop nginx # 关闭
systemctl restart nginx # 重启
Ⅳ:其它操作
rpm -qa | grep '^nginx' # 查询Nginx是否安装
rpm -evh nginx-1.22.1-1.el7.ngx.x86_64 # 卸载Nginx(使用查询出来的安装程序名称)
rpm -qc nginx-1.22.1-1.el7.ngx.x86_64 # 查询Nginx安装后存在哪些文件
部分说明:
/etc/nginx/nginx.conf -- 配置文件
/usr/lib/systemd/system/nginx.service -- 服务注册位置
/usr/sbin/nginx -- 可执行文件
五:Nginx目录结构
Nginx文件结构比较简洁,主要包括配置文件和二进制可执行程序,这里我是按照通过安装包形式安装的Nginx文件结构说明,其它安装方式也差不多,只是文件存放位置不一样。
[root@VM-4-10-centos /]# tree /usr/local/nginx/
/usr/local/nginx/
├── client_body_temp # POST 大文件暂存目录
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型
│ ├── mime.types.default
│ ├── nginx.conf # 这是Nginx默认的主配置文件,日常使用和修改的文件(重要)
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx 可执行文件目录
│ └── nginx # Nginx 二进制可执行程序
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
.