Nginx网站服务——编译安装与系统服务添加

news2025/7/5 19:21:27

一、Nginx简介

Nginx特点:(占用内存少,并发能力强

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。(实际操作,很多公司为了服务器的稳定,都会设置在20000个左右)

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

Apache:

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

1.Nginx与Apache的区别

NginxApache
nginx是一个基于事件的web服务器apache是一个基于流程的服务器
所有请求都由一个线程处理单个线程处理单个请求
nginx避免子进程的概念apache是基于子进程的
nginx类似于速度apache类似于功率
nginx在内存消耗和连接方面比较好apache在内存消耗和连接上没有提高
nginx在负载均衡方面表现较好当流量到达进程极限时,apache将拒绝新的连接。
nginx不支持IBMI和openvms一样的osapache支持更多的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去做。


一般来说,需要性能的web服务,用nginx。若不需要性能只求稳定,就选用apache。

2.Nginx进程

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

Nginx有两个进程:

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

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

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

 2.安装相关的依赖包

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

3.创建运行用户、组

nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx

4.编译安装Nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \							`指定nginx的安装路径`
--user=nginx \										`指定用户名`
--group=nginx \										`指定组名`
--with-http_stub_status_module						`启用 http_stub_status_module 模块以支持状态统计`

`编译安装`
make && make install

`让系统识别nginx的操作命令`
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		

5.检查、启动、重启、停止 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

`重载`
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

`日志分割,重新打开日志文件`
kill -USR1 <PID号>
`平滑升级`
引入新的升级安装包
tar -zxvf nginx-1.xx.xx.tar.gz 
cd nginx-1.xx.xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

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

三、添加Nginx系统服务

1.脚本方式

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;

stop)
  kill -s QUIT $(cat $PID)
;;

restart)
  $0 stop
  $0 start
;;

reload)
  kill -s HUP $(cat $PID)
;;

*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1

esac
exit 0


chmod +x /etc/init.d/nginx
chkconfig --add nginx							#添加为系统服务
systemctl stop nginx
systemctl start nginx

 2.在主服务中(/lib/systemd/system/)添加nginx服务配置

vim /lib/systemd/system/nginx.service
[Unit]                                     #服务的说明
Description=nginx                          #描述服务   
After=network.target                       #依赖,当依赖的服务启动之后再启动自定义的服务
[Service]                                  #服务运行参数的设置
Type=forking                               #是后台运行的形式,使用此启动类型应同时指定
PIDFile=/usr/local/nginx/logs/nginx.pid    #便systemd能够跟踪服务的主进程。
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

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

makefile编译debug版本调试时无法定位到源文件:No source available for “main() at 0x8544“

问题 之前用makefile编译了一个release版本的可执行文件&#xff0c;但是后面想调试的时候发现无法调试。 觉得-g就能解决问题&#xff0c;后面发现根本不行。 这里虽然加了-g选项&#xff0c;但是调试的时候还是出现找不到源文件的情况。 解决方案 对已有的C/C工程用mak…

Backtrader官方中文文档:第三章Quickstart Guide快速入门

本文档参考backtrader官方文档&#xff0c;是官方文档的完整中文翻译&#xff0c;可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 快速入门章节目录 快速入门使用平台从0到100&#xff1a;一步一步的演示基本设置设置现…

2023PS beta 爱国版注册安装教程

软件介绍 主要新功能包括: Generative Fill功能(仅在Photoshop Beta桌面应用程序中可用)。这是一个新的工具,可以使用简单的文本提示非破坏性地添加,扩展或删除图像中的内容,以实现令人惊喜,高兴和震惊的真实结果——几秒钟内。要使用此功能,请选择图像中的目标对象或区域,然…

全局流控 or 端到端拥塞控制

同事推荐一篇论文 Bolt: Sub-RTT Congestion Control for Ultra-Low Latency&#xff0c;写点想法。 端到端原则使网络在拥塞控制中始终扮演配角&#xff0c;人们认为拥塞控制是端到端的事。几十年来人们设计的拥塞控制机制始终围绕 “主机在什么情况下要增减 cwnd” 打转。但…

MongoDB 分片集的基本概念

什么是分片集&#xff1f; 副本集&#xff08;ReplicaSet&#xff09; 用于解决读请求扩展、高可用等问题。但随着业务场景的进一步增长&#xff0c;可能会出现以下问题&#xff1a; 存储容量超出单机磁盘容量&#xff1b;活跃数据集超出单机内存容量&#xff0c;很多读请求需…

使用Python将《青花瓷》歌词生成词云图

哈喽大家好&#xff0c;因为上次有小伙伴问我&#xff0c;歌曲的歌词和评论怎么生成词云图&#xff0c;想买代码… 当时我就拒绝了&#xff0c;直接免费送给了他。 所以今天来分享给大家 我们以周董的《青花瓷》为例&#xff0c;要对《青花瓷》歌词生成词云图&#xff0c;需…

[Flash][AS3]“懒惰式引用计数回收内存“导致程序崩溃(闪退)

