Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一)

2024-06-04 9572阅读

1. Nginx简介

Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个非常流行的开源 Web 服务器软件。它是由俄罗斯程序员 Igor Sysoev 开发的,最初是为了解决在高并发场景下的C10k 问题(即一个服务器进程只能处理 10,000 个并发连接)的限制。Nginx 以其高性能、稳定性、丰富的功能集、简单的配置以及低资源消耗而被广泛使用

nginx为什么能支持大并发?

Nginx 使用一个事件驱动的异步非阻塞 I/O 模型,默认使用 epoll 模型,这使得它在处理大量并发连接时表现非常出色。此外,Nginx 还支持worker进程,可以有效地分配资源并提高性能。

nginx的市场占用率

https://w3techs.com/technologies/cross/web_server/ranking

Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第1张

nginx官网

http://nginx.org

nginx官方文档 (重要! 很多配置可以查找官方说明)

https://nginx.org/en/docs/

2. Nginx的应用场景

在企业生产中,nginx的主要应用场景在四个方面:

  • 静态资源服务

    用来部署图片、css、html等静态资源

    • 代理服务

      作为统一入口或代理入口,进行服务转发、负载均衡等

      • 安全控制

        做多个服务的入口,将入口部署ssl证书,以此实现服务的加密控制,而不用在每个后台服务部署证书

        • 代理缓存

          将动态请求的资源在nginx中进行缓存,下次请求时直接从nginx获取,就不用再走后台服务,以此提高用户的访问速度

          后续我们从上述4个方面对nginx的应用进行逐步学习,如果对nginx有兴趣的同学,可以关注专栏,以及时接收到更新通知。

          3. Nginx安装

          nginx支持2种部署方式:

          • yum工具安装
          • 安装包安装

            以下我们分别讲解

            3.1 yum工具安装

            1、设置nginx yum源

            在官网:https://nginx.org/en/linux_packages.html#RHEL/CentOS中有关于yum源的说明

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第2张

            所以我们可以创建nginx.repo文件,设置官方yum源,也可以用国内厂商,如阿里云的yum源,这里以官网yum源为例

            创建nginx.repo文件:

            cd /etc/yum.repos.d/
            vim 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
            

            如果是mac m1,可以再配置下arm架构的镜像源,直接执行如下指令即可

            wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
            

            2、检查yum源配置完成

            yum makecache
            yum repolist
            

            这里我以mac m1的执行效果为例,可以看到更新了nginx的yum源

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第3张

            3、安装nginx

            yum install nginx -y
            

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第4张

            4、查看nginx版本

            nginx -V
            

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第5张

            5、启动nginx

            nginx
            

            关闭nginx指令

            # 强制退出,不管有没有正在处理的请求
            nginx -s stop
            # 优雅退出,等待正在执行的转发执行完成后再退出
            nginx -s quit
            # 重启
            nginx -s reload
            

            通过yum安装的nginx的默认安装路径为:/etc/nginx,日志文件默认路径为:/var/log/nginx

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第6张

            3.2 安装包安装

            1、准备源码包:https://nginx.org/en/download.html

            选择对应的版本下载即可

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第7张

            或者也可以通过指令下载

            wget http://nginx.org/download/nginx-1.24.0.tar.gz
            

            2、上传到服务器,并解压

            tar xf nginx-1.24.0.tar.gz
            

            3、准备依赖环境

            yum install -y openssl-devel pcre-devel gcc
            

            4、添加nginx用户

            useradd nginx -m -s /sbin/nologin
            

            5、预编译,在nginx目录下执行

            –prefix 指定nginx安装目录,不指定默认为/usr/local/nginx

            –sbin-path 指定nginx可执行文件安装目录,默认值

            /sbin/nginx

            –user 运行程序的用户

            –group 运行程序的用户组

            –with 需要添加的nginx模块

            –modules-path 设置模块安装目录路径

            –conf-path 指定配置文件路径,默认值

            /conf/nginx.conf

            –error-log-path 指定错误日志路径

            –builddir 设置编译目录,会将编译后生成的文件写入到这个目录中

            –modules-path 设置安装拓展模块的文件目录

            ./configure --prefix=/usr/local/nginx --sbin-path=/bin/ --user=nginx --group=nginx --withhttp_ssl_module --withhttp_stub_status_module --withhttp_gzip_static_module
            

            检查是否安装成功

            # 检查上一条命令执行结果,如果是0则执行成功,如果不是0则说明执行失败
            echo $?
            

            6、安装nginx

            make && make install
            

            7、检查nginx版本

            ./bin/nginx -V
            

            8、启动nginx

            ./bin/nginx
            

            9、检查nginx端口

            netstat -lntup | grep nginx
            

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第8张

            4. nginx访问

            nginx的默认端口是80, 如果是虚拟机安装的,记得开通虚拟机的80端口,或者关闭防火墙

            # 查询22端口是否开放
            firewall-cmd --query-port=80/tcp
            # 开启端口
            firewall-cmd --add-port=80/tcp --permanent
            # 开启后重新加载
            firewall-cmd --reload
            

            访问虚拟机ip:80端口即可访问到nginx, 因为http默认80端口,所以可以省略端口访问:

            Nginx快速入门:Nginx应用场景、安装、部署及设置开机自启(一) 第9张

            5. 开机自启

            yum安装的nginx会自动创建systemctl脚本,可以直接加入开机自启

            systemctl enable nginx
            

            如果无法执行,可以先创建脚本

            vim /lib/systemd/system/nginx.service
            

            脚本内容

            [Unit]
            Description=nginx service
            After=network.target 
               
            [Service] 
            # 后台运行
            Type=forking 
            # 启动指令
            ExecStart=/usr/local/nginx/sbin/nginx
            # 重启指令
            ExecReload=/usr/local/nginx/sbin/nginx -s reload
            # 强制退出指令
            ExecStop=/usr/local/nginx/sbin/nginx -s quit
            # 给服务分配独立的临时空间
            PrivateTmp=true 
               
            [Install] 
            WantedBy=multi-user.target
            

            6. 总结

            下一节我们将来学习nginx的目录结构及各类配置文件的作用,并配置一个简单的转发带大家先感受下nginx的使用


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]