当前位置: 首页 > news >正文

02. Nginx入门-Nginx安装

Nginx安装

yum安装

编辑yum环境

cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

安装Nginx

yum list | grep nginx
yum -y install nginx
nginx -v

常用命令

#Nginx状态
systemctl status nginx
#关闭Nginx
systemctl stop nginx
#启动Nginx
systemctl statrt nginx
#重载Nginx
systemctl daemon-reload
#设置开机启动
systemctl enable nginx
#查看版本
nginx -v
nginx -V

源码安装

解决依赖环境

yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel wget vim

安装Nginx

useradd nginx
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/
cd /usr/local/nginx-1.24.0
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_realip_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-stream \
--with-stream_ssl_module \
--with-http_sub_module
echo $?
make install
echo $?
/usr/local/nginx/sbin/nginx -v

常用命令

#启动Nginx
/usr/local/nginx/sbin/nginx
#检查配置文件
/usr/local/nginx/sbin/nginx -t
#关闭Nginx
/usr/local/nginx/sbin/nginx -s stop
#重载Nginx
/usr/local/nginx/sbin/nginx -s reload
#查看版本
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx -V

启动文件

cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOF

编译模块详解

查看编译模块命令

nginx -V

编译模块详解

--prefix=/etc/nginx																					#指定Nginx安装目录
--sbin-path=/usr/sbin/nginx																	#指定Nginx执行文件目录
--modules-path=/usr/lib64/nginx/modules											#指定Nginx模块路径
--conf-path=/etc/nginx/nginx.conf														#指定Nginx配置文件路径
--error-log-path=/var/log/nginx/error.log										#指定Nginx错误日志路径
--http-log-path=/var/log/nginx/access.log										#指定Nginx访问日志路径
--pid-path=/var/run/nginx.pid																#指定Nginx进程号存放路径
--lock-path=/var/run/nginx.lock															#指定Nginx启动锁定文件路径
--http-client-body-temp-path=/var/cache/nginx/client_temp		#指定Nginx客户端缓存路径
--http-proxy-temp-path=/var/cache/nginx/proxy_temp					#指定Nginx代理缓存路径
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp			#指定Nginx php缓存路径
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp					#指定Nginx python缓存路径
--http-scgi-temp-path=/var/cache/nginx/scgi_temp						#指定Nginx
--user=nginx																								#指定Nginx程序的用户
--group=nginx																								#指定Nginx进程的用户组
--with-compat																								#启动Nginx动态模块兼容性
--with-file-aio																							#启动Nginx aio使处理效率、处理大量IO性能大大提高
--with-threads																							#启动Nginx的多线程模块(根据CPU核数来启动,单核没必要启动)
--with-http_addition_module																	#启动Nginx的追加模块
--with-http_auth_request_module															#启动Nginx的认证模块
--with-http_dav_module																			#启动Nginx的上传下载模块
--with-http_flv_module																			#启动Nginx的播放视频模块
--with-http_gunzip_module																		#启动Nginx的压缩模块
--with-http_gzip_static_module															#启动Nginx的压缩模块
--with-http_mp4_module															        #启动Nginx的多媒体模块
--with-http_random_index_module											        #启动Nginx的随机主页模块
--with-http_realip_module											              #启动Nginx的用户真实IP模块
--with-http_secure_link_module											        #启动Nginx的安全连接模块
--with-http_slice_module											              #启动Nginx的中文文档模块
--with-http_ssl_module											                #启动Nginx的安全模块
--with-http_stub_status_module											        #启动Nginx的访问状态模块
--with-http_sub_module											                #启动Nginx的替换网站响应模块
--with-http_v2_module												                #启动Nginx的http v2模块
--with-mail																									#启动Nginx的邮件模块
--with-mail_ssl_module																			#启动Nginx的邮件安全模块
--with-stream																								#启动Nginx的负载均衡模块
--with-stream_realip_module																	#启动Nginx的负载均衡真实IP模块
--with-stream_ssl_module																		#启动Nginx的负载均衡安全模块
--with-stream_ssl_preread_module														#启动Nginx的负载均衡预读取模块
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong		#CPU优化参数
--param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC'												#CPU优化参数
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'																											#CPU优化参数

简单访问

查看IP地址

ip addr

浏览器访问IP

如果访问IP地址无法访问,需要检查是否服务器开启了防火墙,如开启需要关闭

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