最近在做Flash项目时候发现&#xff0c;Flash CS6 发布的程序在运行超过两个小时后会闪退&#xff0c;在仔细检查脚本代码和资源文件后&#xff0c;排除了这两个方面的原因。又猜测是内存或者GDI泄漏&#xff0c;在任务管理器中观察了一段时间&#xff0c;程序的GDI没有任何变化…

电脑开机总是卡到不能动怎么重装系统?

电脑开机总是卡到不能动怎么重装系统&#xff1f;有用户反馈自己的电脑在开机之后&#xff0c;总是会出现卡死的情况&#xff0c;无法进行任何的操作。遇到这个问题我们可以使用U盘重装系统的方法来进行电脑系统的重装&#xff0c;接下来我们一起来看看以下具体的操作步骤教学吧…

3.7 图像压缩

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是图像压缩&#xff1f; 在动态规划中&#xff0c;图像压缩是指通过减少图像数据的存储空间&#xff0c;以实现图像文件的压缩和存储优化。动态规…

chatgpt赋能python:从后往前取:Python列表的高效操作

从后往前取&#xff1a;Python列表的高效操作 在Python编程中&#xff0c;列表&#xff08;List&#xff09;是最常用的数据类型之一。列表可以保存任意类型的元素&#xff0c;比如数字、字符串、甚至是其他列表等。在这篇文章中&#xff0c;我们将关注Python列表中从后往前取…

【CSS3系列】第四章 · CSS3新增渐变

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

chatgpt赋能python:Python列表全排列

Python列表全排列 列表是Python中最常用的数据结构之一&#xff0c;它允许我们将多个值&#xff08;数据&#xff09;存储在一个变量中。在Python中&#xff0c;有时我们需要对列表中的元素进行全排列&#xff0c;也就是根据不同的顺序重新排列列表中的元素。本文将介绍如何在…

计算机网络实验:交换机的基本配置与管理

目录 前言实验目的实验内容实验过程总结 前言 本实验旨在了解交换机的基本功能和工作原理&#xff0c;掌握交换机的配置方法和命令&#xff0c;学习交换机端口的基本设置和管理&#xff0c;以及交换机MAC地址表的查看和维护。通过本实验&#xff0c;学生可以熟悉交换机的操作界…

远程面试阿里、蚂蚁、京东、美团后整理份283页Java核心面试宝典

本文整理了一些面试时面试官必问的知识点&#xff0c;其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。 以下是文档涉及的主要内容&#xff1a; &#…

2021-06-10 51单片机,键控流水灯——中断方式

缘由https://ask.csdn.net/questions/7444779?spm1005.2025.3001.5141 #include "reg52.h" sbit K1 P1^5; sbit K2 P1^6; sbit K3 P1^7; bit kk0; void zdsz() {EAEX0IT01; } void main() {unsigned char Xd0;unsigned int ys4747,d10;zdsz();while(1){if(!ys)…

系统自学黑客/网络安全技术三要素:手快、眼快、脑子快

前言 网络安全这个行业优势有&#xff1a;需求量大&#xff0c;人才紧急&#xff0c;门槛低&#xff0c;工资高。对于许多未曾涉足IT行业「小白」来说&#xff0c;深入地学习网络安全是一件十分困难的事。 关于我 本人是一位90后奇安信驻场网络安全工程师。上海交通大学软件…

Ai作画区域控制的几种方法

背景 距上次发文章&#xff0c;又过去好久。这期分享给大家带来的是Ai作画的图结构控制几种方法。现在大家用AI作画大部分情况是直接使用AI单图生成能力&#xff0c;其实并不太会取考虑构图&#xff0c;也不太会考虑到大图的图结构这件事。其实构图这件事是一件很综合复杂的事…

javascript基础十七:bind、call、apply 区别?如何实现apply、call、bind?

一、作用 call、apply、bind作用是改变函数执行时的上下文&#xff0c;简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢&#xff1f; 举个粟子&#xff1a; var name 小爱同学 undefined const obj {name:allen ye,say:function(){console.log(th…

Wi-Fi演进史及关键技术

Wi-Fi演进史及关键技术 文章目录 Wi-Fi演进史及关键技术摘要第一章 Wi-Fi的发展历程1.1 Wi-Fi发展历史1.2 802.11标准的演进 第二章 近代Wi-Fi的核心技术2.1 Wi-Fi 6核心技术2.1.1 OFDMA频分复用技术2.1.2 DL/UL MU-MIMO技术2.1.3 1024QAM2.1.4 空分复用技术&#xff08;SR&…

Shell脚本攻略:文本三剑客之sed

目录 一、理论 1.sed 二、实验 1.sed命令的寻址打印 2.显示奇偶 3.查找替换 4.后向引用 一、理论 1.sed (1) 概念 sed 英文全称为stream editor流式编辑器&#xff0c;sed 对输入流&#xff08;文件或来自管道的输入&#xff09;执行基本文本转换单通过流&#xff0c;…