Nginx网站服务

一、Nginx 概述

1、什么是 Nginx

一款高性能、轻量级Web服务软件

  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
    • 单台物理服务器可支持30 000~50 000个并发请求

2.Nginx与Apache区别

最核心的区别在于

  1. Nginx 采用异步非阻塞机制,多个连接可以对应一个进程;
  2. Apache 采用的是同步阻塞+多进程/线程模型,一个连接对应一个进程
  3. Nginx 抗并发能力更高
  4. Nginx 更轻量,内存、CPU资源消耗更少
  5. Nginx 配置简洁,使用场景多,稳定性高
2.1.Nginx的异步非阻塞机制

同步与异步

这两个概念是从客户端与服务端通信交互方式来看

**同步:**指服务端接收到客户端请求后,必须处理完该请求后(发送处理结果给客户端)才会接收客户

端发送来的下一个请求

**异步:**指服务端还没有处理完客户端请求(没有发送处理结果给客户端),就已经接收下一个客户端

发来的请求了

阻塞和非阻塞

这两个概念是从服务器内部处理请求的方式来看

**阻塞:**指服务器接收到请求后,如果遇到IO阻塞,当前线程会被挂起,直到IO完成后唤醒当前线

程,当前线程期间不会去处理其他事情

**非阻塞:**指服务器接收到请求后,如果遇到IO阻塞,当前线程不会挂起,而是会立即返回去执行下

一个调用

同步与异步,重点在于消息通知的方式

阻塞与非阻塞,重点在于等消息时候的行为

3.Nginx应用场景

  • 用作Web网站服务,处理http静态页面请求
  • 用作虚拟主机,实现一个服务器用于做多个网站站点
  • 用作反向代理、负载均衡,可以作为网关代理服务器接收客户端的请求转发给后端节点服务器集群
  • 用作web缓存服务器

4.Nginx两种进程

master进程:管理worker进程,加载配置文件

worker进程:处理请求连接

nginx的缺点:

nginx不方便处理动态资源,可以进行动静分离,将动态请求交给后端程序去进行处理。

二.编译安装Nginx服务

1.关闭防火墙 ,将安装nginx所需软件包传到/opt目录下
复制代码
systemctl stop firewalld
systemctl disable firewalld
 
setenforce 0

官网下载软件包

添加包

解压包

复制代码
[root@localhost opt]# tar xf nginx-1.26.1.tar.gz 
2.安装依赖包
复制代码
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
3.创建运行用户、组

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

复制代码
useradd -M -s /sbin/nologin nginx

4.编译安装Nginx

复制代码
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

##--prefix=/usr/local/nginx   #指定nginx的安装路径
##--user=nginx \                                        #指定用户名
##--group=nginx \                                        #指定组名
##--with-http_stub_status_module    #启用 http_stub_status_module 模块以支持状态统计
##--with-http_ssl_module   ##需要https协议时启动http_ssl_module模块

lscpu确认好虚拟机核心数,超核编译容易报错!

复制代码
make -j 4 && make install

想要使用nginx命令直接启动服务 做软连接放sbin里 让系统识别nginx的操作命令

复制代码
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

监听80端口上的进程 如果开了apache服务会起冲突!

5.检查、启动、重启、停止 nginx服务

复制代码
5.检查、启动、重启、停止 nginx服务
nginx -t								#检查配置文件是否配置正确
#启动
/usr/local/nginx/sbin/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号>
#平滑升级
kill -USR2 <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
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade  #要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
6.添加 Nginx 系统服务
方法一
复制代码
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20  ##这一步必须要有,其中 - 表示为任何级别都不开启,99为第99个程序启动,20为第20个程序关闭
#description:Nginx Service Control Script  ##脚本目的描述
COM="/usr/local/nginx/sbin/nginx"          ##nginx启动的绝对路径
PID="/usr/local/nginx/logs/nginx.pid"      ##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	##添加为系统服务
chkconfig --level 35 nginx on|off ##设置字符多用户和图形化界面可以开机自启动|关闭
chkconfig --list nginx  ##查看运行级别中是否开机自启动

service nginx start  ##启动
service nginx stop   ##关闭

方法二

复制代码
vim /lib/systemd/system/nginx.service
[Unit] ##服务说明
Description=nginx  ##描述服务
After=network.target  ##依赖,当依赖的服务启动的时候再启动自定义的服务
[Service] ##服务运行参数的设置
Type=forking ##表示后台运行,使用启动类型应该同事指定PIDFile=,这样便于systemd能够追踪
PIDFile=/usr/local/nginx/logs/nginx.pid  ##指定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  ##服务安装的相关设置,可设置多用户

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

补充

Unit\]:服务的说明 Description:描述服务 After:依赖,当依赖的服务启动之后再启动自定义的服务 \[Service\]服务运行参数的设置 Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:启动、重启、停止命令全部要求使用绝对路径 \[Install\]服务安装的相关设置,可设置为多用户

相关推荐
低代码布道师1 小时前
第五部分:阶段项目 4:构建 RESTful API 服务器
服务器·后端·restful
zfj3215 小时前
H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘
java·数据库·sql·学习·数据库底层原理
盛满暮色 风止何安6 小时前
IS-IS 中间系统到中间系统
服务器·网络·网络协议·安全·web安全·网络安全·智能路由器
小赵面校招6 小时前
Redis企业级开发实战:核心应用场景与最佳实践
数据库·redis·缓存
斯普信专业组6 小时前
Apidog MCP服务器,连接API规范和AI编码助手的桥梁
运维·服务器·人工智能
wayuncn6 小时前
深度解析物理机服务器故障修复时间:影响因素与优化策略
运维·服务器·物理机·服务器租用·服务器托管·物理服务器·哈尔滨idc
pp-周子晗(努力赶上课程进度版)7 小时前
【MYSQL】基本查询,表的增删查改
数据库·mysql
一人一萧十只猫�7 小时前
Linux SSH 远程连接全攻略:从加密原理到实战配置(含图解)
linux·服务器·网络
英英_7 小时前
详细介绍一下Python连接MySQL数据库的完整步骤
数据库·python·mysql
秦jh_7 小时前
【Linux网络】传输层协议UDP
linux·运维·服务器·网络·udp