注意:安装没有错误的前提下,如果扔无法访问Nginx,绝大部分情况是没有开放防火墙上的Nginx端口,简单处理方式即关闭防火墙。

访问展示

image.png

Nginx文件

yum安装文件路径

目录及文件

rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d																							#Nginx的子配置文件目录
/etc/nginx/conf.d/default.conf																#Nginx的默认子配置文件
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf																					#Nginx的主配置文件
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.25.3
/usr/share/doc/nginx-1.25.3/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html																						#Nginx的项目默认路径
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx																									#Nginx的默认日志路径

源码安装文件路径

所有目录

ll /usr/local/nginx
total 4
drwx------. 2 nginx root    6 Jan  4 01:49 client_body_temp
drwxr-xr-x. 2 root  root 4096 Jan  4 01:43 conf								#Nginx配置文件路径
drwx------. 2 nginx root    6 Jan  4 01:49 fastcgi_temp
drwxr-xr-x. 2 root  root   40 Jan  4 01:43 html								#Nginx项目默认路径
drwxr-xr-x. 2 root  root   58 Jan  4 01:49 logs								#Nginx默认日志路径
drwx------. 2 nginx root    6 Jan  4 01:49 proxy_temp
drwxr-xr-x. 2 root  root   19 Jan  4 01:43 sbin								#Nginx进程路径
drwx------. 2 nginx root    6 Jan  4 01:49 scgi_temp
drwx------. 2 nginx root    6 Jan  4 01:49 uwsgi_temp

关键文件

/usr/local/nginx/conf/nginx.conf					#Nginx配置文件
/usr/local/nginx/conf/nginx.conf.default	#Nginx配置文件模板
/usr/local/nginx/logs/access.log					#Nginx访问日志
/usr/local/nginx/logs/error.log						#Nginx错误日志

配置文件详解

Nginx配置文件三大模块

  1. 核心模块(CoreModule):进程数等配置;
  2. 事件驱动模块(EventsModule):工作模式等配置;
  3. http内核模块(HttpCoreModule):文档程序类型、配置文件等配置;

配置文件

主配置文件

user  nginx;																																		#全局设置,指定Nginx的启动用户
worker_processes  auto;																													#全局设置,指定Nginx的启动进程个数error_log  /var/log/nginx/error.log notice;																			#全局设置,指定Nginx的错误日志存放路径
pid        /var/run/nginx.pid;																									#全局设置,指定Nginx的进程号存放路径events {worker_connections  1024;																											#事件设置,指定Nginx的每个worker进程的最大连接数
}http {include       /etc/nginx/mime.types;																					#HTTP设置,指定Nginx包含的媒体访问类型文件default_type  application/octet-stream;																				#HTTP设置,指定Nginx的流处理方式,默认为字节流处理方式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '			#HTTP设置,指定Nginx的日志的记录格式'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;																	#HTTP设置,指定Nginx的日志路径及使用的日志格式sendfile        on;																														#HTTP设置,加速Nginx访问#tcp_nopush     on;																														#HTTP设置,优化Nginx访问keepalive_timeout  65;																												#HTTP设置,指定Nginx的保持连接时长#gzip  on;																																		#HTTP设置,指定Nginx的gzip压缩include /etc/nginx/conf.d/*.conf;																							#HTTP设置,指定Nginx的子配置文件路径
}

子配置文件

