Nginx网站服务详解(编译安装及系统服务添加)

这篇具有很好参考价值的文章主要介绍了Nginx网站服务详解(编译安装及系统服务添加)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Nginx的相关知识

1)Nginx的简介

Nginx:

Apache:

2)Apache与Nginx的区别 

Nginx对比Apache的优势: 

apache相对于nginx的优点 :

3)Nginx的进程  

Nginx有两个进程:

Nginx 是如何实现高并发的? 

同步和异步

阻塞与非阻塞

Nginx为什么不使用多线程?

二、编译安装Nginx服务

1)初步编译安装

①关闭防火墙,将安装nginx所需软件包传到/opt目录下

2)安装相关的依赖包

3)创建用户组以及编译安装

2)Nginx的初始命令 

①启动Nginx服务

②停止nginx服务

除此之外:还有多种方式可以查看nginx进程号

③重载nginx服务

④日志分割,重新打开日志文件

​编辑

⑤平滑升级 

3)nginx添加到系统服务 

方式一:脚本方式

方式二: 在主服务中(/lib/systemd/system/)添加nginx服务配置


一、Nginx的相关知识

1)Nginx的简介

Nginx:

  • Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新
  • 对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。(实际操作,很多公司为了服务器的稳定,都会设置在20000个左右)
     

Nginx的主要使用场景: 虚拟主机,反向代理,缓存,http  

Apache:

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器 

2)Apache与Nginx的区别 

Nginx Apache
nginx是一个基于事件的web服务器 apache是一个基于流程的服务器
所有请求都由一个线程处理 单个线程处理单个请求
nginx避免子进程的概念 apache是基于子进程的
nginx类似于速度 apache类似于功率
nginx在内存消耗和连接方面比较好 apache在内存消耗和连接上没有提高
nginx在负载均衡方面表现较好 当流量到达进程极限时,apache将拒绝新的连接。
nginx不支持IBMI和openvms一样的os apache支持更多的os
nginx只具有核心功能 apache提供了比nginx更多的功能
nginx的性能和可伸缩性不依赖于硬件 apache依赖于cpu和内存等硬件组件
Nginx支持热部署 Apache不支持热部署

Nginx对比Apache的优势: 

  • 轻量级,nginx比apache 占用更少的内存及资源

  • 静态处理,Nginx 静态处理性能比 Apache 高 

  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度

  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件

  • Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级

  • nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程

  • Nginx高度模块化,编写模块相对简单,且组件比Apache少

  • 高并发下nginx 能保持低资源低消耗高性能

  • Nginx 配置简洁, Apache配置复杂

apache相对于nginx的优点 :

  • Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
  • 模块多,基本想到的都可以找到
  • 少bug, nginx的bug相对较多
  • 超稳定
  • Nginx处理动态请求是弱项,动态请求要Apache去做

3)Nginx的进程  

Apache和Nginx的默认端口都是80,当你发先Nginx启动失败,导致的原因可能就是80端口被占用,而导致服务启动失败,可以修改服务的端口,从而实现两个服务的同时进行

Nginx有两个进程:

master process:主进程(守护进程),用来管理工作进程

worker process:工作进程,用来处理用户的请求

Nginx网站服务详解(编译安装及系统服务添加)

Nginx 是如何实现高并发的? 

  • 异步,非阻塞,使用了epoll 和大量的底层代码优化
  • 如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在等待中
  • 而nginx采用一个master进程,多个woker进程的模式
  • master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求。同时master进程也负责监控woker的状态,保证高可靠性
  • woker进程一般设置为跟cpu核心数一致。nginx的woker进程在同一时间可以处理的请求数只受内存限制,可以处理多个请求
  • Nginx 的异步非阻塞工作方式正把当中的等待时间利用起来了。在需要等待的时候,这些进程就空闲出来待命了,因此表现为少数几个进程就解决了大量的并发问题

同步和异步

  • 同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致
  • 异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,因此它是一个不可靠的服务序列

阻塞与非阻塞

  • 阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。
  • 非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回

Nginx为什么不使用多线程?

  • Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会耗光服务器资源
  • Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发

二、编译安装Nginx服务

1)初步编译安装

①关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

Nginx网站服务详解(编译安装及系统服务添加)

2)安装相关的依赖包

#nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

3)创建用户组以及编译安装

[root@localhost opt]#useradd -M -s /sbin/nologin nginx
 
