如何参与以太坊 2.0 Medalla 测试网?技术详解Ubuntu和Prysm设置
nanshan 2024-10-16 10:48 20 浏览 0 评论
原文标题:《教程 | 使用 Ubuntu 和 Prysm 参与 Medalla 测试网》
撰文:Somer Esat
翻译 & 校对:闵敏 & 阿剑
本文将以 Medalla 多客户端测试网为例介绍在 ETH 2.0 上质押的详细步骤。主要基于以下几个技术:
- Ubuntu v20.04 (LTS) x64 服务器
- Go Ethereum 节点 (代码分支)
- Prysmatic Labs ETH 2.0 客户端 —— Prysm (代码分支)
- 官方多客户端公共测试网 Medalla
- 浏览器扩展程序钱包 MetaMask
- Prometheus 指标
- Grafana 控制面板
这篇指南介绍了如何:
- 配置新运行的 Ubuntu 服务器实例
- 配置和运行 ETH 1.0 节点
- 为 ETH 2.0 Phase 0 (Medalla 测试网)编译并配置 Prysmatic Labs 信标链和验证者客户端软件,并提供相应的运行服务
- 安装并配置 Prometheus 指标,并创建 Grafana 控制面板用于查看数据和接收警报(编者注:该部分内容未选入)
致谢和免责声明
这篇指南参考了各种网上资料。没有它们,就没有这篇指南。特此表示感谢!
我本人并不精通这篇指南中列出的所有技术。经过亲身尝试之后,我发现这些技术非常有趣,因此想要分享给其他人。如有任何错误或疏漏之处,烦请见谅。欢迎大家积极反馈!
读者须知
这篇指南并不适合初学者。读者需要具备一些关于以太坊、以太币、质押、Linux 和 MetaMask 的知识。在开始阅读之前,请先运行 Ubuntu 服务器实例。先安装好 MetaMask 浏览器插件并配置好也在一定程度上有所帮助。然后,我会引导你完成接下来的步骤。
树莓派用户须知
我没有在树莓派上测试过这个指南。如果你想尝试一下,直接将下文列出的软件换成 ARM 版本。但是我不保证一定能成功!
要求
- Ubuntu 服务器实例。我使用的是 v20.04 (LTS) amd64 服务器虚拟机。
- 安装并配置好的 MetaMask 密码学钱包浏览器扩展程序。
- 运行 Prysm 软件的最低硬件要求:— 操作系统:64-bit Linux — 处理器:Intel Core i5–760 或 AMD FX-8100 或以上 — 内存:4GB RAM (推荐 8GB) — 硬盘:不低于 20GB 的 SSD 固态硬盘空间 — 网络:稳定的宽带连接
- 目前似乎还没有任何硬性硬盘要求(无论是 Medalla 测试网还是 ETH 2.0 主网)。测试网可能只需要 100GB 的 SSD 固态硬盘就够了。对于主网来说,接下来的几年,使用 1TB 的 SSD 固态硬盘(信标链和分片链各占一半)可能更好。总的来说,最好做好在必要时扩展硬盘容量的准备。
概述
这份指南很长而且细节繁多。所以我画了一张究极简化的示意图来帮助你对接下来要做的事情建立基本概念。下图中的黄色框即是本指南会覆盖到的部分。
整个流程可以概念化表述为:
- 启动一个 Eth1 节点并同步 Eth1 G?erli 测试网
- 生成并激活验证者密钥对
- 配置信标链节点和验证者客户端
- 让信标链节点在验证者(签名功能)的帮助下施展魔法(处理区块、见证消息和罚没事件)
第一步 —— 保护你的系统
安全性很重要。由于本文不是一篇全面的安全性指南,我只介绍一些基本设置:防火墙和用户账号。本文预设你可以访问你的 Ubuntu 实例的控制台,并作为 root 用户通过 SSH 登陆控制台。
配置防火墙
Ubuntu 20.04 服务器可以使用默认的 UFW 防火墙 来限制访问该服务器的流量。我们需要允许来自 SSH、Go Ethereum、Grafana 和 Prysm 的入站流量。允许 SSH —— 允许通过 SSH (端口 22/TCP )连接到该服务器
注:出于安全考虑,你可能需要考虑更换你的 SSH 端口(默认端口是 22 )。这里面会有一些细微差别,你可以自己研究一下。
# ufw allow 22/tcp
允许 Go Ethereum —— 允许来自 Go Ethereum 节点(端口 30303/TPC 和 30303/UDP)的请求。
注:如果你将你的 Ubuntu 实例托管在本地,你需要对你的路由器和 / 或防火墙进行配置,允许来自这些端口的入站流量。
# ufw allow 30303/tcp# ufw allow 30303/udp
允许 Grafana —— 允许将入站请求发送至 Grafana 网络服务器(端口 3000/TCP)
# ufw allow 3000/tcp
允许 Prysm —— 允许对等节点之间进行连接,以便在信标链节点上进行操作。Prysmatic Labs 将端口 13000/TCP 和 12000/UDP 列为默认端口。
注:如果你将你的 Ubuntu 实例托管在本地,你需要对你的路由器和 / 或防火墙进行配置,允许来自这些端口的入站流量。
# ufw allow 13000/tcp# ufw allow 12000/udp
可选项:如果你想要直接访问 Prometheus 数据服务,你也可以开启端口 9090/TCP 。如果你只使用 Grafana 查看数据,那就没必要开启这个端口。我自己就没有开启这个端口。
# ufw allow 9090/tcp
现在开启防火墙并检查防火墙是否已经按照上述规则正确配置。
# ufw enable# ufw status numbered
输出应如下图所示:
UFW 防火墙设置
创建一个新的用户账户,并授予其管理权限
使用 root 账户登陆存在很大的风险。让我们来重新创建一个拥有管理权限的用户账户。
# adduser <yourusername>
你需要输入密码以及其它信息。
将新的用户加入 sudo 群组,即可授予其管理权限。
# usermod -aG sudo <yourusername>
当你以登陆时,你可以在命令行前键入 sudo ,即可以超级用户的权限来执行操作。
可选项:如果你使用 SSH 密钥连接你的实例,你需要将这个新账户与 root 账户的 SSH 密钥数据进行关联。
# rsync --archive --chown=<yourusername>:<yourusername> ~/.ssh /home/<yourusername>
第二步 —— 升级你的系统
注销你的 root 账户登录状态和 SSH,使用你新创建的用户名进入 Ubuntu 系统,运行下列命令行来升级系统。
$ sudo apt update && sudo apt upgrade
$ sudo apt dist-upgrade && sudo apt autoremove
第三步 —— 安装并运行 Go Ethereum 节点
本步的用意是安装并配置好一个将来的你的信标链节点需要连接的以太坊 1.0 节点。如果你倾向于使用由第三方托管的节点(比如 Infura),那就跳过这一步。
安装 Go Ethereum
Go Ethereum 建议使用 PPA 的(Personal Package Archives,个人安装包归档)。
$ sudo add-apt-repository -y ppa:ethereum/ethereum
更新安装包并安装最新的稳定版本。
$ sudo apt-get update
$ sudo apt-get install ethereum
运行 Go Ethereum 作为后台服务
为要运行的服务创建一个用户。此种类型的用户无法登录服务器。
sudo useradd --no-create-home --shell /bin/false goeth
为 Eth1 区块链创建数据文件夹。这是存储 Eth1 节点数据所必须的操作。使用 -p 来创建完整的路径。
$ sudo mkdir -p /var/lib/goethereum
设定文件夹权限。用户 goeth 需要权限来修改该数据文件夹。
$ sudo chown -R goeth:goeth /var/lib/goethereum
创建一个 systemd 服务文件来存储服务配置。我们将使用配置文件来命令你的 systemd 运行 geth 进程。
$ sudo nano /etc/systemd/system/geth.service
复制下列服务配置到该文件里面。
[Unit]
Description=Ethereum go client
After=network.target
Wants=network.target
[Service]
User=goeth
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=geth --goerli --http --datadir /var/lib/goethereum
[Install]
WantedBy=default.target
那个 \--goerli 标签是用来指定 Goerli 测试网的,而 \--http 标签则是用来暴露供信标链节点连接的端口(http://localhost:8545)的。
可以对照下面这张屏幕截图。你的文件也应该像它一样。记得保存然后退出。
重启 systemd 以使更改生效。
$ sudo systemctl daemon-reload
开启这项服务,并确保它正常运行。
$ sudo systemctl start geth
$ sudo systemctl status geth
启动服务后的输出应该像下图一样。
如果一切正常,它应该会用绿色文本显示 「active (running)」。如果不正常,那就倒回去,重复这个步骤来解决这个问题。可以按 Q 退出。
允许 geth 服务在系统重启时自动启动。
$ sudo systemctl enable geth
Go Ethereum 会自动开始同步。你可以运行 journal 命令来查看进度。按 Ctrl+C 可以退出。
$ sudo journalctl -f -u geth.service
找到对等节点并完成 Goerli 测试网同步可能要花好一段时间。如果出现了延宕的情况,你可以手动添加节点来帮助同步。到这个网站找到最新的节点列表,并像这样这样修改 geth 服务:
$ sudo systemctl stop geth$ sudo nano /etc/systemd/system/geth.service
修改 「ExecStart」 那一行,加入 \--bootnodes 标签和一些最新的节点(用逗号分隔)。
ExecStart=geth --goerli --http --datadir /var/lib/goethereum --bootnodes "enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291@94.237.54.114:30313,
enode://119f66b04772e8d2e9d352b81a15aa49d565590bfc9a80fe732706919f8ccd00a471cf8433e398c55c4862aadb4aadf3a010201483b87e8358951698aa0b6f07@13.250.50.139:30303"
保存文件并退出。重启服务并观察。
$ sudo systemctl daemon-reload
$ sudo systemctl start geth
$ sudo journalctl -f -u geth.service
结果应该像这样:
注意:在你运行信标链节点之前,要先等这个 Eth1 节点同步完成。可以在这里找到最新的区块。
接下来,我们要下载 Prysm 软件(用于运行信标链节点和验证者)。从这里开始你可以开启一个新的命令行窗口,这样你就能继续观察 Eth1 节点的同步情况了。
第四步 —— 安装 Bazel
Bazel 是一个开源构建工具。我们将使用它来编译 Prysm 软件。
我们还需要使用 Curl 来下载 Prysm 代码。
$ sudo apt install curl gnupg
下载 Bazel gpg distribution URI 并将其添加为包源。你在复制命令行时,别漏了 「add」 后的(-):sudo apt-key add -sudo apt-key add -。
$ curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
$ echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
根据 Bazel 的文档,保留组建名 「jdk1.8」 只是出于历史遗留原因,不再代表支持或包含哪些 JDK 版本。
安装 Bazel 。先安装最新版本,然后安装 3.2.0 版本。Prysm 目前需要 3.2.0 版本。
$ sudo apt update && sudo apt install bazel
$ sudo apt update && sudo apt install bazel-3.2.0
第五步 —— 安装并构建 Prysm
Prysm 由两部分二进制文件组成:信标链和验证者。我们将构建这两部分。
克隆 Prysm 的主代码库。
$ git clone https://github.com/prysmaticlabs/prysm
$ cd prysm
使用 Bazel Build 来编译信标链和验证者二进制文件。
$ bazel build //beacon-chain:beacon-chain$ bazel build //validator:validator
信标链文件需要一段时间才能构建完成。现在我们可以喝杯水小憩一下。或许可以读一下我的其它文章。
构建验证者文件会快一些,因为我们已经下载和 / 或构建好相关项了。
如果二者均构建完成,就可以执行后续步骤了。如果失败了,可以去 Prysm 的 Discord 寻求帮助。
更新 Prysm
注:务必在完成本指南中的所有步骤后再执行该步骤,否则请直接跳到第六步。
如果你因为 Git 代码库变化而需要更新代码,请执行以下步骤获得最新文件,并创建你的二进制文件:
$ cd prysm
$ git pull origin master
$ bazel build //beacon-chain:beacon-chain
$ bazel build //validator:validator
别忘了停止信标链和验证者服务,并将二进制文件复制到 /usr/local/bin 目录下,然后再开始启动服务:
$ sudo systemctl stop beaconchain
$ sudo systemctl stop validator
$ sudo cp bazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain /usr/local/bin
$ sudo cp bazel-bin/validator/linux_amd64_stripped/validator /usr/local/bin
$ sudo systemctl start beaconchain
$ sudo systemctl status beaconchain <-- Check for any errors.
$ sudo systemctl start validator
$ sudo systemctl status validator <-- Check for any errors.
第六步 —— 配置信标链节点
在这一步骤中,我们将让信标链节点作为后台服务运行,如果系统重启,信标链节点进程也会自动重启。
建立账户和目录
为这项服务创建一个用户。此种类型的用户无法登录服务器。
$ sudo useradd --no-create-home --shell /bin/false beaconchain
也要为信标链节点创建数据目录(文件夹)。这是存储信标链数据库所必需的。使用 -p 来创建完整的路径。
$ sudo mkdir -p /var/lib/prysm/beaconchain
设置文件夹权限。这个 beaconchain 用户需要权限来更改这个数据库目录。-R 表示递归。
$ sudo chown -R beaconchain:beaconchain /var/lib/prysm/beaconchain
接下来,把新编译的 beacon-chain 二进制文件复制到 /usr/local/bin 目录。我们会在这个文件夹里运行它。
注意:每次你 拉取 / 构建 一个新版本的 beacon-chain 二进制文件的时候,都要做这一步骤。
$ sudo cp bazel-bin/beacon-chain/linux_amd64_stripped/beacon-chain /usr/local/bin
把所有权设给我们上面创建的用户账户 beaconchain。
$ sudo chown -R beaconchain:beaconchain /usr/local/bin/beacon-chain
创建和配置服务
创建一个 systemd 服务文件来存储这个服务的配置。
$ sudo nano /etc/systemd/system/beaconchain.service
复制下列内容到这个文件里面。
[Unit]
Description=Beaconchain
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=beaconchain
Group=beaconchain
Restart=alwaysRestartSec=5
Environment="ClientIP=$(curl -s v4.ident.me)"
ExecStart=/bin/bash -c '/usr/local/bin/beacon-chain --p2p-host-ip=${ClientIP} --datadir=/var/lib/prysm/beaconchain --http-web3provider=http://127.0.0.1:8545'
[Install]
WantedBy=multi-user.target
我们是用一个环境参数(Environment variable)来获得这个客户端的 IP 地址 Environment="ClientIP=$(curl -s v4.ident.me)" 因为 ExecStart 不允许内联调用(call in-line)。使用 \--p2p-host-ip=${ClientIP} 是为了应对故障(work-around)。
--http-web3provider 标签用于定义 Eth1 节点的端口。如果你使用的是本地的节点,这个值就是 http://127.0.0.1:8545,如果你在使用第三方服务,那就要使用一个外部的端口地址。
看看你的文件是不是也像这个截图一样。应该是一样的。然后你可以保存并退出。
重启 systemd 以使变更生效。
$ sudo systemctl daemon-reload
注意:如果你在本地运行 Eth1 节点(见第三步),你需要等待本地的节点同步区块链同步完成,然后才能开始 beaconchain 服务。使用这个命令行来检查进度:
sudo journalctl -f -u geth.service 。
启动服务并检查它有没有正常运行。
$ sudo systemctl start beaconchain$ sudo systemctl status beaconchain
屏幕上的输出看起来应该是这样的。
如果你正确地完成了上述步骤,它应该会用绿色字体显示 「active (running)」。如果没有这么显示,你要倒回去,重复这些步骤,来修复问题。按 Q 可以退出。
让信标链服务能随系统重启而自动重启。
$ sudo systemctl enable beaconchain
然后信标链节点会开始同步。可能需要几个小时才能完成同步。你可以运行 journal 命令来检查进度。按 Ctrl+C 来退出。
$ sudo journalctl -f -u beaconchain.service
命令行窗口的输出会给你来自 Eth1 区块链的(对应于 Medalla 测试网的就是 Goerli 测试网)、正在处理的保证金的状态信息。
现在你的信标链节点已经作为一项服务在后台运行了。恭喜!虽然节点还在同步,我们可以开始下一步了。
第七步 —— 完成 Medalla 测试网的引导流程
在启动验证者客户端之前,我们需要先生成我们的验证者密钥对。官方的 Eth2 Launch Pad 会引导你完成这个流程(生成验证者密钥对、存入 Goerli ETH),不过,在你开始存入保证金之前,你需要获得一些 Goerli ETH。
获得 Goerli ETH
遵照下列步骤:
- 点击 MetaMask 浏览器插件并登录
- 点击顶部的下拉菜单,选择 Goerli 测试网
- 点击你的用户名,它会自动复制下你的 Goerli ETH 钱包地址;
- 你可以通过这个经过认证的水龙头来获得 Goerli 测试网 ETH,或者到 ethstaker Discord 群组的 goerli-eth 频道内使用机器人命令:!goerliEth 获取。
- 如果你在计划运行多个验证者,你可以请求自己想要的额度(32ETH 乘以你想运行的验证者数量)
等到 Goerli ETH 出现在你的钱包里,你就可以操作下一步了(记得要选择 Goerli 测试网!)
生成验证者数据
访问官方的 Eth2 Launch Pad 网站,跟随指引完成操作。如果一切顺利,它就能生成一个验证者密钥文件(每一个验证者都会有一个专门的文件,你想运行几个验证者,就要生成几个)。
编者注:Launch Pad 的使用流程简介可见 此处。
根据引导流程、使用命令行工具所生成的 JSON 文件会存储在你运行 「验证者密钥生成」 脚本的目录下的 eth2.0-deposit-cli/validator_keys 文件夹里。当我们要运行验证者的时候(下一步),我们需要从这个位置引用我们的密钥。如果你需要通过 SFTP (SSH 文件传输协议)发送到你的服务器,那可以放心这么做。本指南假定这个文件会存储在这个目录:$HOME/eth2.0-deposit-cli/validator_keys。
第八步 —— 创建验证者钱包
首先我们要使用 Prysm 的验证者二进制文件(我们之前就编译好的)来创建一个钱包,就基于上一步我们所创建的密钥。
$ cd prysm$ bazel run //validator:validator -- accounts-v2 import --keys-dir=$HOME/eth2.0-deposit-cli/validator_keys
你会被程序询问指定一个钱包的存储位置。你可以直接按回车,这样它会存储到默认位置。你还需要输入一个新的钱包口令,请务必把这个口令保管在安全的地方。
接下来你要输入你在 Eth2 Launch Pad 网站上创建验证者密钥时候使用的口令。如果你正确输入了,这个账户就会导入到这个新钱包中。
Enter a wallet directory (default: /home/ethstaker/.eth2validators/prysm-wallet-v2):
New wallet password:
Confirm password:[
2020-08-04 06:16:17] INFO accounts-v2: Successfully created new wallet wallet-path=/home/ethstaker/.eth2validators/prysm-wallet-v2
Enter the password for your imported accounts:
Importing accounts, this may take a while...
Importing accounts... 100% [=======================================] [3m13s:0s]
Successfully imported 40 accounts, view all of them by running accounts-v2 list
确认验证者账户创建成功。
$ bazel run //validator:validator -- accounts-v2 list
这就完成啦。现在这个验证者钱包已经配置好了,我们将启动验证者作为一个后台服务。`
第九步 —— 配置验证者客户端
建立账户和存储目录
我们将让验证者能作为一项后台服务运行,并且在系统重启时这个线程会自动重启。
为要运行的服务创建一个用户账户(系统账户)。此种类型的账户无法登录服务器。
$ sudo useradd --no-create-home --shell /bin/false validator
为验证者客户端创建数据存储目录,也就是跟验证者相关的数据库存放的地方。使用 -p 来创建完整的地址。
$ sudo mkdir -p /var/lib/prysm/validator
设置目录的权限。这个 validator 用户需要修改这个数据目录的权限。
$ sudo chown -R validator:validator /var/lib/prysm/validator
现在,复制我们之前编译好的 validator 二机制文件到这个 /usr/local/bin 目录。
注意:每次你 拉取 / 构建 一个新版本的 validator 二进制文件,都要做这一步。
$ cd prysm$ sudo cp bazel-bin/validator/linux_amd64_stripped/validator /usr/local/bin
把用户和群组权限设给 validator 用户。
$ sudo chown -R validator:validator /usr/local/bin/validator
创建和配置服务
创建一个 systemd 服务文件来存储服务配置。
$ sudo nano /etc/systemd/system/validator.service
完全复制下列内容到这个文件中,就除了下面的两个例外:
用你正在使用的用户名替代那两个。
用你的 Prysm POAP 参与奖章值 替换掉 ,这样就能获得特殊的 NFT 奖品(POAP 奖章)!例如 --graffiti "abcdefg12345"
[Unit]
Description=Validator
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=validator
Group=validator
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/validator --datadir /var/lib/prysm/validator --wallet-dir /home//.eth2validators/prysm-wallet-v2 --wallet-password-file /home//.eth2validators/prysm-wallet-v2/password.txt --graffiti ""
[Install]
WantedBy=multi-user.target
检查你的文件,看看是不是跟这个截图一样。保存并退出。
password.txt 是必需的,因为 --wallet-password-file 需要指定一个口令文件。因此我们就创建一个,然后存储在那个位置。
$ cd /home//.eth2validators/prysm-wallet-v2$ touch password.txt$ nano password.txt
把你的钱包 password 输入到这个文件中。就像下图一样,然后保存并退出。
重启系统以使变更生效。
$ sudo systemctl daemon-reload
启动服务并确保正常运行。
$ sudo systemctl start validator$ sudo systemctl status validator
你的屏幕输出应该看起来像这样。
如果你正确地完成了上述步骤,它应该会用绿色字体显示 「active (running)」。如果没有这么显示,你要倒回去,重复这些步骤,来修复问题。按 Q 可以退出。
让信标链服务能随系统重启而自动重启。
$ sudo systemctl enable validator
你可以运行 journal 命令来检查进度。按 Ctrl+C 来退出。
$ sudo journalctl -f -u validator.service
等信标链真的启动之后,可能还要等几个小时来激活你的验证者账户。验证者进程的输出会显示进度。
Aug 02 03:03:25 ETH-STAKER-01 validator[5203]: time="2020-08-02 03:03:25" level=info msg="Waiting for beacon chain start log from the ETH 1.0 deposit contract" prefix=validator
你可以通过 beaconcha.in 检查自己的验证者的状态。只需搜索你的验证者公钥即可。网站上很快就会显示出来。
就这么简单。我们已经开始运行信标链节点和验证者客户端了。恭喜恭喜,你很棒!
编者注:下文的内容为指导用户安装 Prometheus、节点浏览器、Gafuna,主要是帮助用户管理自己的节点和验证者,但这恐怕不是用户最需要的。如果用户了解足够多的背景知识,使用区块浏览器基本上也能满足自己监控验证者的需求,只是自动化程度差一些。因此我们不选入。感兴趣的用户可以自己到原文阅读。
相关推荐
- 小白初学linux之无法修改系统分辨率
-
/*此文是做为自己的一个总结还有就是最好也可以给大家提供一些帮助。*/时间:2020年7月14日11:28:41我安装的是Ubuntu20.04LTS,昨天处理的是,grub的引导问题,因为是...
- Ubuntu 如何启动、停止或重启服务
-
在本文中,我们向您介绍在Ubuntu中启动、停止和重启服务的方法。列出Ubuntu中的所有服务在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。service--...
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
-
IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...
- Linux安装中文输入法-Google拼音输入法,搜狗输入法
-
主要步骤,选择适合自己的尝试:1)卸载之前没装好的搜狗输入法。@:~/Downloads$sudoapt-getremovefcitx*删除依赖库@:~/Downloads$sudoap...
- Ubuntu 22.04 请谨慎使用搜狗输入法,可能是你当机原因
-
在Ubunutu下没有什么有名的输入法,也就听说搜狗输入法有Linux版本,所以特意到官网去找了下载。在Ubuntu新版本里,他仍然用的是fcitx框架的输入引擎,而不是默认的ibus,所以要先把i...
- 前钢后胶!徐工XMR403VT小型压路机有点意思
-
【第一工程机械网原创】在越来越注重施工品质,对项目管理越来越精细化的今天,施工方在施工设备选择上,也越来越讲究设备的配套分工,因此小型压路机的应用场景也越来越多。徐工XMR403VT小型压路机高度集...
- 图大明白 | 404错误为什么是Not Found?为什么是404?
-
“404错误”大家都不陌生吧?常规来讲它长这样或者长这样艺术一点的长这样404NotFound意思就是所请求的页面不存在或者已被删除被称为“互联网最后一个界面”有很多同学发出疑问:为什么是404?...
- Nginx负载均衡安全配置说明2(nginx负载均衡部署)
-
上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条...
- 惊艳写真系列第403期,本期主人公—叶青
-
惊艳写真系列第403期,本期主人公—叶青制作不易,欢迎各位看官提供宝贵意见。如果您喜欢记得关注,么么哒。您的每一份点赞和关注都是对作者的最大认可(图片素材均来源于网络,如有侵权联系删除。)本篇是写惊艳...
- 先秦布币之尖足布、圆足布、方足布,今年圆足最高拍卖价16万一枚
-
在战国魏、韩地区诞生桥足平首布、锐角平首布之后,赵也诞生了尖足平首布,并且在尖足布的基础上,后来相继派生出了圆足布、三孔布,以及类圆足布和类方足布。一尖足布尖足布是从耸肩尖足空首布演变而来的,是黄河...
- 403 禁止访问错误的全面排查与解决方案
-
当遇到403Forbidden错误时,意味着服务器已接收并理解请求,但拒绝执行访问操作。以下从用户端、服务器端等多个维度,提供分步排查与解决方法。一、用户端基础排查1.检查URL准确性确认...
- 这才是2019年夏最高颜值的泳装(2019夏季泳装秀)
-
最近的天气是越来越热了,又到了暑期泳衣勇闯海滩的时刻了,打开ins,微博满满地都是各大博主晒的泳装照,明星们也纷纷跑到海边去度假了。虽然我们没有超模般地身材,但是到了海边我们也要成为人群中最亮眼的那颗...
- 朋友圈爆火!这组《衡中班主任的一天》漫画,感动了无数人!
-
很多人觉得做老师很轻松他们说有些老师一天一节课就下班了有双休,还有寒暑假,真让人羡慕呀······但事实真是这样吗?最近衡水中学的赵心扬同学画了一组漫画形象地还原了衡中班主任一天的生活那么衡中班主任一...
- 国家安全教育 | 一组漫画,带你走进国家安全!
-
当前,我国面临哪些安全威胁?下面带你来看一组漫画!①你要配合,注意保密。我绝不对别人讲。②这件事,千万别对别人讲。③咱单位的…喂!老k!你要当心,有风声了!④你的泄密行为已触犯了国家法律!①请你协助了...
- 400、403、404、405,访问网页时出现这些代码是什么意思?
-
今天小泽访问一个页面时,出现了403,很抱歉,您的访问请求被禁止的提示。相信经常用电脑访问网页的朋友都遇到过这种情况,有的网页提示错误代码403,有的提示404,那这些代码都代表了什么呢?有什么含义呢...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)