server {listen       80;																								#网站配置,设置网站的Nginx监听端口server_name  localhost;																					#网站配置,设置网站的Nginx监听域名#charset koi8-r;																								#网站配置,设置网站的字符集,默认使用UTF-8#access_log  /var/log/nginx/host.access.log  main;							#网站配置,设置网站访问日志的路径及日志的记录格式location / {root   /usr/share/nginx/html;																#网站网页配置,指定网站的根目录路径index  index.html index.htm;                                #网站网页配置,指定网站默认主页的文件名称}#error_page  404              /404.html;												#网站配置,指定网站的404错误页面# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;												#网站配置,指定网站的500系列的错误页面的显示内容location = /50x.html {root   /usr/share/nginx/html;																#网站网页配置,指定网站的500系列错误页面存放路径}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}

日志文件详解

日志格式解释

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;	

log_format:声明日志格式;
main:定义这个日志格式的名称;
$remote_addr:远程地址,记录客户端IP地址;
r e m o t e u s e r :远程用户,记录客户端访问用户名(有身份验证的前提下记录); [ remote_user:远程用户,记录客户端访问用户名(有身份验证的前提下记录); [ remoteuser:远程用户,记录客户端访问用户名(有身份验证的前提下记录);[time_local]:本地时间,服务器的自身时间(客户端访问时间);
“$request”:请求,记录请求的方式、请求的URL和请求的HTTP协议;
$status:请求状态码,记录请求的状态码;
b o d y b y t e s s e n t :发送给客户端的字节数,不包括响应头的大小; " body_bytes_sent:发送给客户端的字节数,不包括响应头的大小; " bodybytessent:发送给客户端的字节数,不包括响应头的大小;"http_referer":记录从哪个页面链接过来的访问(如果直接访问过来的则记录“-”);
h t t p u s e r a g e n t " :记录客户端浏览器相关信息; " http_user_agent":记录客户端浏览器相关信息; " httpuseragent":记录客户端浏览器相关信息;"http_x_forwarded_for”:记录代理IP
$request_length:记录请求的长度(包含请求行、请求头、请求正文);
$request_time:记录请求处理的时间,单位秒,精度是毫秒;
$time_iso8601:ISO8601标准格式下的本地时间;
$bytes_sent:记录发送给客户端的总字节数;
$msec:记录日志写入时间,单位秒,精度是毫秒;
$http_x_real_ip:记录真实客户端的ip,windows客户端ip;
$remote_addr:当无代理时候,是直接真实客户端的ip;
-:在日志中有两种情况,一表示占位符(如果没有记录使用占位符表示),二表示分隔符(没有特殊含义);

访问日志文件

192.169.1.101 - - [05/Jan/2024:23:45:59 +0800] "GET / HTTP/1.1" 200 17 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0" "-"

$remote_addr --> 192.169.1.101
r e m o t e u s e r − − > − [ remote_user --> - [ remoteuser>[time_local] --> [05/Jan/2024:23:19:56 +0800]
“$request” --> “GET / HTTP/1.1”
$status --> 200
b o d y b y t e s s e n t − − > 17 " body_bytes_sent --> 17 " bodybytessent>17"http_referer" --> “-”
h t t p u s e r a g e n t " − − > " M o z i l l a / 5.0 ( W i n d o w s N T 10.0 ; W i n 64 ; x 64 ; r v : 121.0 ) G e c k o / 20100101 F i r e f o x / 121.0 " " http_user_agent" --> "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0" " httpuseragent">"Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:121.0)Gecko/20100101Firefox/121.0""http_x_forwarded_for” --> “-”

错误日志文件

  • 日志格式
error_log logs/error.log error;
  • 日志解释
  1. error_log:是记录错误日志的关键字,不能任意修改;
  2. logs/error.log:是记录错误日志的路径及文件名;
  3. error:指定错误日志记录的级别;
  4. 默认使用error级别,常见级别有:debug,info,notice,wam,error,crit,alert,emerg;
  5. 注意:级别越高记录的信息越少,一般常用的三个级别:wam,error,crit;
  6. 注意:不要配置info等低级别,会带来巨大的磁盘I/O消耗;
2024/01/06 00:43:35 [error] 15794#15794: *8 open() "/usr/share/nginx/html/adb" failed (2: No such file or directory), client: 192.169.1.101, server: localhost, request: "GET /adb HTTP/1.1", host: "192.169.1.133"

日志缓存

日志缓存可以配置在http/server/location下

http {open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m;......server {......}
}
  1. 默认情况下open_log_file_cache是关闭的,即open_log_file_cache off;
  2. max=1000:指定日志文件的FD,最大的缓存数量为1000;
  3. inactive=20s min_uses=3:在20秒内小于3次访问的FD,就会清理掉;
  4. valid=1m:检查周期为1分钟;
  5. 总结:缓存多个1000个,到了极限每分钟开始清除掉,20秒内小于3次的文件FD;
  6. 生成环境下不建议开启,因为会占用内存资源;

日志切割轮转

日志轮转切割可以使用linux的自带logrotate工具

  • 日志切割文件
cat /etc/logrotate.d/nginx/var/log/nginx/*.log {daily													#每天轮转一次missingok											#日志丢失不提示rotate 52											#日志文件备份保留52份compress											#压缩日志文件,默认后缀.gzdelaycompress									#延迟压缩notifempty										#空文件,不轮转create 640 nginx adm					#日志轮转后创建一个新文件,并授权size 10M											#日志文件大小超过10M时,启动日志轮转sharedscripts									#日志轮转后执行的脚本,开始标识postrotateif [ -f /var/run/nginx.pid ]; thenkill -USR1 `cat /var/run/nginx.pid` #重启nginxfiendscript											#日志轮转后执行的脚本,结束标识
}
  • 测试日志轮转
logrotate -vf /etc/logrotate.d/nginx

日志分析

  1. 统计2023年9月5日,这一天内的PV量
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | wc -l
grep '05/Sep/2023:08' /var/log/nginx/access_zzx_log.log | wc -l		#(8点-9点直接的PV量)
  1. 统计2023年9月5日,这一天内的访问最多的10个IP
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{ips[$1]++}END{for(i in ips){print "IP地址:"i,"数量:"ips[i]}}' | sort -k2 -rn | head -n 10
  1. 统计2023年9月5日,这一天内的访问大于100次的IP
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{ips[$1]++}END{for(i in ips){if(ips[i]>100){print "IP地址:"i,"数量:"ips[i]}}}'
  1. 统计2023年9月5日,这一天内的访问最多的10个页面
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{urls[$7]++}END{for(i in urls){print "URL地址:"urls[i],"数量:"i}}' | sort -k1 -rn | head -n 10
  1. 统计2023年9月5日,这一天内的每个URL访问内容总量大小
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{urls[$7]++;size[$7]+=$10}END{for(i in urls){print "URL地址:"urls[i],"大小:"size[i]}}'
  1. 统计2023年9月5日,这一天内的每个IP访问状态码数量
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{ip_code[$1" "$9]++}END{for(i in ip_code){print "IP地址和状态码:"i,"数量:"ip_code[i]}}'
  1. 统计2023年9月5日,这一天内的每个IP访问状态码为404及出现次数
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{if($9="404"){ip_code[$1" "$9]++}}END{for(i in ip_code){print "IP地址和状态码:"i,"数量:"ip_code[i]}}'
  1. 统计2023年9月5日,这一天8:30-9:30时间段每个IP出现404状态码的数量
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '$4>="[05/Sep/2023:08:30:00" && $4<="[05/Sep/2023:09:00:00"{if($9="404"){ip_code[$1" "$9]++}}END{for(i in ip_code){print i,ip_code[i]}}'
  1. 统计2023年9月5日,这一天内的各种状态码数量
grep '05/Sep/2023' /var/log/nginx/access_zzx_log.log | awk '{code[$9]++}END{for(i in code){print i,code[i]}}'
  1. 统计前一分钟的PV量
date=$(date -d '-1 minute' +%Y:%H:%M); awk -v date=$date '$0 ~ date{i++}END{print i}' /var/log/nginx/access_zzx_log.log

相关文章:

02. Nginx入门-Nginx安装

Nginx安装 yum安装 编辑yum环境 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_…...

leetcode73. 矩阵置零

链接见&#xff1a;https://leetcode.cn/problems/set-matrix-zeroes/description/ 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 AC代码 class Solution { public:void setZeroes(vec…...

【中间件】RabbitMQ入门

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 MQ的优劣&#xff1a; 优势 应用解耦&#xff1a;提升了系统容错性和可维护性异步提速&#xff1a;提升用户体验和系统吞吐量消峰填谷&#xff1…...

rtt的io设备框架面向对象学习-电阻屏LCD设备

目录 1.8080通信的电阻屏LCD设备1.1 构造流程1.2 使用2.i2c和spi通信的电阻屏LCD 电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的。 1.8080通信的电阻屏LCD设备 lcd这块不像其他设备类&#xff0c;rtt没有实现的设备驱动框架层&#xff0c;那么是在驱动层直接实现的。 以…...

商城免费搭建之java商城 java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…...

蓝桥杯刷题--python-16

562. 壁画 - AcWing题库 Tint(input()) j1 while(j<T): N int(input()) ainput() s [0]*(N1) # 求前戳和 for i in range(1, N 1): s[i] int(a[i-1]) s[i - 1] # 枚举 # 区间 max_ float(-inf) k (N 2 - 1) // 2 for i in …...

闰年计算中的计算机Bug

不知道你有没有看过凯瑟琳泽塔琼斯主演的《偷天陷阱》&#xff0c;里面主题思想是用银行结算系统的千年虫bug&#xff0c;精心设计&#xff0c;盗取银行几十亿的精彩动作片。所谓2000 年千禧年的千年虫&#xff0c;其实就是计算机计算闰年的bug。 这个闰年计算的历史源远流长&…...

python水表识别图像识别深度学习 CNN

python水表识别&#xff0c;图像识别深度学习 CNN&#xff0c;Opencv,Keras 重点&#xff1a;项目和文档是本人近期原创所作&#xff01;程序可以将水表图片里面的数据进行深度学习&#xff0c;提取相关信息训练&#xff0c;lw1.3万字重复15%&#xff0c;可以直接上交那种&…...

Java对接快递100实时快递单号查询API接口

目录 1.引入依赖 2.定义配置信息 3.模块结构 4.Controller 5.Service实现类 6.返回数据dto以及dto中的数据dto 7.测试运行 今天也是接到了这个任务&#xff0c;官网有小demo&#xff0c;可以下载下来参考test中代码 官方文档地址&#xff1a; 实时快递查询接口技术文档…...

Redis常见的15个【坑】,避坑指南

一、常见命令 1.1 过期时间意外丢失 原因&#xff1a; SET命令如果不设置过期时间&#xff0c;那么Redis会自动【擦除】这个key的过期时间 1.2 DEL命令阻塞redis key是String类型时&#xff0c;DEL时间复杂度是O(1)key是List/Hash/Set/ZSet类型&#xff0c;DEL时间复杂度是…...

04. Nginx入门-Nginx WEB模块

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…...

Python在信息安全领域中具有重要的作用

Python在信息安全领域中具有重要的作用。下面是几个方面的说明&#xff1a; 网络安全&#xff1a;Python提供了一系列用于网络安全的库和工具&#xff0c;例如Scapy、Nmap等。这些工具可以应用于漏洞扫描、网络流量分析、数据包嗅探等操作&#xff0c;帮助检测和防御网络攻击。…...

Linux 定时备份文件到另一台服务器

1. 需求 用户要求将 Tomcat 的日志文件定时备份到另一台服务器。同事给我提供了一个写好的 java 框架&#xff0c;但实在不想给用户再维护另一个服务了&#xff0c;所以另寻他法。 2. 问题 使用 scp 等跨服务器传输命令时需要手动输入用户名的密码才可进行文件传输&#xff…...

C++输入输出(I\O)

我们知道C是由C语言发展而来的&#xff0c;几乎完全兼容C语言&#xff0c;换句话说&#xff0c;你可以在C里面编译C语言代码。如下图: C语言是面向过程的语言&#xff0c;C在C语言之上增加了面向对象以及泛型编程机制&#xff0c;因此C更适合中大型程序的开发&#xff0c;然而C…...

基本设计模式

单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…...

双通道音频功率放大电路,外接元件少, 通道分离性好,3V 的低压下可正常使用——D2025

D2025 为立体声音频功率放大集成电路&#xff0c;适用于各类袖珍或便携式立体声 收录机中作功率放放大器。 D2025 采用 DIP16 封装形式。 主要特点&#xff1a;  适用于立体声或 BTL 工作模式  外接元件少  通道分离性好  电源电压范围宽&#xff08;3V~12V &#xff…...

Linux 内核获取函数size

方式一&#xff1a;通过objdump -t直接从目标文件中获取函数size #objdump -t file_unread.o | grep hook 0000000000000030 l F .text 000000000000012f hook_vfs_read0000000000000030 l F .text 000000000000012f hook_vfs_read各个字段说明 0000000000000030&#x…...

Python+neo4j构建豆瓣电影知识图谱

文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系多标签实体和实体去重数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集,OpenKG(Open Knowledge Graph),可供研究人员使用研究。 数据整理导入 impor…...

DolphinScheduler——介绍及架构设计

目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…...

【Python】约瑟夫环问题

任务描述 据说著名历史学家 Josephus有过以下的故事&#xff1a;Josephus及他的朋友共41人围成一个圆圈&#xff0c;由第1个人开始报数&#xff0c;每数到3该人就必须出去&#xff0c;然后再由下一个人重新报数&#xff0c;直到圆圈上少于3人为止。Josephus 将朋友与自己安排在…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...