在Ubuntu 16.04上安装和配置GitLab的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额外的与开发相关的功能,如问题跟踪。它旨在使用您自己的基础设施进行托管,并提供灵活性,可将其部署为开发团队的内部仓库存储,公开作为与用户交互的方式,甚至作为贡献者托管其自己项目的方式。
GitLab 项目使在自己的硬件上设置 GitLab 实例相对简单,具有简单的安装机制。在本指南中,我们将介绍如何在 Ubuntu 16.04 服务器上安装和配置 GitLab。
先决条件
本教程假定您可以访问一个全新的 Ubuntu 16.04 服务器。发布的 GitLab 硬件要求建议使用具有以下配置的服务器:
- 2 个核心
- 4GB 的 RAM
尽管您可能可以通过将一些交换空间替换为 RAM 来满足要求,但不建议这样做。在本指南中,我们将假设您至少具有上述资源。
为了开始,您需要在服务器上配置一个具有 sudo 访问权限的非根用户。另外,设置一个基本的防火墙以提供额外的安全层也是一个好主意。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南中的步骤进行设置。
当您满足上述先决条件后,继续开始安装过程。
安装依赖项
在安装 GitLab 本身之前,重要的是安装一些在安装过程中和持续运行中它所利用的软件。幸运的是,所有必需的软件都可以轻松地从 Ubuntu 的默认软件包存储库中安装。
由于这是我们在本次会话中第一次使用 apt,我们可以通过输入以下命令来刷新本地软件包索引,然后安装依赖项:
sudo apt-get update
sudo apt-get install ca-certificates curl openssh-server postfix
您可能已经安装了其中一些软件。对于 postfix 安装,选择在提示时选择 Internet Site。在下一个屏幕上,输入您的服务器域名或 IP 地址以配置系统发送邮件的方式。
安装 GitLab
现在依赖项已经就位,我们可以安装 GitLab 本身了。这是一个直接的过程,利用安装脚本来配置您的系统与 GitLab 仓库。
进入 /tmp 目录,然后下载安装脚本:
cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
随时随地检查下载的脚本,以确保您对它将要执行的操作感到满意。您也可以在这里找到托管版本的脚本:
less /tmp/script.deb.sh
一旦您对脚本的安全性感到满意,运行安装程序:
sudo bash /tmp/script.deb.sh
该脚本将设置您的服务器以使用由 GitLab 维护的仓库。这使您可以使用用于其他系统软件包的包管理工具来管理 GitLab。完成后,您可以使用 apt 安装实际的 GitLab 应用程序:
sudo apt-get install gitlab-ce
这将在您的系统上安装必要的组件。
调整防火墙规则
在配置 GitLab 之前,您需要确保您的防火墙规则足够宽松,以允许 Web 流量。如果您按照先决条件中的链接中的指南进行操作,您将启用 ufw 防火墙。
通过输入以下命令查看当前活动防火墙的状态:
sudo ufw status
状态:activeTo Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
如您所见,当前规则允许 SSH 流量通过,但对其他服务的访问受限。由于 GitLab 是一个 Web 应用程序,我们应该允许 HTTP 访问。如果您的 GitLab 服务器关联有域名,GitLab 还可以请求并启用来自 Let’s Encrypt 项目的免费 TLS/SSL 证书以保护您的安装。在这种情况下,我们还需要允许 HTTPS 访问。
由于 HTTP 和 HTTPS 的协议到端口的映射在 /etc/services 文件中可用,我们可以通过名称允许该流量进入。如果您之前未启用 OpenSSH 流量,现在应该允许该流量:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
如果再次运行 ufw status 命令,您应该至少看到已配置访问这两个服务:
sudo ufw status
状态:activeTo Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
上述输出表明一旦我们配置应用程序,GitLab Web 界面将是可访问的。
编辑 GitLab 配置文件
在使用该应用程序之前,您需要更新一个配置文件并运行重新配置命令。首先,打开 Gitlab 的配置文件:
sudo nano /etc/gitlab/gitlab.rb
在文件顶部附近是 external_url 配置行。将其更新为与您自己的域名或 IP 地址匹配。如果您有一个域名,请将 http 更改为 https,这样 GitLab 将自动将用户重定向到由我们将要请求的 Let’s Encrypt 证书保护的站点。
# 如果您的 GitLab 服务器没有域名,您将需要使用 IP 地址而不是域名,并保持协议为 `http`。
external_url 'https://yourdomain'
接下来,如果您的 GitLab 服务器有一个域名,请搜索文件以查找 letsencrypt['enable'] 设置。取消注释该行并将其设置为 true。这将告诉 GitLab 为您的 GitLab 域请求 Let’s Encrypt 证书并配置应用程序以使用它提供流量。
在下面,查找 letsencrypt['contact_emails'] 设置。此设置定义了 Let’s Encrypt 项目可以使用的电子邮件地址列表,以便在您的域名出现问题时与您联系。取消注释并填写这个设置也是个好主意,这样您就会知道是否有任何问题:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']
保存并关闭文件。现在,运行以下命令以重新配置 Gitlab:
sudo gitlab-ctl reconfigure
这将使用它可以找到的关于您的服务器的信息初始化 GitLab。这是一个完全自动化的过程,因此您不必回答任何提示。如果您启用了 Let’s Encrypt 集成,证书应该已经为您的域配置好了。
通过 Web 界面执行初始配置
现在 GitLab 正在运行并且允许访问,我们可以通过 Web 界面对应用程序进行一些初始配置。
首次登录
在 Web 浏览器中访问您的 GitLab 服务器的域名:
http://gitlab_domain_or_IP
如果您启用了 Let’s Encrypt 并在您的 external_url 中使用了 https,您应该会被重定向到一个安全的 HTTPS 连接。
在首次访问时,您应该会看到一个初始提示,要求为管理员帐户设置密码:
!GitLab 初始密码设置提示
在初始密码提示中,提供并确认管理员帐户的安全密码。完成后,单击 Change your password 按钮。
您将被重定向到常规的 GitLab 登录页面:
!GitLab 首次登录提示
在这里,您可以使用刚刚设置的密码登录。凭证为:
- 用户名:root
- 密码:[您设置的密码]
将这些值输入到现有用户字段中,然后单击 Sign in 按钮。您将登录到应用程序,并被带到一个提示您开始添加项目的着陆页面:
!GitLab 初始登录着陆页面
现在,您可以进行一些简单的更改,以使 GitLab 以您喜欢的方式设置。
调整您的个人资料设置
在新安装后,您应该做的第一件事之一是将您的个人资料整理好。GitLab 选择了一些合理的默认值,但一旦您开始使用该软件,这些通常是不合适的。
要进行必要的修改,请单击界面右上角的用户图标。在出现的下拉菜单中,选择 Settings:
!GitLab 个人资料设置按钮
您将被带到您的设置的 Profile 部分:
!GitLab 个人资料设置页面
将 Name 和 Email 地址从 “Administrator” 和 “admin@example.com” 调整为更准确的内容。您选择的名称将显示给其他用户,而电子邮件将用于默认头像检测、通知、通过界面进行的 Git 操作等。
完成后,单击底部的 Update Profile settings 按钮:
!GitLab 更新个人资料设置按钮
确认电子邮件将发送到您提供的地址。按照电子邮件中的说明确认您的帐户,以便您可以开始在 GitLab 中使用它。
更改您的帐户名
接下来,单击左侧菜单栏中的 Account 项目:
!GitLab 帐户菜单项
在这里,您可以找到您的私人 API 令牌或配置双因素身份验证。但是,我们目前感兴趣的功能是 Change username 部分。
默认情况下,第一个管理员帐户被赋予名称 root。由于这是一个已知的帐户名,将其更改为不同的名称更安全。您仍将拥有管理员权限;唯一会改变的是名称:
!GitLab 更改用户名部分
单击 Update username 按钮进行更改:
!GitLab 更新用户名按钮
下次登录到 GitLab 时,请记住使用您的新用户名。
将 SSH 密钥添加到您的账户
在大多数情况下,您会希望使用 SSH 密钥与 Git 交互以访问您的 GitLab 项目。为此,您需要将您的 SSH 公钥添加到您的 GitLab 账户。
如果您已经在本地计算机上创建了 SSH 密钥对,您通常可以通过输入以下命令查看公钥:
cat ~/.ssh/id_rsa.pub
您应该会看到一大段文本,就像这样:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制这段文本,然后返回到 GitLab 网页界面的个人资料设置页面。
如果您得到的是以下消息,说明您的计算机上尚未配置 SSH 密钥对:
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
如果是这种情况,您可以通过输入以下命令来创建 SSH 密钥对:
ssh-keygen
接受默认设置,并可选择提供密码以在本地保护密钥:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
| ..%o==B|
| *.E =.|
| . ++= B |
| ooo.o . |
| . S .o . .|
| . + .. . o|
| + .o.o ..|
| o .++o . |
| oo=+ |
+----[SHA256]-----+
完成后,您可以通过输入以下命令显示您的公钥,就像之前一样:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制显示的文本块,然后返回到 GitLab 网页界面的个人资料设置。
点击左侧菜单中的SSH Keys项:
!GitLab SSH Keys 菜单项
在提供的空间中粘贴您从本地计算机复制的公钥。给它一个描述性的标题,然后点击Add key按钮:
!GitLab 添加 SSH 密钥
现在,您应该能够在本地计算机上管理您的 GitLab 项目和仓库,而无需提供您的 GitLab 账户凭据。
限制或禁用公共注册(可选)
您可能已经注意到,当您访问您的 GitLab 实例的登录页面时,任何人都可以注册帐户。如果您希望托管公共项目,这可能是您想要的。然而,许多时候,更严格的设置是可取的。
首先,点击页面顶部主菜单栏中的扳手图标,进入管理区域:
!GitLab 管理区域按钮
在接下来的页面上,您可以看到整个 GitLab 实例的概述。要调整设置,请点击左侧菜单底部的设置选项。
!GitLab 管理设置按钮
您将进入到 GitLab 实例的全局设置页面。在这里,您可以调整一些影响新用户是否可以注册以及他们的访问级别的设置。
禁用注册
如果您希望完全禁用注册(您仍然可以手动创建新用户的帐户),请滚动到注册限制部分。
取消选择启用注册复选框:
!GitLab 取消选择启用注册
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
注册部分现在应该从 GitLab 登录页面中移除了。
按域限制注册
如果您正在使用 GitLab 作为提供与域相关的电子邮件地址的组织的一部分,您可以通过域来限制注册,而不是完全禁用它们。
在注册限制部分,首先选择注册时发送确认电子邮件框,只有在用户确认了他们的电子邮件后才允许登录。
接下来,将您的域或域添加到注册白名单域框中,每行一个。您可以使用星号“*”来指定通配符域:
!GitLab 按域限制注册
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
注册部分现在应该从 GitLab 登录页面中移除了。
限制项目创建
默认情况下,新用户可以创建多达 10 个项目。如果您希望允许外部新用户进行可见性和参与,但希望限制他们创建新项目的访问权限,您可以在帐户和限制设置部分进行设置。
在其中,您可以将默认项目限制更改为 0,以完全禁止新用户创建项目:
!GitLab 将项目设置为零
新用户仍然可以手动添加到项目中,并且可以访问其他用户创建的内部或公共项目。
滚动到页面底部,点击保存按钮:
!GitLab 保存设置按钮
新用户现在可以创建帐户,但无法创建项目。
创建定期任务以自动更新 Let’s Encrypt 证书
根据设计,Let’s Encrypt 证书仅有效期为 90 天。如果您之前为您的 GitLab 域启用了 Let’s Encrypt,您需要确保定期更新您的证书,以避免服务中断。GitLab 提供了gitlab-ctl renew-le-certs命令,在当前资产接近到期时请求新证书。
为了自动化这个过程,我们可以创建一个定期任务,定期运行这个命令。该命令只会在证书接近到期时进行更新,因此我们可以安全地定期运行它。
首先,在您的文本编辑器中创建并打开/etc/cron.daily/gitlab-le文件:
sudo nano /etc/cron.daily/gitlab-le
在其中,粘贴以下脚本:
#!/bin/bashset -e/usr/bin/gitlab-ctl renew-le-certs > /dev/null
完成后保存并关闭文件。
通过输入以下命令将文件标记为可执行:
sudo chmod +x /etc/cron.daily/gitlab-le
现在,GitLab 应该每天自动检查其 Let’s Encrypt 证书是否需要更新。如果需要,命令将自动更新证书。
结论
您现在应该在自己的服务器上拥有一个正常运行的 GitLab 实例。您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。GitLab 定期添加功能并对其平台进行更新,因此请务必查看项目的主页,以了解任何改进或重要通知的最新信息。
相关文章:
在Ubuntu 16.04上安装和配置GitLab的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额…...
STM32的SPI通信
1 SPI协议简介 SPI(Serial Peripheral Interface)协议是由摩托罗拉公司提出的通信协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,使用于对通信速率要求较高的场合。 …...
机器学习引领教育革命:智能教育的新时代
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习在教育中的应用🌞个性化学习🌙评估与反馈的智能化⭐教学资源的优…...
6月29日,每日信息差
第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收,为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一,与传统放疗技术相比,质子治疗…...
SpringCloud中复制模块然后粘贴,文件图标缺少蓝色方块
再maven中点击+号,把当前pom文件交给maven管理即可...
JS乌龟吃鸡游戏
代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>乌龟游戏</title><script type"text/javascript">function move(obj){//乌龟图片高度var wuGui_height 67;…...
第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)
大家好,我是网创有方 。这节记录下如何使用ConfigurationProperties来实现自动注入配置值。。实现将配置文件里的application.properties的参数赋值给实体类并且打印出来。 第一步:新建一个实体类WechatConfig package cn.wcyf.wcai.config;import org…...
如何学习Node.js
Node.js是一个开源、跨平台的JavaScript运行环境,它允许你在服务器端使用JavaScript。以下是一些步骤和资源,可以帮助你开始学习Node.js: ### 1. 基础知识 首先,确保你熟悉JavaScript语言的基础。Node.js是基于JavaScript的&…...
云计算基础知识
前言: 随着ICT技术的高速发展,企业架构对计算、存储、网络资源的需求更高,急需一种新的架构来承载业务,以获得持续,高速,高效的发展,云计算应运而生。 云计算背景 信息大爆炸时代:…...
基于单片机光纤测距系统的设计与实现
摘要 : 光纤由于其频带宽 、 损耗低及抗干扰能力强等优点已被广泛地应用在通信 、 电子及电力方面 , 是我们生产生活中必不可少的媒介。 在实际的光纤实验 、 安装 、 运营和维护工作中 , 一种精准 、 轻便和易操作的光纤测距系统显得尤为重…...
python项目实战——人生重开模拟器
文章目录 1.菜单栏的编写2.玩家确定颜值、体质、智力、家境3.生成性别4.设定角色出生点5.各个年龄段的变化5.1 幼年阶段5.2 青年阶段5.3中年阶段5.4 晚年阶段 6.整体代码 人生重开模拟器是一款文字类小游戏. 玩家可根据提示输入角色的初始属性之后, 就可以开启不同的人生经历. …...
小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)
系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档(了解) 五、分桶表(熟悉) 六、复杂类型(熟悉) 七、Hive乱码解决(操作。可以不做,不影响) 八、…...
电影票房预测管理系统设计
电影票房预测管理系统的开发涉及多个层面的设计,包括但不限于数据收集、数据分析、预测模型构建、用户界面设计和系统集成。以下是一个基本的系统设计框架: 1. 数据收集模块:这是整个系统的基础。需要收集的数据可能包括历史票房数据、上映电…...
正则表达式与Pyhton
一、正则表达式的规则 1、支持普通字符匹配 2、元字符,一个符号匹配一堆字符 \d 匹配数字 \w 匹配数字、字母、下划线 \D \d的取反,除了数字全部匹配 \W \w的取反 [abc] 匹配字母a、b、c [^abc] [abc]的取反…...
Transformer常见面试题
目录 1.Transformer为何使用多头注意力机制?(为什么不使用一个头) 2.Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘? (注意和第一个问题的区别) 3.Transf…...
Linux——vim的配置文件+异常处理
vim的配置文件: [rootserver ~]# vim /etc/vimrc # 输入以下内容 set nu # 永久设置行号 shell [rootserver ~]# vim /etc/vimrc 或者 vim ~/.vimrc set hlsearch "高亮度反白 set backspace2 "可随时用退格键删除 set autoindent…...
node mySql 实现数据的导入导出,以及导入批量插入的sql语句
node 实现导出, 在导出excel中包含图片(附件) node 实现导出, 在导出excel中包含图片(附件)-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图: 二、导入 …...
Webpack: 底层配置逻辑
概述 Webpack 5 提供了非常强大、灵活的模块打包功能,配合其成熟生态下数量庞大的插件、Loader 资源,已经能够满足大多数前端项目的工程化需求,但代价则是日益复杂、晦涩的使用方法,开发者通常需要根据项目环境、资源类型、编译目…...
数字图像处理期末复习题1
个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…...
poi-tl 生成 word 文件(插入文字、图片、表格、图表)
文章说明 本篇文章主要通过代码案例的方式,展示 poi-tl 生成 docx 文件的一些常用操作,主要涵盖以下内容 : 插入文本字符(含样式、超链接)插入图片插入表格引入标签(通过可选文字的方式,这种方…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