[root@localhost opt]#tar zxvf nginx-1.12.2.tar.gz -C /opt/
 
[root@localhost opt]#cd nginx-1.12.2/
[root@localhost nginx-1.12.2]#./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module

Nginx网站服务详解(编译安装及系统服务添加)

make && make install
 
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#让系统识别nginx的操作命令

Nginx网站服务详解(编译安装及系统服务添加)

2)Nginx的初始命令 

①启动Nginx服务

#检查nginx服务配置是否正确
nginx  -t
#启动nginx服务
/usr/local/sbin/nginx
#快捷运行
nginx

Nginx网站服务详解(编译安装及系统服务添加)

②停止nginx服务

cat /usr/local/nginx/logs/nginx.pid		#先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx

Nginx网站服务详解(编译安装及系统服务添加)

除此之外:还有多种方式可以查看nginx进程号

cat /usr/local/nginx/logs/nginx.pid   //查看nginx主进程的PID
 
pgrep nginx -l   //查看nginx的主进程号和工作进程号
 
lsof -i :80    //查看nginx的主进程号和工作进程号
 ​
ss -ntap | grep nginx  //查看nginx的主进程号和工作进程号
 ​
netstat -ntap | grep nginx  //查看nginx主进程的PID
 

③重载nginx服务

kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

Nginx网站服务详解(编译安装及系统服务添加)

④日志分割,重新打开日志文件

[root@localhost logs]#ls
access.log  error.log  nginx.pid
[root@localhost logs]#mv access.log    access.`date +%F`.log
[root@localhost logs]#ls
access.2022-09-27.log  error.log  nginx.pid
[root@localhost logs]#kill -USR1 8468
[root@localhost logs]#ls
access.2022-09-27.log  access.log  error.log  nginx.pid
[root@localhost logs]#

Nginx网站服务详解(编译安装及系统服务添加)

⑤平滑升级 

引入新的升级安装包:

tar -zxvf nginx-1.22.0.tar.gz 
cd nginx-1.22.0
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module

Nginx网站服务详解(编译安装及系统服务添加)

编译安装新的nginx升级软件包:

#编译安装
make
#将老版本的nginx进行备份,防止升级失败,还原
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
#将新的运行文件放入安装的运行目录
cp objs/nginx /usr/local/nginx/sbin/nginx

Nginx网站服务详解(编译安装及系统服务添加)

平滑升级:

make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade  

Nginx网站服务详解(编译安装及系统服务添加)

3)nginx添加到系统服务 

我们使用yum安装的服务时,一般启动方式均为 :systemctl  服务名   操作 。对于源码安装后的nginx并不能直接像这样使用。所以我们可以通过脚本或则系统服务的更改来实现系统服务的启动方式

方式一:脚本方式

vim /etc/init.d/nginx

#!/bin/bash
# chkconfig: 35 22 88
# description: This is nginx service control script

cmd="/usr/local/nginx/sbin/nginx"
pidfile="/usr/local/nginx/logs/nginx.pid"
count=$(pgrep -c nginx | grep -v "service|grep|$$" | grep -c "nginx")

case "$1" in
start)
    if [[ $count -ge 1 ]]; then
        echo "Nginx 已经启动....."
    else
        echo "Nginx 正在启动....."
        nohup $cmd >dev/null 2>&1 &
    fi
    ;;
stop)
    kill -QUIT $(cat $pidfile)
    ;;
restart)
    $0 stop
    $0 start
    ;;
reload)
    kill -HUP $(cat $pidfile)
    ;;
status)
    if [[ $count -ge 1 ]]; then
        echo "Nginx is running......"
    fi
    ;;
*)
    echo "Usage: $0 {start|stop|restart|reload|status}"
    exit 1
    ;;
esac

exit 0

 Nginx网站服务详解(编译安装及系统服务添加) 

chmod +x /etc/init.d/nginx
chkconfig --add nginx						
service nginx status

方式二: 在主服务中(/lib/systemd/system/)添加nginx服务配置

实验前准备:

[root@localhost init.d]#mkdir nginx.old
[root@localhost init.d]#mv nginx   ./nginx.old/

 Nginx网站服务详解(编译安装及系统服务添加) 

Nginx网站服务详解(编译安装及系统服务添加)

