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

制作Unoconv项目的Docker镜像

制作Unoconv项目的Docker镜像

1 介绍

1.1 Unoconv

在Linux下将Office转换为pdf的很多包仅支持Windows,Unoconv是一个用LibreOffice转化文档的项目,已经归档(2025-3-31)。迁移后的新版本是unoserver,unoserver不太好用,我没安装成功,推荐使用Unoconv。

参考地址

# 归档版本
https://github.com/unoconv/unoconv# 新版本
https://github.com/unoconv/unoserver

1.2 LinuxServer.io

LinuxServer.io是一个借助docker将开源项目封装为镜像的组织团队。他们封装了很多有用的镜像。本文借助linuxserver封装的LibreOffice进行二次封装镜像。

参考地址

# linuxserver官网地址
https://www.linuxserver.io/# Github地址
https://github.com/linuxserver/

1.3 LibreOffice

LibreOffice是一个功能强大的免费、开源的办公软件套件。由于LibreOffice官网没有见到封装docker镜像。所以本文使用LinuxServer.io封装的LibreOffice。

参考地址

# LibreOffice官网
https://www.libreoffice.org/# Github上linuxserver封装的LibreOffice地址
https://github.com/linuxserver/docker-libreoffice

1.4 KasmVNC

KasmVNC是一款开源的、基于Web 的 VNC 服务器,用户可以直接通过浏览器访问远程桌面,无需安装任何客户端。 lscr.io/linuxserver/libreoffice:7.6.7使用这个开源项目借助浏览器访问LibreOffice系统。

参考地址

# 官网
https://www.kasmweb.com/kasmvnc# Github上linuxserver封装的KasmVNC地址
https://github.com/linuxserver/docker-baseimage-kasmvnc

2 构建Unoconv镜像

2.1 下载linuxserver/libreoffice镜像

下载镜像

# lscr.io/linuxserver/libreoffice和linuxserver/libreoffice是同一个镜像# 下载linuxserver/libreoffice
docker pull linuxserver/libreoffice:7.6.7# 下载lscr.io/linuxserver/libreoffice
docker pull lscr.io/linuxserver/libreoffice:7.6.7

创建容器

docker run -itd --name pyunoconv linuxserver/libreoffice:7.6.7

在宿主机内将data.docx复制到unoserver容器中,用于文档转换测试。

docker cp data.docx pyunoconv:/home/

2.2 封装pyunoconv容器

(1)进入容器

# 进入容器
docker exec -it pyunoconv /bin/bash

(2)创建虚拟环境

⚠️ 注意:在linuxserver/libreoffice中自带Python,它是为linuxserver/libreoffice系统提供可视化支撑的(系统的Python环境),所以不能作为用户研发环境。如果使用系统的Python会出现下面错误。

error: externally-managed-environment× This environment is externally managed

Python虚拟环境

# 进入容器中的home目录
cd /home# 在home中创建虚拟环境
python -m venv pyunoconv# 激活虚拟环境
source ./pyunoconv/bin/activate

Python安装unoserver依赖

pip install --upgrade setuptools wheel
pip install unoconv

⚠️下面的报错需要执行 pip install --upgrade setuptools wheel

ERROR: Could not find a version that satisfies the requirement distutils (from versions: none)
ERROR: No matching distribution found for distutils

(3)测试unoserver

使用python时可使用subprocess包通过命令行的形式调用即可。

# 在将测试的office转化为pdf
unoconv -f pdf data.docx

执行结果

在这里插入图片描述

2.3 解决中文乱码

没安装中文字体会出现转换时都是空,无法转中文。解决方法将Windows下的C:\Windows\Fonts的字体全部打包为”Fonts.zip“,复制到容器中的/usr/share/fonts/

在宿主机中将"Fonts.zip"复制到容器中。

docker cp Fonts.zip pyunoconv:/home/

在pyunoconv容器中解压和移动字体

