Linux系统架构----nginx的服务基础
一.Nginx的概述
- Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx稳定性高,而且系统资源消耗少
- Nginx相对于Apache主要处理静态请求,而apache主要处理动态请求
- Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
二.Nginx的安装
- Nginx安装文件可以从官方网站 http://www.nginx.org/ 下载
- 安装运行nginx的运行环境
#下载依赖的软件
[root@nginx1 ~]# mkdir -p /apps/nginx
[root@nginx1 ~]# yum -y install gcc pcre-devel openssl-devel zlib-devel
[root@nginx1 ~]# useradd -s /sbin/nologin nginx
[root@nginx1 ~]# cd /usr/local/src/
[root@nginx1 src]# wget https://nginx.org/download/nginx-1.18.0.tar.gz
[root@nginx1 src]# ls
nginx-1.18.0.tar.gz
[root@nginx1 src]# tar xf nginx-1.18.0.tar.gz
[root@nginx1 src]# cd nginx-1.18.0/
[root@nginx1 nginx-1.18.0]# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
#make编译 make install安装
[root@nginx1 nginx-1.18.0]# make && make install
[root@nginx1 nginx-1.18.0]# chown -R nginx.nginx /apps/nginx
[root@nginx1 nginx-1.18.0]# ll /apps/nginx
总用量 0
drwxr-xr-x 2 nginx nginx 333 1月 13 13:34 conf
drwxr-xr-x 2 nginx nginx 40 1月 13 13:34 html
drwxr-xr-x 2 nginx nginx 6 1月 13 13:34 logs
drwxr-xr-x 2 nginx nginx 19 1月 13 13:34 sbin
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心的配置文件,其中.conf则是用来配置nginx相关的功能,
html:目录中保存nginx服务器的web文件,但是可以更改为其他目录保存web文件
logs:用来保存nginx服务器的访问日志错误日志等
sbin:保存nginx二进制启动脚本,可以接受不同的参数实现不同的功能
- 验证版本及编译参数
[root@nginx1 nginx-1.18.0]# ls /apps/nginx/sbin
nginx
[root@nginx1 nginx-1.18.0]# ln -s /apps/nginx/sbin/nginx /usr/bin
[root@nginx1 nginx-1.18.0]# nginx -v
nginx version: nginx/1.18.0
[root@nginx1 nginx-1.18.0]# nginx -V
nginx version: nginx/1.18.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)
built with OpenSSL 1.1.1k FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
- 使用下列的命令控制nginx
nginx -t //检查
nginx //启动
killall -1 nginx //重启
killall -3 nginx //停止
三.服务控制的优化
- 主程序Nginx支持标准的进程信号,通过kill或者killall命令发送HUP信号表示重载配置,发送QUIT信号表示退出进程,发送KILL信号表示杀死进程
kill -s HUP nginx //-s HUP等同于 -1,表示重载
kill -s QUIT nginx //-s QUIT等同于 -3,表示停止
- systemctl工具来控制Nginx服务脚本
#复制同一版本的nginx的yum安装生成的service文件
[root@nginx1 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server //描述
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target //描述服务类型
Wants=network-online.target
[Service]
Type=forking //后台形式运行
PIDFile=/apps/nginx/run/nginx.pid //PID文件位置
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf //启动服务
ExecReload=/bin/kill -s HUP $MAINPID //根据PID重载
ExecStop=/bin/kill -s TERM $MAINPID //根据PID关闭
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
#创建Pid文件存放目录
[root@nginx1 ~]# mkdir /apps/nginx/run/
[root@nginx1 ~]# vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid /apps/nginx/run/nginx.pid;
[root@nginx1 ~]# systemctl daemon-reload
[root@nginx1 ~]# systemctl enable --now nginx
[root@nginx1 ~]# ll /apps/nginx/run
总用量 4
-rw-r--r-- 1 root root 5 1月 13 14:17 nginx.pid
四.nginx的配置文件
- Nginx的服务器中的主配置文件 /apps/nginx/conf/nginx.conf 中包括全局配置、I/O事件配置和HTTP配置
- 全局配置,由各种配置语句组成,不使用特定的界定标记。全局配置部分包括Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等基本设置
#user nobody; //运行的用户
worker_processes 1; //工作的进程数 ,取决于服务器的cpu
#error_log logs/error.log; //错误日志文件的位置
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /apps/nginx/run/nginx.pid; //PID文件的位置
- I/O事件配置,使用“event{ }”界定标记,用来指定Nginx进程的I/O响应模型、每个进程的连接数等设置。对于2.6及以上的版本的内核,建议使用epoll模型以提高性能;每个进程的连接数根据实际需要来定,一般在10000以下(默认为1024)
events {worker_connections 1024; //每个进程处理1024个连接
}
//Nginx能提供服务的连接数为(工作进程数X连接数,即1*1024=1024)
- HTTP配置,使用“http{ }”界定标记,包括访问日志、http端口、网页目录、默认字符集、连接保持,以及后面要讲到的虚拟web主机、PHP解析等一系列设置,其中大部分配置语句包含在server{}中。
http {include mime.types;default_type application/octet-stream;sendfile on; //支持文件下载#tcp_nopush on; //保持连接超时时间#keepalive_timeout 0; keepalive_timeout 65;server {listen 80; //监听地址以及端口server_name localhost;location / {root html; //网站根目录的位置index index.html index.htm; //默认首页}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html; //内部错误的反馈页面location = /50x.html { //错误页面配置root html;}
}
五.访问状态统计
-
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的web访问情况,配置编译参数时–with_http_stub_statius_module来启用此模块支持,使用nginx -V来查看Nginx中是否包含该模块
-
要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf 配置文件,到指定访问位置并添加stub_status配置代码
location /status {stub_status on; ##开启访问状态统计功能access_log off; ##关闭日志记录}
- 重启服务
[root@nginx1 ~]# systemctl restart nginx.service
验证结果
[root@nginx1 ~]# curl 10.1.1.161/status
Active connections: 1 //当前的连接数
server accepts handled requests //表示已处理的连接数1 1 1 //已处理的连接数 //成功的TCP握手次数 //已处理的请求数
Reading: 0 Writing: 1 Waiting: 0
相关文章:
Linux系统架构----nginx的服务基础
一.Nginx的概述 Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx稳定性高,而且系统资源消耗少Nginx相对于Apache主要处理静态请求,而apache主要处理动态请求Nginx是一款轻量级的Web 服务器/反向代理服务…...
项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)
项目管理常用模板大全: 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…...
MySQL--索引底层数据结构详解
索引是什么? 索引是帮助MySQL高效获取数据的排好序的数据结构,因此可知索引是数据结构。 概念很抽象,但是类比生活中的例子就很容易理解,比如一本厚厚的书,我们想取找某一小节,我们可以根据目录去快速找到…...
如何解决爬虫程序访问速度受限问题
目录 前言 一、代理IP的获取 1. 自建代理IP池 2. 购买付费代理IP 3. 使用免费代理IP网站 二、代理IP的验证 三、使用代理IP进行爬取 四、常见问题和解决方法 1. 代理IP不可用 2. 代理IP速度慢 3. 代理IP被封禁 总结 前言 解决爬虫程序访问速度受限问题的一种常用方…...
如何考上东南大学计算机学院?
东南大学招生学院是计算机科学与工程学院、苏州联合研究生院,复试公平,不歧视双非考生,985院校中性价比较高,但近年热度在逐年上涨,需要警惕。 建议报考计算机科学与工程学院081200计算机科学与技术专业目标分数为380…...
双指针算法练习
27. 移除元素 题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑…...
桌面终端管理(实用+收藏篇)
桌面终端管理软件是管理和保护企业电脑数据安全的工具。 它能够帮助管理员更有效地控制和监督员工电脑的日常使用,软件的功能包括软件管理、硬件监控、远程管理、数据加密和防泄密、行为审计以及安全防护等。 桌面终端管理的核心要义 桌面终端管理不仅仅是对硬件设…...
day1-C++
1>提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码: #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …...
C++ 之LeetCode刷题记录(三十九)
😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用…...
关于一个数组的小细节
机缘 写一个矩阵转置的代码用到了数组 收获 了解到输入数组的大小要在数组前面而不能先定义数组然后再输入 举例 #include <stdio.h>int main() {int a, b;scanf("%d %d ",&a,&b);int arr[a][b];for(int i 0;i < a;i){for(int j 0;j < b…...
吴恩达机器学习笔记 十八 制定一个性能评估标准 学习曲线 高偏差 高方差
一个模型的好坏的评估基准可以从下面几个方面考虑: 1.考虑人类在这个问题上的表现 2.对比竞争算法的表现 3.根据经验猜测 判断是高偏差还是高方差 训练样本数量越多,越难完美地拟合每个样本,因此 J_train 会逐渐增大一点点,但泛…...
HYBBS 表白墙网站PHP程序源码,支持封装成APP
PHP表白墙网站源码,适用于校园内或校区间使用,同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装,只需PHP版本5.6以上即可。 通过上传程序进行安装,并设置账号密码,登录后台后切换模板,适配手机和PC…...
Java面试宝典——MySQL
更多面试题 可关注微信公众号“假装正经的程序员”获取更多面试题和本篇详细答案,如有问题也可通过公众号私信 公众号目前正处于完善中,后续更多硬核干货会通过公众号免费发布,扫码关注 前言 本篇为MySQL相关面试问题,涉及到初…...
一站式数据采集物联网平台:智能化解决方案,让数据管理更高效、更安全
JVS物联网平台的定位 JVS是企业信息化的“一站式解决方案”,其中包括了基础的数字化底座、各种企业级能力、企业内常见的应用,如下图所示: 整体平台能力层有三大基础能力: 低代码用于业务的定义;数据分析套件用于数据的自助式分…...
【fastllm】学习框架,本地运行,速度还可以,可以成功运行chatglm2模型
1,关于 fastllm 项目 https://www.bilibili.com/video/BV1fx421k7Mz/?vd_source4b290247452adda4e56d84b659b0c8a2 【fastllm】学习框架,本地运行,速度还可以,可以成功运行chatglm2模型 https://github.com/ztxz16/fastllm &am…...
《TCP/IP网络编程》中多线程HTTP服务器实现代码,线程池改编
文章目录 最初代码线程池代码locker.hthreadpool.htask.hmain.cppindex.html编译 执行结果 最初代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>…...
Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX
Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化;提供完整的远程 Windows 可用性;以类似本地的性能远程工作;安全地保护系统和知识产权(IP)&am…...
酷柚易汛ERP - 榜店商城对接说明
榜店商城与酷柚易汛ERP对接,需要先在榜店系统中安装对应插件,配置对应的密钥 榜店商城与酷柚易汛ERP的商品进行关联操作,同时订单也会同步,关联不正确会导致订单出库错误 可查看对应的日志...
Linux 多进程开发(上)
第二章 Linux 多进程开发 2.1 进程概述2.2 进程状态转换2.3 进程创建2.4 exec 函数族2.5 进程控制 网络编程系列文章: 第1章 Linux系统编程入门(上) 第1章 Linux系统编程入门(下) 第2章 Linux多进程开发(…...
【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践
用免费GPU线上跑SD项目实践 DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试。而SD我…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