启动失败(成功移除服务器启动模式),执行第二种方法

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost init.d]#vim /lib/systemd/system/nginx.service
[root@localhost init.d]#chmod 754 /lib/systemd/system/nginx.service
[root@localhost init.d]#systemctl daemon-reload
[root@localhost init.d]#systemctl start nginx
[root@localhost init.d]#systemctl status nginx

Nginx网站服务详解(编译安装及系统服务添加)文章来源地址https://www.toymoban.com/news/detail-466010.html

到了这里,关于Nginx网站服务详解(编译安装及系统服务添加)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Centos服务器编译安装Nginx-1.24.0

    1、下载源码包 2、安装依赖 这些依赖根据需求安装,也可以./config的时候根据报错提示一个一个安装 问题:yum install libmcrypt libmcrypt-devel mcrypt mhash -y 报错:No package libmcrypt available. 解决方法:yum install epel-release //扩展包更新包 3、创建用户组 4、解压文件 并生成配置文件 5、编

    2024年02月14日
    浏览(47)
  • Nginx重新编译并添加模块

            作用:一是检查所需模块是否已安装,二是将configure arguments: 后面的参数复制出来并保存,因为等会重新编译时还需将这些模块一同添加进去。         进入Nginx源码包目录下,执行make clean指令,清除历史编译。         使用./configure --help指令查询需要配置的参

    2024年02月05日
    浏览(28)
  • Centos7.9服务器编译安装Nginx1.24.0和php8.3

    服务器nginx原版本有安全漏洞,需要升级,由于原始是yum源安装,通过yum直接升级,无法正常升级完成,故而需要卸载yum源,重新编译安装。 1、查看原来nginx版本,ps查看原来nginx进程,运行状态: 查看nginx版本号为1.20:

    2024年02月20日
    浏览(39)
  • 杂记 | 使用Docker和Nginx为网站添加HTTPS访问功能

    HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密通信保护网站数据传输的协议。它是 HTTP 协议的安全版本,通过使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议对数据进行加密和认证。在 HTTPS 下,传输的数据在客户端和服务器之间是加密的,确保信息不被窃听

    2024年02月10日
    浏览(34)
  • 【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解

    目录 🌷 安装Nginx环境 🍀 centos操作系统 🍀 ubuntu操作系统 以下是在linux系统中安装Nginx的步骤: 查看服务器属于哪个操作系统 安装 yum : 如果你确定你的系统应该支持 yum ,但它没有安装,你可以尝试安装它。使用以下命令: ①:更新系统软件包 centos: ②:安装EPEL存储库

    2024年04月26日
    浏览(26)
  • windows系统下安装Nginx以及简单使用(详解)

    Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下。而在开发过程中,我们常常需要在window系统下使用Nginx作为Web服务器。 推荐两个网站: Nginx官网: 点击查看 Nginx中

    2023年04月27日
    浏览(36)
  • 阿里云服务器安装WordPress网站教程基于CentOS系统

    阿里云百科分享使用阿里云服务器安装WordPress博客网站教程,WordPress是使用PHP语言开发的博客平台,在支持PHP和MySQL数据库的服务器上,您可以用WordPress架设自己的网站,也可以用作内容管理系统(CMS)。本教程介绍如何在Linux操作系统的ECS实例上搭建WordPress网站。 目录 前提

    2024年02月12日
    浏览(44)
  • Linux 安装 Nginx 并配置为系统服务(超详细)

    Nginx是一款卓越的高性能Web服务器,被广泛用于托管网站和应用程序。本文旨在为您提供详细的指南,帮助您在Linux系统上成功安装、配置和启动Nginx服务器。通过这一过程,您将了解如何将Nginx集成到您的系统中,以便轻松地托管您的网站和应用程序。 在开始安装Nginx之前,

    2024年02月05日
    浏览(30)
  • Nginx:Nginx网站服务(一)

    1、全局块:全局配置,对全局生效; 2、events块:配置影响 Nginx 服务器与用户的网络连接; 3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置; 4、server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块; 5、location块:用于配置匹配的

    2024年02月07日
    浏览(21)
  • Nginx:Nginx网站服务(二)

    Nginx 和 Apache 的差异 : 1、轻量级,nginx比apache 占用更少的内存及资源; 2、静态处理,Nginx 静态处理性能比 Apache 高 ; 3、Nginx可以实现无缓存的反向代理加速,提高网站运行速度; 4、Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件; 5、Nginx支持热部署,启动速度迅速

    2024年02月07日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包