# 进入容器
docker exec -it pyunoconv /bin/bash# 进入目录
cd /home# 进入容器解压字体包
unzip Fonts# 将字体移动到字体目录下
mv Fonts/* /usr/share/fonts/

3 Web访问LibreOffice

基于Docker使用linuxserver/libreoffice:7.6.7镜像实现在线预览LibreOffice。由于linuxserver/libreoffice内置了KasmVNC,所以可以使用浏览器使用LibreOffice。

使用Docker创建镜像

docker run -d \--name=libreoffice \--security-opt seccomp=unconfined `#optional` \-e PUID=1000 \-e PGID=1000 \-e TZ=Etc/UTC \-p 3000:3000 \-p 3001:3001 \-v /path/to/config:/config \--restart unless-stopped \lscr.io/linuxserver/libreoffice:7.6.7

访问地址

端口3000是http的访问地址,端口3001是https是https的访问地址。

http://192.168.108.146:3000/

在这里插入图片描述

相关文章:

制作Unoconv项目的Docker镜像

制作Unoconv项目的Docker镜像 1 介绍 1.1 Unoconv 在Linux下将Office转换为pdf的很多包仅支持Windows,Unoconv是一个用LibreOffice转化文档的项目,已经归档(2025-3-31)。迁移后的新版本是unoserver,unoserver不太好…...

神经网络--拓扑排序+思维

1.c<0的点赋0&#xff0c;不然会影响后面的入度 2.最后输出层是出度为0的&#xff0c;且题干要求输出c大于0的 3.有q0的情况&#xff0c;所以输的事后就会有答案 https://www.luogu.com.cn/problem/P1038 #include<bits/stdc.h> #include<string> using nam…...

更强的视觉 AI!更智能的多模态助手!Qwen2.5-VL-32B-Instruct-AWQ 来袭

Qwen2.5-VL-32B-Instruct 是阿里巴巴通义千问团队于 2025 年 3 月 24 日开源的多模态大模型&#xff0c;基于 Apache 2.0 协议发布。该模型在 Qwen2.5-VL 系列的基础上&#xff0c;通过强化学习技术优化&#xff0c;以 32B 参数规模实现了多模态能力的突破。 核心特性升级&…...

逻辑过期怎么设计

设计“逻辑过期”通常用于缓存、令牌管理、数据有效性验证等场景&#xff0c;其核心是通过业务逻辑判断数据是否过期&#xff08;而非单纯依赖物理时间&#xff09;。以下是设计逻辑过期的关键思路和实现方案&#xff1a; 1. 核心思想 物理过期&#xff1a;基于固定的时间&…...

EMIF详解

一、EMIF的基本定义 EMIF&#xff08;External Memory Interface&#xff0c;外部存储器接口&#xff09; 是嵌入式处理器&#xff08;如DSP、FPGA、SoC&#xff09;用于连接外部存储器的专用硬件接口模块&#xff0c;负责管理处理器与存储器之间的地址/数据总线、控制信号及时…...

Kubernetes》》K8S》》Pod调度机制

nodeName 、nodeSelector nodeName 是强绑定&#xff0c;nodeSelector是弱绑定 强绑定&#xff0c;如果Node失效时&#xff0c;则会导致Pod也无法调度 apiVersion: v1 kind: Pod metadata:name: example-pod spec:# nodeName Pod应该被调度到哪个具体的节点上 强绑定nodeNam…...

具身智能机器人学习路线全解析

一、引言 具身智能机器人作为融合了机器人学、人工智能、认知科学等多领域知识的前沿技术&#xff0c;正逐渐改变着我们的生活和工作方式。从工业制造到家庭服务&#xff0c;从医疗护理到太空探索&#xff0c;具身智能机器人都展现出了巨大的潜力。对于想要深入了解和学习这一…...

【PGCCC】Postgres MVCC 内部:更新与插入的隐性成本

为什么 Postgres 中的更新操作有时感觉比插入操作慢&#xff1f;答案在于 Postgres 如何在后台管理数据版本。 Postgres 高效处理并发事务能力的核心是多版本并发控制&#xff08;MVCC&#xff09;。 在本文中&#xff0c;我将探讨 MVCC 在 Postgres 中的工作原理以及它如何影响…...

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之触摸屏 Touch)

目录 ESP-ADF外设子系统深度解析&#xff1a;esp_peripherals组件架构与核心设计&#xff08;输入类外设之触摸屏 Touch&#xff09;简介模块概述功能定义架构位置核心特性 触摸(Touch)外设触摸外设概述触摸外设API和数据结构外设层API&#xff08;periph_touch.h/periph_touch…...

Python高级爬虫之JS逆向+安卓逆向1.5节: 控制结构

目录 引言&#xff1a; 1.5.1 Python中的控制结构 1.5.2 条件控制 1.5.3 循环控制 1.5.4 跳转控制 1.5.5 爬虫不要接学生单 引言&#xff1a; 大神薯条老师的高级爬虫安卓逆向教程&#xff1a; 这套爬虫教程会系统讲解爬虫的初级&#xff0c;中级&#xff0c;高级知识&a…...

Spine-Leaf 与 传统三层架构:全面对比与解析

本文将详细介绍Spine-Leaf架构&#xff0c;深入对比传统三层架构&#xff08;Core、Aggre、Access&#xff09;&#xff0c;并探讨其与Full-mesh网络和软件定义网络&#xff08;SDN&#xff09;的关联。通过通俗易懂的示例和数据中心网络分析&#xff0c;我将帮助您理解Spine-L…...

微信小程序文字混合、填充动画有效果图

效果图 .wxml <view class"text" style"--deg:{{deg}}deg;"><view>混合父级颜色</view> </view> <view class"fill {{status?action:}}">文字颜色填充</view> <button bind:tap"setStatus"…...

山东大学软件学院创新项目实训开发日志(15)之中医知识问答历史对话查看bug处理后端信息响应成功但前端未获取到

在开发中医知识问答历史对话查看功能的时候&#xff0c;出现了前后端信息获取异同的问题&#xff0c;在经过非常非常非常艰难的查询之后终于解决了这一问题&#xff0c;而这一问题的罪魁祸首就是后端没有setter和getter方法&#xff01;&#xff01;&#xff01;&#xff01;&a…...

HttpSessionBindingListener 的用法笔记250417

HttpSessionBindingListener 的用法笔记250417 HttpSessionBindingListener 是 Java Servlet 规范中 唯一 由 被存储对象自身实现 的会话监听接口&#xff0c; 1. 核心功能 HttpSessionBindingListener 是一个由 会话属性对象自身实现 的接口&#xff0c;用于监听该对象被绑定…...

EuroCropsML:首个面向少样本时间序列作物分类的多国基准数据集

2025-04-15&#xff0c;由慕尼黑工业大学等机构创建的 EuroCropsML 数据集&#xff0c;这是一个结合了农民报告的作物数据与 Sentinel-2 卫星观测的时间序列数据集&#xff0c;覆盖了爱沙尼亚、拉脱维亚和葡萄牙。该数据集为解决遥感应用中作物类型数据空间不平衡问题提供了新的…...

《如何用 Function 实现动态配置驱动的处理器注册机制?》

大家好呀&#xff01;&#x1f44b; 今天我们来聊聊一个超实用的技术话题 - 如何用Java的Function接口实现动态配置驱动的处理器注册机制。听起来很高大上&#xff1f;别担心&#xff0c;我会用最简单的方式讲清楚&#xff01;&#x1f60a; 一、为什么要用Function实现处理器…...

PyTorch:学习 CIFAR-10 分类

&#x1f50d; 开始你的图像分类之旅&#xff1a;一步一步学习 CIFAR-10 分类 图像分类是计算机视觉中最基础的任务之一&#xff0c;如果你是初学者&#xff0c;那么以 CIFAR-10 为训练场是一个不错的选择。本文一步一步带你从零开始&#xff0c;学习如何用深度学习模型实现图…...

SpringBoot整合Thymeleaf模板:构建现代化Web视图层的完整指南

在Java Web开发领域&#xff0c;Thymeleaf作为一款自然模板引擎&#xff0c;凭借其优雅的语法和与Spring生态的无缝集成&#xff0c;已成为替代传统JSP的首选方案。本文将从技术整合、核心原理到生产实践&#xff0c;深度解析SpringBoot与Thymeleaf的协同工作方式。 一、Thymel…...

学习笔记十五——rust柯里化,看不懂 `fn add(x) -> impl Fn(y)` 的同学点进来!

&#x1f9e0; Rust 柯里化从零讲透&#xff1a;看不懂 fn add(x) -> impl Fn(y) 的同学点进来&#xff01; &#x1f354; 一、什么是柯里化&#xff1f;先用一个超好懂的生活比喻 假设你在点一个汉堡&#xff1a; 你说&#xff1a;我要点一个鸡腿汉堡&#xff01; 店员…...

软件安装包-yum

yum&#xff1a;软件管理的得力助手​ yum是一个软件下载安装管理的一个客户端&#xff0c;例如&#xff1a;小米应用商城、华为应用商城... Linux中软件包可能有依赖关系——yum会帮我们解决依赖关系的问题&#xff01; 1、软件包是什么&#xff1f; 在Linux下安装软件, 一个通…...

C++面试

C面试 c面试100题 1、封装多态继承 2、数据集合 3、 4、便于外部文件访问 5、只能通过对象访问 6、通过类名 7、构造函数、析构函数、拷贝构造函数、拷贝复制函数 8、将一个对象复制给新建的对象 9、没有返回值 10、类的对象中有指针&#xff0c;防止多个指针指向同…...

Java SpringBoot设置自定义web的图片本地路径

一&#xff0c;设置配置文件&#xff1a;application.properties my.config.image-pathD:\\Download\\images二&#xff0c;新增配置类&#xff1a;MyImagesConfig import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springfr…...

Python HTTP库——requests

文章目录 简介安装基本概念RESTfulAPIOAuth2.0Cookie和Session 初试GET请求POST请求PUT请求DELETE请求HEAD请求OPTIONS请求传递查询参数响应内容自定义响应头传递表单参数传递文件响应状态码响应头Cookies重定向和历史记录超时错误和异常Session对象请求和响应对象预处理请求SS…...

用idea配置springboot+mybatis连接postersql数据库

从socket开始&#xff0c;我们就要开始部署前后端的交互了&#xff0c;所以今天带来一份热度比较高的框架springboot&#xff0c;并教大家如何连接数据库。 框架 先给大家看一下目录结构&#xff0c;因为有些需要调用文件路径&#xff1a; 创建项目&#xff1a; 新版本可以…...

【补充篇】Davinci工具要求的dbc格式

1 简介 DBC文件是一种用于描述CAN(Controller Area Network,控制器局域网络)通信协议中报文和信号的格式化文件,其全称为“Database CAN”。DBC文件的核心作用是定义和解析CAN网络中的通信数据,包括节点、报文、信号及其属性等信息。 对于不同角色的工程师,DBC文件有着…...

IT资产管理(一)之GLPI安装及部署

一、GLPI 介绍 GLPI:Gestionnaire Libre de Parc Informatique 是一个免费的资产和 IT 管理软件包,提供 ITIL 服务台功能、许可证跟踪和软件审计。 GLPI 的主要功能: 服务资产和配置管理 (SACM):管理您的 IT 资产和配置,跟踪计算机、外围设备、网络打印机及其相关组件…...

RPCRT4!OSF_CCALL::ActivateCall函数分析之RPCRT4!OSF_CCALL结构中的Bindings--RPC源代码分析

第一部分&#xff1a; 1: kd> t RPCRT4!OSF_CCALL::ActivateCall: 001b:77bf5789 55 push ebp 1: kd> kc # 00 RPCRT4!OSF_CCALL::ActivateCall 01 RPCRT4!OSF_CASSOCIATION::AllocateCCall 02 RPCRT4!OSF_BINDING_HANDLE::AllocateCCall 03 RPCRT4!OS…...

docker登录AWS ECR拉取镜像

1、配置AWS 登录key [rootip-172-31-13-6 ~]# aws configure AWS Access Key ID [None]: XXXXXXXXXXX AWS Secret Access Key [None]: %%YYYDSRGTHFGFSGRTHTHE$RHTSG Default region name [None]: ap-southeast-1 Default output format [None]: json2、登录AWS ECR镜像仓库 …...

IntelliJ IDEA download JDK

IntelliJ IDEA download JDK 自动下载各个版本JDK&#xff0c;步骤 File - Project Structure &#xff08;快捷键 Ctrl Shift Alt S&#xff09; 如果下载失败&#xff0c;换个下载站点吧。一般选择Oracle版本&#xff0c;因为java被Oracle收购了 好了。 花里胡哨&#…...

MQTT协议与HTTP协议的对比分析

以下是MQTT协议与HTTP协议的对比分析&#xff0c;从协议特性到应用场景的系统性对比&#xff1a; 一、协议层级与设计目标对比 维度MQTTHTTP协议层级应用层协议&#xff08;基于TCP/IP&#xff09;应用层协议&#xff08;基于TCP/IP&#xff09;核心设计目标机器间轻量级消息通…...

jenkins凭据管理(配置github密钥)

1.凭据管理 添加两种类型的凭据&#xff0c;Username with password和Secret text(填的token) Username with password是github登录的用户名和密码&#xff0c;Secret text填的github生成的token&#xff0c;权限的限制更细&#xff0c;安全性更高一些 Dashboard -> Manag…...

B端小程序如何突破常规,成为企业获客新利器?

数据驱动的用户旅程优化 在当今竞争激烈的市场环境中&#xff0c;了解并优化用户的交互路径对于吸引和保留客户至关重要。B端小程序可以通过收集用户行为数据来分析用户偏好和使用习惯。例如&#xff0c;应用热图分析工具可以直观展示用户点击最频繁的区域&#xff0c;帮助企业…...

25.4.17学习总结

关于bcrypt算法 BCrypt 的主要特点和优点&#xff1a; 加盐 (Salting): BCrypt 会自动为每个密码生成一个随机的盐值 (salt) 并将其与密码组合在一起&#xff0c;然后再进行哈希。 盐值是随机数据&#xff0c;用于防止彩虹表攻击。 这意味着即使两个用户使用相同的密码&#x…...

java 设计模式 策略模式

简介 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;旨在定义一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户端。换句话说&#xff0c;策略模式通过将不同的算法…...

游戏盾和高防ip有什么区别

游戏盾和高防IP都是针对网络攻击的防护方案&#xff0c;但​​核心目标、技术侧重点和应用场景存在显著差异​​。以下是两者的详细对比分析&#xff1a; ​​一、核心定位与目标​​ ​​维度​​​​高防IP​​​​游戏盾​​​​核心目标​​抵御大流量网络攻击&#xff08…...

关于 雷达(Radar) 的详细解析,涵盖其定义、工作原理、分类、关键技术、应用场景、挑战及未来趋势,结合实例帮助理解其核心概念

以下是关于 雷达&#xff08;Radar&#xff09; 的详细解析&#xff0c;涵盖其定义、工作原理、分类、关键技术、应用场景、挑战及未来趋势&#xff0c;结合实例帮助理解其核心概念&#xff1a; 一、雷达的定义与核心功能 1. 定义 雷达&#xff08;Radar&#xff0c;Radio D…...

机器学习 Day11 决策树

1.决策树简介 原理&#xff1a;思想源于程序设计的 if - else 条件分支结构 &#xff0c;是一种树形结构。内部节点表示属性判断&#xff0c;分支是判断结果输出&#xff0c;叶节点是分类结果 。案例&#xff1a;以母亲给女儿介绍男朋友为例。女儿依次询问年龄&#xff08;≤3…...

【HFP】深入解析蓝牙 HFP 协议中呼叫转移、呼叫建立及保持呼叫状态的机制

目录 一、核心指令概述 1.1 ATCMER&#xff1a;呼叫状态更新的 “总开关” 1.2 ATBIA&#xff1a;指示器的 “精准控制器” 1.3 指令对比 1.4 指令关系图示 二、CIEV 结果码&#xff1a;状态传递的 “信使” 2.1 工作机制 2.2 三类核心指示器 三、状态转移流程详解 3…...

音频识别优化(FFT)

整合多频段检测、动态阈值调整和持续时长验证的完整代码实现&#xff0c;包含详细注释&#xff1a; #include "esp_dsp.h" #include "driver/i2s.h" #include "esp_log.h" #include "math.h" static const char* TAG "ADV_FRE…...

【Redis】Redis基本命令(1)

KEYS 返回所有满足样式&#xff08;pattern&#xff09;的key。 KEY * 返回所有key&#xff0c;不简易使用 性能问题&#xff1a;当 Redis 存储百万级键时&#xff0c;会消耗大量 CPU 和内存资源&#xff0c;Redis 是单线程模型&#xff0c;KEYS * 执行期间会阻塞其他所有命令…...

IDEA2024 pom.xml依赖文件包报红解决

异常&#xff1a; 原因&#xff1a; 本地的Maven Repository库中不存在对应版本的dependency依赖&#xff0c;所以导致报红。 解决&#xff1a; 方法1&#xff1a;找到对应项目&#xff0c;右键Sync Project 就可以了 方法2&#xff1a;修改setting中maven的自动更新&#xf…...

Qt 信号与槽复习

Qt 信号与槽复习 Qt 信号与槽&#xff08;Signals and Slots&#xff09;机制是 Qt 框架的核心特性之一&#xff0c;用于实现对象之间的通信。它提供了一种松耦合的方式&#xff0c;使得组件可以独立开发和复用&#xff0c;广泛应用于 GUI 编程、事件处理和跨模块交互。本文将…...

RestControllerAdvice 和 ControllerAdvice 两个注解的区别与联系

它们都用于实现全局的通用处理逻辑&#xff0c;主要应用在以下三个方面&#xff1a; 全局异常处理: 使用 ExceptionHandler 注解的方法。全局数据绑定: 使用 InitBinder 注解的方法。全局数据预处理: 使用 ModelAttribute 注解的方法。 联系: 核心功能相同: 两者都提供了上述…...

最快打包WPF 应用程序

在 Visual Studio 中右键项目选择“发布”&#xff0c;目标选“文件夹”&#xff0c;模式选“自包含”&#xff0c;生成含 .exe 的文件夹&#xff0c;压缩后可直接发给别人或解压运行&#xff0c;无需安装任何东西。 最简单直接的新手做法&#xff1a; 用 Visual Studio 的“…...

Java NIO Java 虚拟线程(微线程)与 Go 协程的运行原理不同 为何Go 能在低配机器上承接10万 Websocket 协议连接

什么是Java NIO&#xff1f; Java NIO&#xff08;New Input/Output&#xff09; 是Java 1.4&#xff08;2002年&#xff09;引入的一种非阻塞、面向缓冲区的输入输出框架&#xff0c;旨在提升Java在高性能和高并发场景下的I/O处理能力。它相比传统的 Java IO&#xff08;java…...

C# 对列表中的元素的多个属性进行排序

目录 前言一、OrderBy、OrderByDescending、ThenBy、ThenByDescending二、Sort 前言 在开发过程中&#xff0c;我们经常需要 根据列表中的元素的某个属性进行排序&#xff0c;下面我们将简单介绍常用的排序函数。 例如此处有一个类&#xff0c;拥有的元素为编号和值 public …...

OpenCV颜色变换cvtColor

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 颜色变换是imgproc模块中一个常用的功能。我们生活中看到的大多数彩色图片都是RGB类型的&#xff0c;但是在进行图像处理时需要用到灰度图、二值图、HSV&#xff08;六角锥体模型&#xff0c;这个模型中颜色的…...

java IO/NIO/AIO

(✪▽✪)曼波~~~~&#xff01;让曼波用最可爱的赛马娘方式给你讲解吧&#xff01;(⁄ ⁄•⁄ω⁄•⁄ ⁄) &#x1f3a0;曼波思维导图大冲刺&#xff08;先看框架再看细节哦&#xff09;&#xff1a; &#x1f4da; 解释 Java 中 IO、NIO、AIO 的区别和适用场景&#xff1a; …...

如何深入理解引用监视器,安全标识以及访问控制模型与资产安全之间的关系

一、核心概念总结 安全标识(策略决策的 “信息载体) 是主体&#xff08;如用户、进程&#xff09;和客体&#xff08;如文件、数据库、设备&#xff09;的安全属性&#xff0c;用于标记其安全等级、权限、访问能力或受保护级别&#xff0c;即用于标识其安全等级、权限范围或约束…...

宜搭与金蝶互通——连接器建立

一、 进入连接器工厂 图1 连接器入口 二、 新建连接器 图2 新建连接器第一步 1、 连接器显示名,如图2中①所示; 2、 图2中②域名,是金蝶系统API接口里面的“完整服务地址”com之前的信息,不含“https”,如图3中①所示; 3、 Base Url通常为“/”,如图2…...