树莓派4B arm64 搭建 docker+drone+gitea
树莓派4B arm64 搭建 docker+drone+gitea
记录时间: 2023年02月10日
树莓派烧录
如何用树莓派搭建一台永久运行的个人服务器?
https://mp.weixin.qq.com/s?__biz=MzI5NjA0ODkwNA==&mid=2651847658&idx=1&sn=267a1257b43d4a76f2a081ed157b77f9&chksm=f7b11b8dc0c6929b768fb1314c9dbcb75a5079ac24080294102dc72b349944750d8b32916f42&scene=27
树莓派安装官方系统,无桌面版本,最后发现自己是小丑!!!-哔哩哔哩
https://b23.tv/6xC0kiQ
- 树莓派官网:https://www.raspberrypi.com/
- 下载安装烧录工具:Raspberry Pi OS
- https://downloads.raspberrypi.org/imager/imager_latest.exe
- 下载Pi OS64位精简镜像:Raspberry Pi OS (64-bit) Raspberry Pi OS Lite
- https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64-lite.img.xz
- 烧录完成后在boot分区加入文件
- ssh
- 空白文件
- userconf.txt
- 使用openSSL(openssl passwd -6)生成密码(raspberry)
- wpa_supplicant.conf
- 不能是windows的换行符
- ssh
- 插入内存卡启动, 使用Xshell连接树莓派
- 地址:raspberrypi
户名:pi
密码:raspberry
- 地址:raspberrypi
更换国内镜像站
清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/
# aarch64 用户:编辑 `/etc/apt/sources.list` 文件,用以下内容取代:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main
更新软件源列表
sudo apt-get update
(可选)更新升级以安装软件包,这个过程耗时较长
sudo apt-get upgrade
启用树莓派FTP传输协议
#FTP Server安装
sudo apt-get install vsftpd
#使用指令启动FTP服务:
sudo service vsftpd start
#允许树莓派写入权限:
sudo nano /etc/vsftpd.conf
#找到 write_enable=YES 的,将前面的 # 号删除即可
#删除注释符号后,按 Ctrl + X 保存,输入 Y 确认
修改时区
sudo dpkg-reconfigure tzdata
#找到亚洲 Asia,然后选择 shanghai 就可以了。
开机自启 ssh
sudo raspi-config
#进入选择找到 interfacing option 选择,然后找到 ssh,按回车使能 enable 就可以了。
docker相关软件安装
https://www.bilibili.com/read/cv17137378
安装docker
#可以直接使用脚本安装:
sudo curl -sSL https://get.docker.com | sh
#也可以使用国内 daocloud 一键安装命令:
sudo curl -sSL https://get.daocloud.io/docker | sh
#把 pi 用户添加到 docker 用户组,这样在执行 docker 命令时就不需要每次都带 sudo
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker#安装完毕后可以使用如下命令检查是否安装成功:
docker -v
#设置开机自启动:
sudo systemctl enable docker
配置阿里云镜像加速
Docker必备六大国内镜像
https://www.cnblogs.com/boonya/p/15954368.html
#配置阿里云镜像加速
#创建文件
sudo mkdir -p /etc/docker
#写入配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://lz2nib3q.mirror.aliyuncs.com"]
}
EOF
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置查看是否配置成功
sudo docker info#我的阿里加速链接
#https://ma4s1a5t.mirror.aliyuncs.com
常用命令
#查看 Docker 版本
sudo docker -v
sudo docker pull 仓库/镜像:版本(留空的话默认为 latest)
sudo docker run 加参数,用来创建容器
#查看运行容器
sudo docker ps
#查看所有下载的镜像
sudo docker images
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置
sudo docker info
#关闭docker服务
systemctl stop docker.socket
systemctl stop docker
安装 portainer - docker 管理图形化
官方文档
https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux
#下载 Docker 图形化界面 portainer 的镜像
sudo docker pull portainer/portainer-ce
#创建 portainer 数据卷
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-aarch64" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose -v
其他
数据卷
两个容器通过数据卷来数据共享
#创建数据卷
docker volume create my-vol
#数据卷列表
docker volume ls
#查看数据卷具体信息
docker volume inspect my-vol
#删除数据卷
docker volume rm my-vol
#清除无主的数据卷
docker volume prune#启动一个容器并挂载一个数据卷到容器的/webapp目录(两种方式:)
docker run -d -P --name nginx -v my-vol:/webapp nginx
docker run -d -P --name nginx --mount source=my-vol,target=/webapp nginx
#如果本地数据卷或者本地目录尚未创建,-v命令则会自动创建,--mount则会报错
#如果是容器里的目录不存在,两者都会自动创建
gitea自部署Git库
小小树莓派干大事-自部署Git库(一)
https://defloop.com/xiao-xiao-shu-mei-pai-gan-da-shi-zi-bu-shu-gitku-er/
docker部署gitea
https://zhuanlan.zhihu.com/p/563413410
# 然后拉取镜像
sudo docker pull gitea/gitea:latest
# 运行容器
sudo docker run -itd \
--privileged=true \
--restart=always \
--name=gitea \
-p 3022:22 \
-p 3000:3000 \
-v /home/docker/gitea/data:/data \
gitea/gitea:latest
访问地址: http://192.168.1.6:3000/
安装界面修改参数
#服务器域名
192.168.1.6:3000
#SSH服务端口
3022
#http服务端口
3000
Drone(基于Gitea)
如何在 Raspberry Pi 上设置 Drone CI(以及为什么不应该)
https://devpress.csdn.net/cloudnative/62fb70c9c6770329308000a4.html#devmenu3
轻量级CI/CD自动构建平台Gitea+Drone保姆级实践教程
https://huaweicloud.csdn.net/63311ad4d3efff3090b522e6.html
【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署
https://blog.csdn.net/weixin_42029283/article/details/128658518
在gitea中创建OAuth应用
- 重定向URI填写: http://192.168.1.6:20080/login
- 记下CLIENT_ID与CLIENT_SECRET
安装drone-server
# 下载Drone-server镜像
sudo docker pull drone/drone:latest
# 开启debug
# --env=DRONE_LOGS_DEBUG=true \
# 运行Drone-server
sudo docker run --privileged=true \--volume=/home/docker/drone-server/data:/data \--env=DRONE_GITEA_SERVER=http://192.168.1.6:3000 \--env=DRONE_GITEA_CLIENT_ID=ec2a1045-4b88-4a4e-a290-f061bc4e2356 \--env=DRONE_GITEA_CLIENT_SECRET=7WAfS57DtEW2NmdVwIk1rfkns02LxQKZWp4F5StFZaJB \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58 \--env=DRONE_SERVER_HOST=192.168.1.6:20080 \--env=DRONE_SERVER_PROTO=http \--env=DRONE_USER_CREATE=username:bxuits,admin:true \--publish=20080:80 \--publish=20443:443 \--restart=always \--detach=true \--env=TZ=Asia/Shanghai \--name=drone-server \drone/drone:latest
安装drone-runner-docker
# 下载Drone-runner-docker镜像
sudo docker pull drone/drone-runner-docker:latest
# 运行drone-runner-docker
sudo docker run --detach --privileged=true \--volume=/var/run/docker.sock:/var/run/docker.sock \--env=DRONE_RPC_PROTO=http \--env=DRONE_RPC_HOST=192.168.1.6:20080 \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58\--env=DRONE_RUNNER_CAPACITY=1 \--env=DRONE_RUNNER_NAME=drone-runner-docker \--env=DRONE_UI_USERNAME=root \--env=DRONE_UI_PASSWORD=root \--publish=23000:3000 \--restart=always \--name=drone-runner-docker \--env=TZ=Asia/Shanghai \drone/drone-runner-docker:latest
nginx安装
https://blog.csdn.net/weixin_46244732/article/details/114315708
#拉取镜像
sudo docker pull nginx:latest
#先启动
sudo docker run --name nginx -d \
-p 80:80 \
nginx:latest
#复制容器配置文件
sudo mkdir /home/docker/nginx
sudo docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx/nginx.conf
sudo docker cp nginx:/etc/nginx/conf.d /home/docker/nginx/conf.d
sudo docker cp nginx:/usr/share/nginx/html /home/docker/nginx/html
停止并移除容器
sudo docker stop nginx
sudo docker rm nginx
再次启动容器并作目录挂载
sudo docker run --name nginx -d --privileged=true \
-v /home/docker/common-data:/home/docker/common-data \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-p 80:80 \
--restart=always \
nginx:latest
nginx 读取文件配置
#打开
sudo nano /home/docker/nginx/conf.d/default.conf
#添加location /release {root /home/docker/common-data;autoindex on;}
#重启后访问
http://192.168.1.6/release/
.drone.yml配置
【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署
https://blog.csdn.net/weixin_42029283/article/details/128658518
kind: pipeline # kind 属性定义了对象的种类。此示例定义了一个管道对象。
type: docker # type 属性定义管道的类型。此示例定义了一个 Docker 管道,其中每个管道步骤都在 Docker 容器内执行。
name: HBuilderXSsq # name 属性定义了管道的名称。您可以为您的项目定义一个或多个管道
platform:os: linuxarch: arm64steps: # 步骤部分定义了一系列串行执行的管道步骤。如果管道中的任何步骤失败,管道将立即退出- name: start # name 属性定义管道步骤的名称image: alpine:latest # image 属性定义了一个执行 shell 命令的 Docker 镜像。您可以使用来自任何 DockerHub 中的任何 Docker镜像。volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置- name: common-datapath: /home/docker/common-data # 将应用打包好的Jar和执行脚本挂载出来commands: # commands 属性将在 Docker 容器内执行的 shell 命令列表定义为容器入口点。如果任何命令返回非零退出代码,则管道步骤将失败。- ls /home/docker/common-data- echo 删除release目录- rm -rf /home/docker/common-data/release- echo 创建release目录- mkdir -p /home/docker/common-data/release- echo 复制release目录- cp -r ssq/unpackage/release/* /home/docker/common-data/release/
volumes: # 定义流水线挂载目录,用于共享数据- name: common-datahost:path: /home/docker/common-data # 从宿主机中挂载的目录
相关文章:
树莓派4B arm64 搭建 docker+drone+gitea
树莓派4B arm64 搭建 dockerdronegitea 记录时间: 2023年02月10日 树莓派烧录 如何用树莓派搭建一台永久运行的个人服务器? https://mp.weixin.qq.com/s?__bizMzI5NjA0ODkwNA&mid2651847658&idx1&sn267a1257b43d4a76f2a081ed157b77f9&chksmf7b11…...
Java的JDBC编程
目录 1. 打开IDEA,新建Project 2. 引入依赖 (1)下载驱动包 (2)将驱动包导入Project 3. 编写代码 (1)创建数据源 (2)让代码和数据库服务器建立联系 (3&…...
CSS:块格式化上下文(BFC)
块格式化上下文是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 块格式化上下文(BFC)的创建 满足以下条件将创建块格式化上下文: 根元素()浮动元素(float 值不为 none)绝对定位元素…...
paddle表情识别部署
表情识别模块1.环境部署1.1同样采用fastDeploy库1.2相关模型2.封装成静态库2.1参考[百度Paddle中PP-Mattingv2的部署并将之封装并调用一个C静态库](https://blog.csdn.net/weixin_43564060/article/details/128882099)2.2项目依赖添加2.3生成成功3.test3.1创建emotion_test项目…...
Python-第五天 Python函数
Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义:2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…...
【Python学习笔记】28.Python3 错误和异常
前言 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。 Python3 错误和异常 Python 有两种错误很容易辨认:语法错误和异常。 Python assert…...
SQLServer 迁移到 MySQL 工具对比
我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于 SQL Server开发的C/S 产品转为 MySQL云产品)。首次需要数据转换是测试环节,当时为了快速验证新研发云产品性能与结果准确性(算法类&am…...
分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)
首先仪表板的公共连接类似:http://localhost:37799/webroot/decision/link/Bo6B 当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。 public String getShareReport(HttpServletRequest req, HttpServletResponse res, @FinePathVariable("linkId"…...
设计模式--适配器模式 Adapter Pattern
设计模式--适配器模式 Adapter Pattern适配器模式 Adapter Pattern1.1 基本介绍1.2 工作原理类适配器模式对象适配器模式接口适配器模式小结适配器模式 Adapter Pattern 1.1 基本介绍 (1)适配器模式将某个类的接口转换成为客户端期望的另一个接口表示&…...
PVE虚拟机篇-rest api
rest api官方介绍 Proxmox VE API rest api文档 rest api文档 rest api token 调用pve rest api ,有两种认证方式 Ticket Cookie Ticket Cookie的方式是最为推荐的,获取的方式为,通过post请求,发送用户名和密码到pve的server端获取tok…...
2022-2025学年面向中小学生的白名单全国性竞赛活动清单及官网地址链接
**资料来源:爬虫爬取。** 教育部办公厅 工业和信息化部办公厅关于公布 首批特色化示范性软件学院名单的通知 教育部办公厅 工业和信息化部办公厅关于公布首批特色化示范性软件学院名单的通知 - 中华人民共和国教育部政府门户网站 教育部办公厅关于2022-2025学年面向中小学生…...
Python 高级编程之生成器与协程进阶(五)
文章目录一、概述二、生成器1)生成器和迭代器的区别2)生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3)生成器表达式4)yield关键字5)生成器函数6)return 和 yield 异同7)yield的使…...
Django框架之视图和URL
视图和URL 站点管理页面做好了, 接下来就要做公共访问的页面了.对于Django的设计框架MVT. 用户在URL中请求的是视图.视图接收请求后进行处理.并将处理的结果返回给请求者.使用视图时需要进行两步操作 1.定义视图2.配置URLconf 1. 定义视图 视图就是一个Python函数,…...
Python 的Tkinter包系列之七:好例子补充2
Python 的Tkinter包系列之七:好例子补充2 英汉字典(使用文本文件记录英语单词和解释)、简单的通信录(使用SQLite数据库记录人员信息) 一、tkinter编写英汉字典 先看效果图: 词典文件是一个文本文件&…...
每日一练-等差数列
等差数列🍀题目描述🌿解题思路🌸Python源码📧Summary📆Date: 2023年2月10日 🎬Author: 小 y 同 学 📃Classify: 蓝桥杯每日一练 🔖Language: Python 🍀题目描述 题意 …...
使用动态参数构建CUDA图
文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来,CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起,并使用指…...
在Fortran中调用Python教程
前言Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP AP…...
04-PS人像磨皮方法
1.高斯模糊磨皮 这种方法的原理就是建立一个将原图高斯模糊后图层, 然后用蒙版加画笔或者历史画笔工具将需要磨皮的地方涂抹出来, 通过图层透明度, 画笔流量等参数来控制磨皮程度 1.新建图层(命名为了高斯模糊磨皮), 混合模式设置为正常, 然后选择高斯模糊, 模糊数值设置到看…...
nginx反向代理+负载均衡上传webshell重难点+apache漏洞
nginx反向代理 nginx 负载均衡 负载均衡的策略 1、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB… upstream mysvr { server 192.168.137.131; server 192.168.137.136; }2、weight:跟据配置…...
transition组件的使用
<template><button click"flag !flag">切换</button><transition name"fade"><div v-if"flag" class"box"></div></transition> </template><script setup lang"ts"&g…...
多行文本在块元素中垂直居中
单行文本垂直居中对齐 在块元素中,让单行文本居中,可以使用line-height等于块元素的高,即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…...
在 WebAssembly 中使用 C/C++ 和 libbpf 编写 eBPF 程序
作者:于桐,郑昱笙 eBPF(extended Berkeley Packet Filter)是一种高性能的内核虚拟机,可以运行在内核空间中,用来收集系统和网络信息。随着计算机技术的不断发展,eBPF 的功能日益强大,…...
leveldb源码解析六——compact
compact分为manual_compaction、minor_compaction、major_compaction,统一由MaybeScheduleCompaction触发: void DBImpl::MaybeScheduleCompaction() {mutex_.AssertHeld();if (background_compaction_scheduled_) {// Already scheduled} else if (shu…...
数据结构(二):单向链表、双向链表
数据结构(二)一、什么是链表1.数组的缺点2.链表的优点3.链表的缺点4.链表和数组的区别二、封装单向链表1. append方法:向尾部插入节点2. toString方法:链表元素转字符串3. insert方法:在任意位置插入数据4.get获取某个…...
COCO物体检测评测方法简介
本文从ap计算到map计算,最后到coco[0.5:0.95:0.05] map的计算,一步一步拆解物体检测指标map的计算方式。 一、ap计算方法 一个数据集有多个类别,对于该数据库有5个gt,算法检测出来10个bbox,对于人这个类别来说检测有…...
记一次上环境获取资源失败的案例
代码结构以及资源位置 测试代码 RestController RequestMapping("/json") public class JsonController {GetMapping("/user/1")public String queryUserInfo() throws Exception {// 如果使用全路径, 必须使用/开头String path JsonController.class.ge…...
实战超详细MySQL8离线安装
在RedHat中,RPM Bundle 方式安装MySQL8。建议一定要用 RPM Bndle 版本安装,包全。官网下载:https://dev.mysql.com/downloads/mysql/1.卸载mariadb,会与MySQL安装冲突。rpm -qa | grep mariadb 查看有无mariadb如果有࿰…...
依赖倒置原则|SOLID as a rock
文章目录 意图动机:违反依赖倒置原则解决方案:C++中依赖倒置原则的例子依赖倒置原则的优点1、可复用性2、可维护性在C++中用好DIP的标准总结本文是关于 SOLID as Rock 设计原则系列的五部分中的 最后一部分。 SOLID 设计原则侧重于开发 易于维护、可重用和可扩展的软件。 在…...
Webpack的知识要点
在前端开发中,一般情况下都使用 npm 和 webpack。 npm是一个非常流行的包管理工具,帮助开发者管理项目中使用的依赖库和工具。它可以方便地为项目安装第三方库,并在项目开发过程中进行版本控制。 webpack是一个模块打包工具ÿ…...
handler解析(2) -Handler源码解析
目录 基础了解: 相关概念解释 整体流程图: 源码解析 Looper 总结: sendMessage 总结: ThreadLocal 基础了解: Handler是一套 Android 消息传递机制,主要用于线程间通信。实际上handler其实就是主线程在起了一…...
网站建设全包/seo优化主要工作内容
[摘要] 本文将通过实例介绍一种在ubuntu环境下连接Android手机的设置方法。通过本文读者可能会了解到通过adb命令连接手机的方式。 一、引言 Android手机应用开发基本离不开Android手机,固然ADT提供了模拟器的支持,但对于较大型或者较复杂的应用来说&…...
商务网站建设/网站推广优化平台
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从…...
政府网站建设管理工作情况汇报/网页制作源代码
我试图在我的情节的左右两边加上填充。但是当我改变xlim和ylim时,图像变小了。我做错什么了?import matplotlib.pyplot as pltplt.rcParams[text.usetex] Falsefrom matplotlib.font_manager import FontPropertiesimport seaborn as sns%matplotlib in…...
网站改版提案/如何推广一个产品
spring-boot-plus V1.4.0发布 集成用户角色权限部门管理RBAC用户角色权限用户角色权限部门管理核心接口介绍Shiro权限配置Shiro权限配置数据库模型图spring-boot-plus初始化SQL下载获取验证码可配置是否启用验证码默认未启用如已启用验证码校验,登陆时,需…...
WordPress主题站/陕西seo优化
SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的…...
二级域名网站可以做关键词优化吗/搜索引擎优化seo的英文全称是
为什么80%的码农都做不了架构师?>>> uploadify插件支持多文件上传、进度条,有flash版本和html5版本,这里的例子flash版本。需要提示的是,flash版本需要放在服务器访问才有效果,本地访问html文件是没效果的…...