Web集群服务-Nginx

1. web服务

1. WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站

2. WEB中间件: 等同于WEB服务

3. 中间件:范围更加广泛,指的负载均衡之后的服务

4. 数据库中间件:数据库缓存,消息对列

2. 极速上手指南

nginx官网: nginx documentation

2.1 配置yum源

vim /etc/yum.repos.d/nginx.repo
[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

2.2 yum安装nginx

yum install -y nginx

2.3 检查安装

nginx -V

 2.4 目录结构

目录结构说明
/etc/nginx/nginx各种配置文件的目录
/etc/nginx/nginx.conf主配置文件
/etc/nginx/conf.d/子配置文件(网站)
/etc/nginx/conf.d/default.conf默认的子配置文件
/usr/sbin/nginxnginx的命令
/usr/share/nginx/html/nginx默认的站点目录,网站的根目录
/var/log/nginx/nginx日志:访问日志,错误日志,跳转日志

2.5 日常启动与管理

##创建自启动文件
systemctl  enable nginx
##启动服务
systemctl  start nginx
##查看端口
ss - lntup
##查看进程
ps -ef |grep nginx

 2.6 浏览器访问:http://10.0.0.8

2.7 命令行访问

curl  10.0.0.8
curl  -v 10.0.0.8

3. Nginx核心功能详解 

3.1 主配置文件详解(/etc/nginx/nginx.conf)

3.2 子配置文件(/etc/nginx/conf.d/default.conf)

如果删除首页文件,进行(不指定文件)访问会发生什么?

403文件首页不存在

 4 部署第1个网站

网站要求说明
域名cxk.oldboylinux.com
站点目录/app/code/cxk
代码来源cxk.zip

 4.1 配置文件

##子配置文件
vim /etc/nginx/conf.d/cxk.conf
server {listen       80;server_name  cxk.oldboylinux.cn;location / {root   /app/code/cxk;index  index.html;}
}
##检查语法
nginx -t
##热加载
systemctl  reload nginx

4.2 其他配置

##创建站点目录
mkdir -p /app/code/cxk
##解压代码
unzip cxk.zip
mv cxk /app/code/##配置linux和windows hosts解析
#win: C:\Windows\System32\drivers\etc\hosts
#windows下面win键+r 输入drivers 访问etc下的hosts
#linux: /etc/hosts
10.0.0.8 cxk.oldboylinux.cn

4.3 访问

5. Nginx处理用户请求流程

5.1 使用域名访问网站流程:

1. DNS解析:域名 ------->>IP地址

2. 连接80端口: tcp3次握手与网站的80端口建立连接

3. http请求:请求方法,URI,HOST等信息

4. nginx处理:

       4.1  http请求,http区域处理

       4.2 不同的server{} 区域(子配置文件)处理

               4.2.1 端口

               4.2.2 域名:用户请求的域名与子配置文件server_name进行匹配

               4.2.3 匹配成功,就让对应的子配置文件(server{})处理

               4.2.4 根据子配置文件的,root,location规则,index进行处理查找文件

               4.2.5 把找到的文件发回给用户

 5. http响应

 6. 客户收到文件内容,浏览器解析,进行展示

5.2 虚拟主机

5.2.1 概述与分类

虚拟主机的分类说明应用场景
基于域名的虚拟主机不同域名访问不同的站点生产环境最常用的
基于端口的虚拟主机不同端口访问不同的站点保护,设置特殊端口.1024以上 8888 18888
基于ip的虚拟主机不同ip访问不同的站点保护,用户只能通过某个ip连接进来

5.2.2 基于域名的虚拟主机

##创建子配置文件
vim /etc/nginx/conf.d/bird.conf
server {listen 80;server_name bird.oldboulinux.cn; ##站点目录location /{root /app/code/bird;index index.html;}}
测试不创建站点目录:
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

测试创建站点目录,但是没有首页文件
##创建站点目录
mkdir -p /app/code/bird/
##测试
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

测试创建首页文件后访问
##创建首页文件
echo 'xzb666' >/app/code/bird/index.html
##测试
curl -H Host:bird.oldboylinux.cn  http://10.0.0.8

5.2.3 基于端口的虚拟主机

不同的端口访问不的网站
##修改live.oldboylinux.cn端口为81
server {listen 81;server_name live.oldboylinux.cn;location / {root /app/code/live;index index.html;}
}
##访问
curl -H Host:live.oldboylinux.cn http://10.0.0.8:81/index.html

5.2.4 基于ip的虚拟主机

搭建mimi网站,端口是8888,只能通过172.16.1.7内网访问
##创建配置文件
server {listen 172.16.1.8:8888;server_name mi.oldboylinux.cn;location / {root /app/code/mi;index index.html;}
}
##在首页文件写入内容
echo '只允许172.16.1.8 的8888端口访问' >/app/code/mi/index.html
##测试
curl -H Host:mi.oldboylinux.cn  http://10.0.0.8:8888
curl -H Host:mi.oldboylinux.cn  http://172.16.1.8:8888

6. Nginx日志

6.1 概述

日志使用建议定义使用
错误日志发生故障的时候可以查看,4xx,5xx通过错误级别指定error_log
访问日志记录着用户什么时候访问 网站哪些页面,客户端信息通过log_format定义访问日志的格式error_log

 6.2 错误日志

1. 指定错误日志的位置和错误级别

2. 错误日志级别:debug, info, notice, warn, error, crit, alert, or emerg左到右,越来越粗糙

3. debug: 未来用于调试使用,短时间开启,网站访问量较大别开

给每个虚拟主机指定自己独立的错误日志
##需要先把nginx.conf里面的error_log注释
##给cxk.conf增加自己的错误日志
server {listen 80;server_name  cxk.oldboylinux.cn;error_log  /var/log/nginx/cxk.oldboylinux.cn/error.log notice;root /app/code/cxk;location / {index index.html;}}
nginx -t
systemctl  reload nginx
##创建错误日志目录和文件
mkdir -p  /var/log/nginx/cxk.oldboylinux/
touch /var/log/nginx/cxk.oldboylinux/error.log

 6.3 访问日志

1. 辅助我们进行分析,网站访问量

2. log_format指定访问日志的格式

3.log_format 格式名字 格式.....

Ngx访问日志格式(ngx内置变量)说明
$remote_addr客户端ip地址
$request请求报文的起始行
$statushttp状态码
$body_bytes_sent响应给客户的文件的大小,响应报文的主体大小(文件大小) 单位字节
$http_user_agent客户端代理(浏览器)
$http_x_forwarded_forXFF头,负载中使用,记录用户真实的ip地址
$time_local时间
$remote_user用户名

给每个虚拟主机指定自己独立的访问日志
##需要把nginx.conf里面的access_log注释
##给cxk.conf创建访问日志
server {listen       80;server_name  cxk.oldboylinux.cn;error_log    /var/log/nginx/cxk.oldboylinux/error_log notice;access_log   /var/log/nginx/cxk.oldboylinux/access-log main;location / {root   /app/code/cxk;index  index.html;}
}
nginx -t
systemctl  reload nginx

7. Location规则

7.1 概述

1. 在ngx用于匹配用户请求中的uri.ngx对用户请求中的uri进行判断

2. 如果用户请求的uri是xxxx,则做xxxx

3. URI vs URL:

URL:  https://nginx.org/en/docs/

URI:    /en/docs/  域名后面的内容

7.2 搭建大型直播购物网站

域名:buy.oldboylinux.cn

站点目录:/app/code/buy/

首页文件index.html  

后台管理页面:/app/code/buy/admin/index.html

要求后台只能内网访问:172.16.1.0/24网段

##创建buy.conf配置文件,编写配置文件
server {listen 80;server_name buy.oldboylinux.cn;location / {index index.html;root /app/code/buy;}##管理后台##uri: /admin/location /admin/{allow 172.16.1.0/24;deny all;
}
}
##准备站点目录
mkdir -p /app/code/buy/  ##首页端
echo '这是首页' >/app/code/buy/index.html
mkdir -p /app/code/buy/admin/ ##管理端
echo '这是管理端' >/app/code/buy/admin/index.html
##测试
curl -H Host:buy.oldboylinux.cn  http://10.0.0.8/admin/
curl -H Host:buy.oldboylinux.cn  http://172.16.1.8/admin/

7.3 浏览器缓存

给cxk网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天,图片缓存1小时
##给cxk.conf设置缓存
server {listen       80;server_name  cxk.oldboylinux.cn;error_log    /var/log/nginx/cxk.oldboylinux/error_log notice;access_log   /var/log/nginx/cxk.oldboylinux/access-log main;root   /app/code/cxk;location / {index  index.html;}## uri包含.html或者.js或者.css缓存一天location ~* \.(html|js|css)$ {expires 1d;}location ~* \.(jpg|jpeg|png|gif|bmp)$ {expires 1h;}
}

7.4 location 规则小结

location规则说明
location / {xxxx}默认规则,保底,location规则在进行匹配的时候,其他的规则都匹配失败了,这时候匹 配默认的规则
location /admin/ {}

用于匹配请求的uri

buy.oldboylinux.cn/admin/

location ~ \. (jpg|jpeg)$ {}支持正则,区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg
 location ~* \. (jpg|jpeg)$ {}支持正则,不区分大小写 cxk.oldboylinux.cn/lidao/lidao.jpg

8. 搭建高清视频下载站

搭建要求:

1. 浏览器打开后,显示目录结构(类似清华源结构)

2. 增加svip功能

3. 增加统计功能,统计nginx服务的状态,访问情况

8.1 autoindex模块

autoindex模块说明
autoindex on开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在
autoindex_localtime on显示本地时间
autoindex_exact_size off  是否显示精确的文件的大小. off表示以人类可读形式显示大小

##编写vip.conf配置文件
server {listen 80;server_name vip.oldboylinux.cn;root /app/code/vip;error_log /var/log/nginx/vip.oldboylinux/error.log notice;access_log /var/log/nginx/vip.oldboylinux/access.log main;charset utf8; ##编码格式autoindex on; ##目录索引autoindex_localtime on;  ##显示当地时间 autoindex_exact_size off; ##显示文件大小location / {index index.html;}
}
nginx -t
systemctl reload nginx
##测试

8.2 增加svip认证功能

1. 增加一个svip目录,里面创建文件

2. 增加认证功能(用户名和密码)

3. auth_basic模块

yum install -y httpd-tools ##安装工具
#创建文件
htpasswd -bc /etc/nginx/user  xzb666 1  ##xzb666是用户名 1是密码
##修改权限
chmod 600 /etc/nginx/user
chown nginx.nginx /etc/nginx/user
##修改vip.conf配置文件
server {listen 80;server_name vip.oldboylinux.cn;root /app/code/vip;error_log /var/log/nginx/vip.oldboylinux/error.log notice;access_log /var/log/nginx/vip.oldboylinux/access.log main;charset utf8;autoindex on;autoindex_localtime on;autoindex_exact_size off;location / {index index.html;}location /svip/{auth_basic "input password"; ###输出提示,根据不同浏览器,可能不显示auth_basic_user_file /etc/nginx/user; ## #指定用户名,密码文件}
}
##测试

8.3 增加统计功能

stub_status模块/指令,显示nginx服务的状态,用户访问的状态

##修改vip.conf配置文件
server {listen 80;server_name vip.oldboylinux.cn;root /app/code/vip;error_log /var/log/nginx/vip.oldboylinux/error.log notice;access_log /var/log/nginx/vip.oldboylinux/access.log main;charset utf8;autoindex on;autoindex_localtime on;autoindex_exact_size off;location / {index index.html;}location /svip/{auth_basic "input password";auth_basic_user_file /etc/nginx/user;}location /status{stub_status; ##显示nginx服务的状态,用户访问的状态}
}
##测试

 9. 动态网站架构

9.1 概述

网站架构说明与特点性能
静态网站网站仅仅包含:html,css样式,js脚本,图 片,视频 ngx直接次处理的资源静态资源只需要web服务器即可:nginx,可以承受较 高的访问量. 不支持动态的功能,注册,评论,静态网站功 能单一
动态网 站动态网站一般是通过开发语言实 现:java,php,python,Golang...动态资源页面需要,服务器进行处理 nginx+php/tomcat +数据库 处理后把结果返回给用户

9.2 LNMP架构细节

9.3 部署一份开发的php代码 

9.3.1 数据库准备

1. 数据库服务器地址:10.0.0.51/172.16.1.51

2. 数据库:mariadb

##安装数据库mariadb-server 服务端  mariadb 客户端
yum install -y mariadb-server  
##启动服务
systemctl enable mariadb
systemctl start mariadb
##检查
ss -lntup |grep mysqld
ps -ef |grep mysql 

 数据库安全配置
mysql_secure_installation #仅仅刚安装的时候运行.仅首次运行即可.
Enter current password for root (enter for none):回车
Set root password? [Y/n]  Y设置密码
Remove anonymous users? [Y/n]  Y #删除数据库中的匿名用户(没有用户名的用户,容易导致安全问题)
Disallow root login remotely? [Y/n] Y #是否禁止root远程登录
Remove test database and access to it? [Y/n] Y  ##是否删除test测试用的数据库
Reload privilege tables now? [Y/n]  Y  ##是否更新权限信息表
进入数据库内部
mysql -uroot -p1  ##-u后面接用户名,-p后面接自己自己设置的密码
##查看系统所有的数据库.
show databases;
##查看库里的表
show tables from mysql;
##创建数据库
create database wordpress;
#创建用户,进行授权
grant all on  wordpress.* to 'wordpress'@'localhost' identified by '1'; ##可以通过172.16.1.%进行授权局域网访问,密码是1
grant all on  wordpress.* to 'wordpress'@'172.16.1.%' identified by '1'; ##localhost表示只能在数据库本地使用.密码是1
##grant 所有权限   on  数据库.*  to  '用户名'@'白名单'
##删除数据库(极其危险)
drop  database  wordpress;
删除用户
drop user 'wordpress'@'172.16.1.%' ;
drop user 'wordpress'@'localhost' ;
#测试本地连接
mysql -uwordpress -p1
#测试远程连接
mysql -uwordpress -p1  -h 172.16.1.51 ##-h后面接数据库服务端地址

9.3.2 php准备

环境准备
##这里安装php7.x,具体看自己要求
##1. 配置yum源
[webtatic-php]
name = php Repository
baseurl = http://repo.webtatic.com/yum/el7/x86_64/
enabled =1
gpgcheck = 0
##2.安装php依赖
yum install -y php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mcrypt php72w-mbstring  php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-pecl-memcached php72w-pecl-redis php72w-pecl-mongodb
##3. 启动
systemctl enable php-fpm
systemctl start  php-fpm
##4. 检查
ss -lntup |grep php
ps -ef |grep php

统一nginx与php用户,需要修改php配置文件
vim /etc/php-fpm.d/www.conf
8:user = nginx 
10:group = nginx

 9.3.3 Nginx准备

##编写blog配置文件
server {listen 80;server_name blog.oldboylinux.cn;root /app/code/blog;access_log /var/log/nginx/blog/access.log  main;error_log /var/log/nginx/blog/error.log notice;location / {index index.php;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}
##创建站点目录
mkdir -p /app/code/blog
##创建日志目录
mkdir -p log /var/log/nginx/blog/
测试nginx+php动态 
##创建测试文件
vim /app/code/blog/index.php
<?php
phpinfo();
?>

测试php+mysql
vim /app/code/blog/index.php
<?php
##数据库地址
$db_host='172.16.1.51';
##数据库用户名
$db_user='wordpress';$db_pass='1';$link_id=mysqli_connect($db_host,$db_user,$db_pass);if($link_id){echo "mysql successful by oldboy xzb996!\n" ;}else{echo "connection failed!\n" ;}
?>

9.3.4 部署代码与设置权限 

##解压
unzip wordpress-6.5.3-zh_CN.zip
mv wordpress/* /app/code/blog/
##修改权限
chown -R nginx.nginx /app/code/blog/
##浏览器解析访问

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML基础知识

介绍 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是一种用于创建网页的标准标记语言。它描述了一个网站的结构骨架&#xff0c;使得浏览器能够展示具有特定格式的文本、链接、图片和其他内容。以下是HTML的一些基础知识&#xff1a; HT…

骨传导耳机哪个牌子好?自费测评5大爆款骨传导耳机,高能不断!

随着科技的飞速发展&#xff0c;耳机市场也迎来了一次又一次的革新。从有线到无线&#xff0c;从入耳式到头戴式&#xff0c;每一次技术的突破都为用户带来了全新的听觉体验。近年来&#xff0c;骨传导耳机以其独特的传声方式和健康舒适的佩戴体验&#xff0c;逐渐成为运动爱好…

初识Linux之指令(二)

一&#xff1a;head指令 head 与 tail 就像它的名字一样的浅显易懂&#xff0c;它是用来显示开头或结尾某个数量的文字区块&#xff0c;head 用来显示档案的 开头至标准输出中&#xff0c;而 tail 想当然尔就是看档案的结尾。 语法&#xff1a;head 【参数】 【文件】 功能&…

docker (desktopcompose) download

docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell

Loss:Objects as Points

目录 3. 预备知识4. 物体作为点4.1. 3D 检测4.2. 人体姿态估计4-(1). 物体作为点的核心概念4-(2). 从点到边界框的推理过程4-(3). 3D 检测4-(4). 人体姿态估计5. 实现细节目录 3. 预备知识4. 物体作为点4.1. 3D 检测4.2. 人体姿态估计4-(1). 物体作为点的核心概念4-(2). 从点到…

微知-Mellanox提供的一个不错的测试rdma_cm方式建链的工具软件ucmatose?(ucmatose; ucmatose -s 1.1.1.1)

文章目录 快速命令获取背景实验server端客户端一个错误的情况无法建链&#xff1a; rpm安装包&#xff1a;librdmacm-utils-48.0-1.0.1.an8.x86_64详细介绍综述 快速命令获取 #server端 ucmatose# client端 ucmatose -s 1.1.1.1背景 平时使用rdma cm建链的测试一般使用ib_wri…

算法:974.和可以被K整除的子数组

题目 链接:leetcode链接 思路分析&#xff08;前缀和 同余定理&#xff09; 首先&#xff0c;我们要了解一下什么是同余定理 同余定理&#xff1a; 如果&#xff08;a - b&#xff09;/ p k …… 0 则 a % p b % p 证明我写在草稿纸上&#xff0c;如下图&#xff1a; 初…

Ubuntu QT 交叉编译环境搭建

文章目录 下载安装qtCreatornot a valid identifier 的错误 安装g下载并安装交叉编译器下载交叉编译器安装交叉编译器 下载编译 ARM 的Qt平台源码配置arm的QT平台 下载安装qtCreator 去QT下载官网下载对应需要的QT软件。 这里下载5.12.96版本的 改变安装包权限&#xff0c;…

红海云首届粤港澳大湾区人力资源服务创新创业大赛斩获殊荣

10月11日&#xff0c;由广东省人力资源和社会保障厅、广州市人民政府主办&#xff0c;广州市人力资源和社会保障局承办的“首届粤港澳大湾区人力资源服务创新创业大赛”决赛落下帷幕&#xff0c;红海云凭借领先的HR数字化产品创新实践斩获大赛三等奖。 本次大赛以“激活人力创…

21c RAC CLSRSC-143 CLSRSC-150 crsgpnp.pm line 2063

CLSRSC-143:Failed to create a peer profile for Oracle Cluster gpnp using ‘gpnptool’(error code 1) 21c RAC GI安装时&#xff0c;在跑root.sh时报错如下&#xff1a; 查看了下crsgpnp.pm line 2063为如下原代码 第一感觉是主机名太长了&#xff0c;将主机名缩减后…

基础IO -- 理解文件(1)

目录 一&#xff1a;回顾文件 二&#xff1a;加深对文件的理解 1.概念 2.以w写方式打开 3.以a追加方式打开 4.重定向 一&#xff1a;回顾文件 以前学习过在C语言中的文件操作&#xff0c; 但那根本是不足以理解文件的&#xff0c;即站在语言角度是不可能理解文件的 我们要…

3. 单例模式唯一性问题—构造函数

1. 构造函数带来的唯一性问题指什么&#xff1f; 对于不继承MonoBehaviour的单例模式基类 我们要避免在外部 new 单例模式类对象 例如 &#xff08;完整单例模式定义在上一节&#xff09; public class Main : MonoBehaviour {void Start(){// 破坏单例模式的唯一性&#xf…

电能表预付费系统-标准传输规范(STS)(6)

6. POSToTokenCarrierInterface 应用层协议 6.1 APDU: ApplicationProtocolDataUnit 应用协议数据单元 6.1 .1 Data elements in the APDU The APDU is the data interface between the POSApplicationProcess and the application layer protocol and comprises the data e…

新装ubuntu22.04必做两件事,不然可能没法用

一、换服务源 在全部里面找到软件和安装&#xff1b;打开后 在更多里面匹配一下最适合自己的软件源&#xff1b;这个过程比较漫长&#xff1b;要耐心等待 二、换软件安装中心 先执行&#xff1a; sudo apt upgrade 后执行&#xff1a; sudo apt install plasma-discover…

Rust默认使用UTF-8编码来解析源代码文件。如果在代码中包含无法用UTF-8编码表示的字符,编译器会报错!

文章目录 Rust默认编码示例在ANSI编码下中文显示正常的代码在UTF-8编码下将显示不正常在编译时&#xff0c;Rust使用UTF-8编码来解析代码&#xff0c;发现无法用UTF-8编码表示的字符&#xff0c;于是编译器报错 Rust默认编码 Rust 语言默认使用 UTF-8 编码来解析源代码文件。如…

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…

10.12学习日志

一.期望与方差 接上篇 2.方差 方差是统计学中一个重要的概念&#xff0c;用于衡量随机变量或一组数据的离散程度。它反映了数据点与其平均值之间的偏离程度。方差越大&#xff0c;数据点越分散&#xff1b;方差越小&#xff0c;数据点越集中。 对于一个随机变量 X&#xff…

JavaSE——集合7:Set接口实现类—TreeSet

目录 一、TreeSet基本介绍 二、TreeSet核心方法 三、TreeSet排序方法 四、TreeSet源码解析 1.无参构造时&#xff0c;底层是创建TreeMap对象 2.有参构造时&#xff0c;底层也创建TreeMap对象 3.执行add方法 4.执行put方法 一、TreeSet基本介绍 TreeSet是 Java 集合框架…

【报错解决】安装scikit-rebate包报错

scikit-rebate ReBATE是一套基于Relief的机器学习特征选择算法 报错信息 解决方案 conda install numpy scipy scikit-learnpip install skrebate依次运行以上两步&#xff0c;即可成功安装&#xff01;

QT的核心机制 对话框资源

案例 1、键盘按下w&#xff0c;s&#xff0c;a&#xff0c;d键分别为标签向上&#xff0c;下&#xff0c;左&#xff0c;右移动 鼠标按下获取本地坐标&#xff0c;全局坐标 鼠标双击获取本地坐标&#xff0c;全局坐标 鼠标移动获取本地坐标&#xff0c;全局坐标 让鼠标跟踪…