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

文章介绍了Nginx作为高性能Web和反向代理服务器的特点,如内存占用少、并发能力强,并与Apache进行了对比,强调Nginx在轻量级、热部署和高并发处理上的优势。同时,详细阐述了Nginx的进程结构以及如何实现高并发,以及如何安装和编译Nginx服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值