Apt update : failed to fetch expkeysig abf5bd827bd9bf62 nginx signing key signing-key@nginx.com

apt update ,更新 nginx 时报错。 提示 Nginx 签名无效, 无法获取.

failed to fetch https://nginx.org/packages/mainline/debian/dists/bookworm/inrelease the following signatures were invalid: expkeysig abf5bd827bd9bf62 nginx signing key <signing-key@nginx.com>
解决处理:
  1. 导入 Nginx.org GPG 密钥
curl -fSsL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null

2. 验证密钥是否成功导入

gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

3. 导入 Nginx.org APT 存储库

编辑文件为:/etc/apt/sources.list.d/nginx.list

Mainline 存储库 、稳定存储库 二选一!

要导入 Nginx Mainline 存储库,请使用:

echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

或者,对于 Nginx 稳定存储库:

echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

ICANN终止OpenTLD(Freenom)认证 – 域名转移到Gandi

”人人都熟悉的名字“ — Freenom.com

已经使用了近十年,很好的一家,良心域名注册商,还是被遭到了毒打。Freenom以极低的价格提供域名注册,费用号称成本价,比如.NL 、.EU,还提供TK、CF、GA、GQ、ML 域名的免费注册。最早就是从免费的.TK 域名知道它的。

大约从2023年初开始,已经很久不能注册新域名了。之前看到说是,被Facebook母公司Meta , 在美国加利福尼亚州法院起诉 。被起诉后 Freenom 就由于技术原因新注册申请暂停,当前正在研究解决方案,希望尽快恢复运营。

2024年1月15日我还曾在Freenom续费域名,到2月初,发现域名已经无法续费了。2024/2/12收到了Gandi.net 的支持邮件,告知ICANN终止了OpenTLD(Freenom)的认证- 域名转移到Gandi:

Gandi Support: OpenTLD (Freenom) ICANN accreditation termination – Transfer to Gandi – Recover your domain

Dear registrant,
We are reaching out to you as the owner of the domain name as32.net which was registered with the registrar OpenTLD B․V․, trading as Freenom.
Following the termination of OpenTLD accreditation, ICANN has selected Gandi as the gaining registrar for the gTLD domain names previously managed by OpenTLD. You can find more information about this transfer on the following ICANN page:
https://www.icann.org/resources/pages/bulk-transfers-2017-10-06-en.
If you have not already recovered the management of this domain name at Gandi, please follow the link below. You will be able to import the domain name into your Gandi account if you already have one, or create a Gandi account to be able to manage your domain name.
Import your domain name
We kindly request your attention to the following points:
– Gandi does not provide proxy and privacy services. Consequently, your contact information has been sent to the registry. However in the Whois public database, personal data remain hidden in accordance with ICANN rules. Only the organisation name for legal persons, the state (if available) and the country of the owner contact are published. Email addresses of domain name contacts are anonymized.
– The expiration date of the domain name remains unchanged. You can verify the expiration date via your Gandi account and proceed with renewal if necessary.
Should you have any question, our support team will be delighted to help you:
https://helpdesk.gandi.net.
Thank you for your attention to this matter.
____________________________________________________________

about this transfer on the following ICANN page:
https://www.icann.org/resources/pages/bulk-transfers-2017-10-06-en.

请注意:下表列出了因注册服务机构的认证被 ICANN 终止后所致的批量转移事件。此外,批量转移日期将在终止日期之后。

Terminated RegistrarGaining RegistrarTermination Date
OpenTLD B.V. (IANA #1666)Gandi SAS (IANA #81)25 November 2023
https://www.icann.org/resources/pages/bulk-transfers-2017-10-06-zh

https://www.rayks.com/article/freenom-pending.html

2024 年 2 月 12 日,知名域名注册服务提供商 Freenom 通过其官方网站发布公告,表示 Freenom 及其相关公司已决定退出域名业务,包括注册机构的运营。


Freenom 公司已于 2023 年 3 月 9 日全面停止了新域名的注册业务,但未回收已注册域名且域名到期续费功能也保持开放状态,直到近期宣布“退出域名业务”决定后开始大量收回已注册域名。
Freenom 公司官方宣布内容译文及原文如下:
新闻声明
阿姆斯特丹,2024 年 2 月 12 日。Freenom 今天宣布已解决 Meta Platforms, Inc. Freenom 承认 Meta 在实施其知识产权和保护其用户免受欺诈和滥用方面的合法权益。
Freenom 及其相关公司也已独立决定退出域名业务,包括注册机构的运营。在 Freenom 结束其域名业务的同时,Freenom 将把 Meta 旗下公司视为可信赖的通知方,并将实施阻止列表,以应对未来的网络钓鱼、DNS 滥用和抢注行为。
如需进一步咨询,请联系:
Karin Versteeg
kversteeg@freenom.com
—————————————————原文如下—————————————————
Press Statement
Amsterdam, 12th of February 2024. Freenom today announced it has resolved the lawsuit brought by Meta Platforms, Inc. on confidential monetary and business Terms. Freenom recognizes Meta’s legitimate interest in enforcing its intellectual property rights and protecting its users from fraud and abuse.
Freenom and its related companies have also independently decided to exit the domain name business, including the operation of registries. While Freenom winds down its domain name business, Freenom will treat the Meta family of companies as a trusted notifier and will also implement a block list to address future phishing, DNS abuse, and cybersquatting.
For further inquiries, please contact:
Karin Versteeg
kversteeg@freenom.com
域名注册商 Freenom 宣布退出域名业务 大规模回收免费域名

https://www.rayks.com/article/freenom-pending.html

相关消息:

https://domainnamewire.com/2023/11/10/icann-terminates-opentld-famous-for-its-connection-to-tk-domains/

https://domainnamewire.com/2023/09/21/icann-sends-breach-notice-to-freenoms-accredited-domain-registrar/

https://www.icann.org/uploads/compliance_notice/attachment/1211/hedlund-to-zuurbier-20sep23.pdf

https://zhuanlan.zhihu.com/p/682465154

https://zhuanlan.zhihu.com/p/627211282

https://www.zhihu.com/question/591955285

https://www.zhihu.com/question/644205158

使用 update-alternatives 命令切换软件版本

update-alternatives 的功能,类似于在桌面系统上设置默认打开程序。

# update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>

命令:
  --install <链接> <名称> <路径> <优先级>
    [--slave <链接> <名称> <路径>] ...
                           在系统中加入一组候选项。
  --remove <名称> <路径>   从 <名称> 替换组中去除 <路径> 项。
  --remove-all <名称>      从替换系统中删除 <名称> 替换组。
  --auto <名称>            将 <名称> 的主链接切换到自动模式。
  --display <名称>         显示关于 <名称> 替换组的信息。
  --query <名称>           机器可读版的 --display <名称>.
  --list <名称>            列出 <名称> 替换组中所有的可用候选项。
  --get-selections         列出主要候选项名称以及它们的状态。
  --set-selections         从标准输入中读入候选项的状态。
  --config <名称>          列出 <名称> 替换组中的可选项,并就使用其中
                           哪一个,征询用户的意见。
  --set <名称> <路径>      将 <路径> 设置为 <名称> 的候选项。
  --all                    对所有可选项一一调用 --config 命令。

<链接> 是指向 /etc/alternatives/<名称> 的符号链接。
    (如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。
    (如 pager)
<路径> 是候选项目标文件的位置。
    (如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。

选项:
  --altdir <目录>          改变候选项目录。
                             (默认是 /etc/alternatives)。
  --admindir <目录>        设置 statoverride 文件的目录。
                             (默认是 /var/lib/dpkg/alternatives)。
  --instdir <目录>         改变安装目录。
  --root <目录>            改变文件系统根目录。
  --log <文件>             改变日志文件。
  --force                  允许使用候选项链接替换文件。
  --skip-auto              在自动模式中跳过设置正确候选项的提示
                           (只与 --config 有关)
  --quiet                  安静模式,输出尽可能少的信息。
  --verbose                启用详细输出。
  --debug                  调试输出,信息更多。
  --help                   显示本帮助信息。
  --version                显示版本信息。

注册软件: update-alternatives –install

以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;

# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 200
# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_111/bin/java 300

其中:

  • 第一个参数:--install表示向 update-alternatives 注册服务名。
  • 第二个参数:是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;
  • 第三个参数:服务名,以后管理时以它为关联依据。
  • 第四个参数:被管理的命令绝对路径。
  • 第五个参数:优先级,数字越大优先级越高。

常用示例

显示程序的可替换信息:update-alternatives –display <名称>

 # 显示PHP程序的可替换信息
update-alternatives --display php

php - manual mode
  link best version is /usr/bin/php8.3
  link currently points to /usr/bin/php8.2
  link php is /usr/bin/php
  slave php.1.gz is /usr/share/man/man1/php.1.gz
/usr/bin/php8.2 - priority 82
  slave php.1.gz: /usr/share/man/man1/php8.2.1.gz
/usr/bin/php8.3 - priority 83
  slave php.1.gz: /usr/share/man/man1/php8.3.1.gz

注册添加程序的可替换信息:update-alternatives –install <名称>

# 设置PHP
update-alternatives --install /usr/bin/php php /usr/local/lsws/lsphp74/bin/php 74
update-alternatives --install /usr/bin/php php /usr/local/lsws/lsphp81/bin/php 81
update-alternatives --install /usr/bin/php php /usr/local/lsws/lsphp82/bin/php 82

列出 程序替换组中所有的可用选项:update-alternatives –list <名称>

update-alternatives --list php

/usr/bin/php8.2
/usr/bin/php8.3 

交互式修改:update-alternatives –config <名称> 显示可用选项的列表,选择对应的索引确认。

#设置默认浏览器
update-alternatives --config www-browser 

There is 1 choice for the alternative www-browser (providing /usr/bin/www-browser).

  Selection    Path            Priority   Status
------------------------------------------------------------
* 0            /usr/bin/w3m     25        auto mode
  1            /usr/bin/w3m     25        manual mode

Press <enter> to keep the current choice[*], or type selection number:

#设置默认使用的php版本
update-alternatives --config php

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php8.3   83        auto mode
* 1            /usr/bin/php8.2   82        manual mode
  2            /usr/bin/php8.3   83        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

删除替代方案

用 remove 去掉编辑器组中的微替代品:

update-alternatives --remove editor /usr/bin/micro

可以直接使用下面的全部清除:

update-alternatives --remove-all java

解决 apt-get update 从 packages.sury.org 更新 apache2 与 php 时签名无效的错误

apt-get update 显示错误,从 packages.sury.org 更新 apache2 与 php 时签名无效,如下显示:

错误:6 https://packages.sury.org/apache2 bookworm InRelease
  下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key <deb@sury.org>

错误:7 https://packages.sury.org/php bookworm InRelease
  下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key <deb@sury.org>

------------------------------------------------------------------

Err:6 https://packages.sury.org/apache2 bookworm InRelease
The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

Err:7 https://packages.sury.org/php bookworm InRelease
The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:https://packages.sury.org/apache2 bookworm InRelease: 下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:https://packages.sury.org/php bookworm InRelease: 下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: 无法下载 https://packages.sury.org/apache2/dists/bookworm/InRelease 下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: 无法下载 https://packages.sury.org/php/dists/bookworm/InRelease 下列签名无效: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。

————————————————————————————————–

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://packages.sury.org/apache2 bookworm InRelease: The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://packages.sury.org/php bookworm InRelease: The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: Failed to fetch https://packages.sury.org/apache2/dists/bookworm/InRelease The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: Failed to fetch https://packages.sury.org/php/dists/bookworm/InRelease The following signatures were invalid: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key deb@sury.org

W: Some index files failed to download. They have been ignored, or old ones used instead.

解决办法:

参考 packages.sury.org 站点 README.txt 文件的脚本。

apache2 https://packages.sury.org/apache2/README.txt
php https://packages.sury.org/php/README.txt

apache2

apt-get update
apt-get -y install lsb-release ca-certificates curl
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-apache2.gpg] https://packages.sury.org/apache2/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/apache2.list'
apt-get update

php

apt-get update
apt-get -y install lsb-release ca-certificates curl
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update

【END】

使用 HttpRepl 浏览、测试 Web API

The HTTP Read-Eval-Print Loop (REPL) 

  • 一种轻量级跨平台命令行工具,在所有支持的 .NET Core 的位置都可得到支持。
  • 用于发出 HTTP 请求以测试 ASP.NET Core Web API(和非 ASP.NET Core web API)并查看其结果。
  • 可以在任何环境下测试托管的 web API,包括 localhost 和 Azure 应用服务。

安装:dotnet tool install -g Microsoft.dotnet-httprepl

(视频)使用 HttpRepl 浏览 Web API:

https://learn.microsoft.com/zh-cn/shows/beginners-series-to-web-apis/exploring-web-apis-with-the-httprepl-16-of-18–beginners-series-to-web-apis

使用 HttpRepl 测试 Web API

https://learn.microsoft.com/zh-cn/aspnet/core/web-api/http-repl/?view=aspnetcore-8.0&tabs=windows

HttpRepl:用于与 RESTful HTTP 服务交互的命令行工具

https://devblogs.microsoft.com/dotnet/httprepl-a-command-line-tool-for-interacting-with-restful-http-services/#configure-visual-studio-for-windows-to-launch-httprepl-on-f5

HttpRepl GitHub 存储库https://github.com/dotnet/HttpRepl

中国网络出口、海陆光缆相关汇总

中国运营商海陆光缆的布局、挑战与破局

https://www.eet-china.com/mp/a204489.html

海底光缆(下称“海缆”)和陆地光缆(下称“陆缆”),是当今全球网络通信的重要基础设施。

它们不仅代表一个国家的通信发展水平,还影响着科教能力、经济发展和民生福祉,甚至安全层面

既然海陆缆于一国而言具有如此重要的意义,那么,中国运营商在海外有哪些布局?当前面临着什么挑战?如何破局?


本期,笔者将带着这些问题,为您做一个分享。

█ 海陆缆简介

关于海陆缆的特点,笔者之前在《海缆通信 VS 陆缆通信》一文中作过详细介绍,总结起来,有以下四个方面。

● 带宽容量:一般而言,海缆的容量比陆缆更大。

● 网络时延:海缆与陆缆的时延各有千秋,取决于具体的物理路由。

● 运行稳定性:海缆要么正常,要么中断,修复起来慢;陆缆中断的情况较少,但抖动(倒换)可能较多。

● 市场价格:对于中长距离的国际传输,一般情况下陆缆的价格要高于海缆。

█ 我国海陆缆的特点

我国国际海陆缆发展的特点是:起步较晚,发展较快,瓶颈较多。

1、起步较晚

世界上第一条光缆,是 1988 年美国与英国、法国之间铺设的大西洋海底光缆(TAT-8),全长 6700 公里。

这条光缆含有 3 对光纤,每对的传输速率为 280 Mbps,中继站距离为 67 公里。大西洋海底光缆的建成,标志着海底光缆时代的到来。

我国直至 1993 年底,才开通第一条海底光缆——中日海底光缆。中日海底光缆从上海南汇至日本九州宫崎,全长 1252 公里,通信总容量达 7560 条通话电路。中日海底光缆的开通,使得当时中国国际通信能力增长 80% 以上,标志着中国从此向互联网进军。

中日海底光缆成功登陆,引用自互联网公开信息

2、发展较快

在国际海缆方面,根据中国信通院发布的信息,经过多年的建设,目前在中国大陆登陆的国际海缆共有 9 条,中国运营商在登陆海缆上现有带宽超过 40 Tbps 的带宽,并且这一数字还在不断增长,具体如下。

在中国大陆登陆的海缆(引用自中国信通院发布的《中国国际光缆互联互通白皮书》)

在跨境陆缆方面,中国更是取得了长足的进步。通过跨境陆缆,中国已经建成了连接周边国家、通达欧洲的陆地光缆网络架构,系统带宽超过 70 Tbps,具体如下。

中国跨境陆缆统计表(引用自中国信通院发布的《中国国际光缆互联互通白皮书》)

3、瓶颈较多

然而,尽管近年来中国运营商在国际海陆缆建设方面发展较快,但相比一些发达国家,仍然存在较大差距和诸多不足,具体有以下几个方面。

● “马六甲困境”

目前几乎所有从中国去往中东、欧洲或非洲地区的海缆,均需要途经马六甲海峡,由于某些因素,万一马六甲海峡局势有变化,这必然会影响中国与世界的通信,进而波及中国“一带一路”发展战略的推进。

图:中国海缆通信的“马六甲困境”

● 美国无法上岸

目前,中国运营商投资建设了一些在美国登陆的海缆,并拥有一定的带宽权益,例如 TPE、FASTER 和 NCP 等。而随着中国电信、中国联通的 “214 牌照”于 2021 年和 2022 年相继被美国吊销,导致中国运营商的海缆资源将无法在美国上岸,而面临被动局面。

注:“214 牌照”,是指根据美国通信法(1934 年版及 1996 年修订版)第 214 条规定,取得的 FCC 颁发的国际电信业务授权——在美国与外国之间提供国际公共运营商通信服务。

● 非洲存量为零

非洲作为中国“一带一路”战略的重要区域,聚集了大量的中资企业。这些企业背靠强大的祖国,在非洲投资、建设与生产,不少已经扎根非洲。然而,非洲相对落后的通信基础设施,将日益成为中资企业进一步发展的瓶颈。

据了解,当前非洲国家之间主要依靠海缆进行通信(陆缆资源发展落后),而可选的只有 SAT-3/WASC、EASSy 和 ACE 等寥寥数条由欧洲运营商主导建设的海缆,且价格昂贵。这客观上制约了中国运营商在当地的网络服务能力。

█ 未来动向

可喜的是,面对上述发展的困境,中国运营商背靠强大的祖国,在海陆缆发展方面进行了前瞻性的战略布局,并取得了重要积极的进展。

1.打通中巴陆缆——冲破“马六甲困境”

首先是中国电信于 2018 年率先开通中国-巴基斯坦首条跨境陆地光缆系统(下称“中巴光缆系统”),这标志着中巴两国通信网络基础设施互联互通建设取得重大进展。

中巴光缆系统,引用自《中国电信建成开通中国-巴基斯坦首条跨境陆地光缆》

中巴光缆系统只是一个开始,随着中巴两国战略合作的进一步深入,相信在不久的将来,中巴光缆将有望从伊斯兰堡延伸至港口城市卡拉奇,并与卡拉奇海缆对接。如此一来,海缆通信的“马六甲困境”将迎刃而解,对中国的战略意义不言而喻。

中巴光缆系统(图中橙色实线),及其延伸段(图中橙色虚线)

2.投资建设 2Africa 海缆——强化非洲网络覆盖能力

非洲人口众多,市场广阔,发展潜力巨大,是中国“一带一路”发展战略的重要阵地,然而,通信基础设施落后也是许多非洲国家在经济发展中绕不开的问题。

为了更好地助力中资企业出海,增强中国在非洲乃至全球的影响力,中国移动于 2020 年,投资建设 2Africa 海缆系统。

2Africa 海缆(含中东 PEARLS 分支)全长45000 公里,预计于 2023 年末建成投产,届时将是世界上人最长的海底光缆系统,覆盖超过全球超过三分之一的人口。

2Africa 海缆,引用自《2Africa to become world’s longest subsea cable post Arabian, Asian expansion》

3.积极拓展中越、中泰、中缅和中老等方向的对接

中国人西南邻国众多,与中国的经济、政治和文化联系紧密。在“睦邻友好、和平发展”方针下,近年来中国运营商正积极与越南、泰国、缅甸和老挝等国进行陆网方面的合作。

根据公开资料显示,目前中国电信已建成中老泰陆缆系统,中国移动也已打通中越、中泰等方向的陆缆通信信道。

向西南方向的陆缆拓展,一方面加强了中国与东南亚国家的联系,另一方面也是为信息出海方向提供更多的选择性。

中国电信中老泰陆缆,引用自《中国电信成功开通中老泰陆缆》

信息化是智能制造的前提,而海陆缆则是信息化的重要基础设施。伴随着中国“一带一路”发展战略的推进,接下来我们将在全球海陆缆建设中看到更多的中国身影和中国元素。

https://www.submarinenetworks.com/zh/zx/hll/20220512

中国移动国际、中国联通国际等携手华海通信 共同宣布建设SEA-H2X国际海缆 使能亚洲互联新时代

2022年5月12日,【天津,中国】—— 中国移动国际有限公司(CMI)、中国联通国际有限公司(CUG)、Converge Information and Communications Technology Solutions, Inc.(Converge)以及PPTEL SEA H2X Sdn. Bhd(PPTEL SEA H2X)近日宣布计划合作铺设SEA-H2X国际海缆系统,为亚洲及全球数字化转型扩容提速。SEA-H2X将连接中国海南、中国香港、菲律宾、泰国、马来西亚及新加坡等地,进一步可延伸至越南、柬埔寨以及印度尼西亚,建成后将极大提升亚洲区域内的网络连接性。SEA-H2X由国际海缆联盟成员共同运营,由华海通信技术有限公司(HMN Tech)承建。

SEA-H2X国际海缆全长将超过5,000公里,采用高规格光纤布线,其设计容量高达160 Tbps,新加坡和中国香港两地间线路将采用至少8对光纤部署。SEA-H2X海缆计划于2024年投入使用,届时将有效满足亚洲地区对网络带宽和高速连接日益增长的需求,助力共建5G演进的网络新生态,为全球数字经济蓬勃发展提供更大助推力。

SEA-H2X海缆系统由华海通信提供海缆系统的端到端解决方案,包含海缆系统及水上水下设备的设计、生产、建设和施工。该系统应用了先进的 Open Cable技术,使其可灵活地选择最优的海底线路终端设备(SLTE),达到传输能力最大化。此外,该项目还应用了全球领先的海底线路分支器(BU)和海底线路动态光分插复用器(ROADM)将为SEA-H2X海缆系统提供超高的可靠性和光电线路的高灵活性。

路由图:

https://www.submarinenetworks.com/zh/zx/hll/peace-20180829

https://www.submarinenetworks.com/zh/zx/hll/20211020

https://www.submarinenetworks.com/zh/zx/hll/2018102201

PEACE国际海缆网络系统有限公司(亨通集团子公司)和华为海洋网络有限公司今日联合宣布,PEACE海缆项目进入海缆和设备生产环节。该海缆项目全程12,000公里,将连接亚洲、非洲和欧洲,并计划在2020年第一季度提供商用服务。


https://www.submarinenetworks.com/en/stations/asia/china

China

现在有以下海底电缆登陆中国大陆:

通往美国的电缆:

  • China-US CN (retired)
  • TPE
  • NCP

连接亚洲的电缆:

  • APCN-2
  • APG
  • EAC-C2C
  • SJC
  • SJC2 (2021)
  • TSE-1
  • Xiamen-Jinmen
  • Hainan to Hong Kong Express (H2HE)

通往非洲和欧洲的电缆:

  • FLAG Europe-Asia
  • SMW3

这些电缆降落在中国的 9 个海底电缆登陆站。

中国电信拥有三个光缆登陆站,包括

中国联通拥有四个电缆登陆站,包括:

中国移动拥有两个电缆登陆站:

  • Lingang Cable Landing Station for NCP and SJC2;
  • Wenchang Cable Landing Station for Hainan to Hong Kong Express (H2HE)

使用Certbot生成Let’s Encrypt证书,为OpenLiteSpeed 配置 SSL

使用 Let’s Encrypt 快速安装 SSL

手动certbot ,单独注册证书,最快获取Let’s Encrypt SSL证书的方式。。。

设置,先安装certbot

sudo apt-get update
sudo apt-get install certbot -y

以非交互式申请证书:

如要申请证书:example.com

certbot certonly --non-interactive --agree-tos -m demo@gmail.com --webroot -w /var/www/html -d example.com

要同时申请证书,并且:example.comwww.example.com

certbot certonly --non-interactive --agree-tos -m demo@gmail.com --webroot -w /var/www/html -d example.com -d www.example.com

OpenLiteSpeed 下的 SSL设置

  • 1. 如果我们只有一个证书,我们可以在侦听器级别设置它。

导航到 OpenLiteSpeed > Web 控制台> 侦听器> SSL > SSL 私钥和证书
设置以下值:

  • 私钥文件/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem
  • 证书文件/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem

单击“保存”,然后执行“平滑重启”。

  • 2. 配置多个 SSL

虚拟主机中的SSL证书将覆盖侦听器,因此我们只需将证书添加到每个域的虚拟主机即可。

导航到 OpenLiteSpeed > Web 控制台>虚拟主机>您的虚拟主机> SSL > SSL 私钥和证书
设置以下值:

  • 私钥文件/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem
  • 证书文件/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem

单击“保存”,然后执行平滑重启”。

OpenLiteSpeed 版本升级

CURRENT VERSION:OpenLiteSpeed 1.7.18   New Release: 1.7.19 (current branch)

登陆管理后台,左上角显示 【当前版本 OpenLiteSpeed 1.7.18 最新版本 1.7.19

使用apt-get upgrade openlitespeed 没有找到新版本,如何更新呢?

下载 lsup.sh:

wget https://raw.githubusercontent.com/litespeedtech/openlitespeed/master/dist/admin/misc/lsup.sh
./lsup.sh

或者 -v 指定版本安装:

/usr/local/lsws/admin/misc/lsup.sh -v 1.7.19

Running ./lsup.sh 将更新之最新版本。

screen后台运行|恢复会话|断开当前会话

screen 控制 ssh 远程会话命令不中断。避免终端窗口关闭/网络断开 后的 进程会话中断。

新建screen

screen -S your_screen_name

Ctrl + a, d :断开当前 screen 会话,但保持会话在后台运行。 Ctrl + a, k :关闭当前窗口或会话。

进入screen

screen -r your_screen_name

Ctrl+D # 在当前screen下,输入Ctrl+D,删除该screen
Ctrl+A,Ctrl+D # 在当前screen下,输入先后Ctrl+A,Ctrl+D,退出该screen

显示screen list

​​​​​​​screen -ls

连接状态为【Attached】的screen

解决恢复会话时出现 There is no screen to be resumed matching 的错误

screen -D -r your_screen_name # 解释:-D -r 先踢掉前一用户,再登陆

判断当前是否在screen中断下,Ubuntu系统,可以这样:

sudo vim /etc/screenrc

文件末尾追加一行即可允许设置screen标题

caption always "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%H %Y/%m/%d "

删除指定screen, your_screen_name为待删除的screen name

​​​​​​​screen -S your_screen_name -X quit

Debian 安装 .NET 的汇总

1.APT 安装

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

Bash复制

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

Bash复制

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

2.脚本安装

dotnet-install 脚本用于 SDK 和运行时的自动化和非管理员安装。

Bash复制

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version latest

有关详细信息,请参阅 dotnet-install 脚本参考

若要在命令行上启用 .NET,请参阅设置系统范围的环境变量

在 shell 配置文件中设置以下两个环境变量:

手动安装 .NET 不会添加系统范围的环境变量,并且通常仅适用于安装 .NET 的会话。 应为操作系统设置两个环境变量:

  • DOTNET_ROOT此变量设置为 .NET 安装到的文件夹,例如 $HOME/.dotnet(对于 Linux 和 macOS )和 PowerShell 中的 $HOME\.dotnet(对于 Windows)。
  • PATH此变量应同时包含 DOTNET_ROOT 文件夹和用户的 .dotnet/tools 文件夹。 通常,在 Linux 和 macOS 上为 $HOME/.dotnet/tools,在 Windows 上为 PowerShell 中的 $HOME\.dotnet\tools

 提示

对于 Linux 和 macOS,请使用 echo 命令在 shell 配置文件中设置变量,例如 .bashrc:

Bash复制

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc

问题处理:bash: dotnet: command not found

某些情况下,当使用APT安装完成之后,dotnet --info 显示 命令没有找到!使用ll查看 “/usr/bin/dotnet” 链接 指向 “/usr/share/dotnet/dotnet”,但是/usr/share/dotnet/dotnet中并没有dotnet文件。

ll /usr/bin/dotnet
lrwxrwxrwx 1 root root 24 Dec 28 19:22 /usr/bin/dotnet -> /usr/share/dotnet/dotnet

发现APT安装时缺少文件,产生的文件数量不完整。

处理方法:先使用安装脚本安装到 “.dotnet/”文件夹下,拷贝文件到 /usr/share/dotnet,再 使用 ln 链接到 /usr/share/dotnet/dotnet(已创建链接,可以跳过),然后删除 .dotnet 文件夹。

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh
cp -r -n .dotnet/* /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
rm -rf .dotnet

注意:APT安装 在 “.dotnet”文件夹 ,脚本安装 在 “/usr/share/dotnet”文件夹中。所以不要两种安装方法同时,会创建两个副本,占用1个G的空间。可以使用上面的命令,脚本安装,复制子文件后删除一个副本。


问题处理:找不到\无法安装某些包

如果收到类似于“找不到包 {dotnet-package}”或“无法安装某些包”的错误消息,请运行以下命令

以下命令组中有两个占位符。

  • {dotnet-package}
    此项表示要安装的 .NET 包,如 aspnetcore-runtime-8.0。 它在以下 sudo apt-get install 命令中使用。
  • {os-version}
    这表示你正在使用的发行版。 此项在以下 wget 命令中使用。 发行版是数值,如 Ubuntu 上的 20.04 或 Debian 上的 10

首先,尝试清除包列表:

Bash复制

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

然后,再次尝试安装 .NET。 如果这不起作用,可使用以下命令运行手动安装:

Bash复制

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

手动删除 .NET 运行时和 SDK

如果使用 dotnet-install 脚本或通过提取 tarball 来安装 .NET,则必须使用手动方法删除 .NET。

手动安装 .NET 时,它通常安装到 /usr/share/dotnet//usr/lib/dotnet/ 或 $HOME/.dotnet 目录中。 SDK、运行时和 .NET 主机安装到单独的子目录中。 这些“组件”目录包含每个 .NET 版本的目录。 通过删除版本控制目录,可以从系统中删除该版本的 .NET。 这些目录可能因你的 Linux 分发版而异。

可以使用三个命令来发现 .NET 的安装位置:dotnet --list-sdks(用于 SDK)、dotnet --list-runtimes(用于运行时)和 dotnet --info(用于所有内容)。 这些命令不会列出 .NET 主机。 若要确定安装了哪些主机,请检查 /usr/share/dotnet/host/fxr/ 目录。 以下列表表示特定版本的 .NET 的目录,其中 $version 变量表示 .NET 的版本:

  • SDK/usr/share/dotnet/sdk/$version/
  • 运行时:运行时基于特定的 .NET 产品运行时,例如 Microsoft.AspNetCore.All 或 Microsoft.NETCore.App(特别是 .NET 运行时)。 它们将安装到 /usr/share/dotnet/shared/$product/$version 目录,其中 $product 是产品运行时。 例如,可能会看到以下目录:复制/usr/share/dotnet/shared/Microsoft.NETCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
  • .NET 主机/usr/share/dotnet/host/fxr/$version/

使用 rm -rf 命令删除 .NET 版本。 例如,若要删除 6.0.406 SDK,请运行以下命令:

Bash复制

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

 重要

版本目录可能与要卸载的“版本”不匹配。 与单个 .NET 版本一起安装的各个运行时和 SDK 可能具有不同的版本。 例如,你可能安装了 ASP.NET Core 8 运行时,其中安装了 8.0.2 ASP.NET Core 运行时和 8.0.8. NET 运行时。 二者有不同版本的目录。 有关详细信息,请参阅 .NET 的版本控制方式概述


使用 URL 配置终结点

以下部分介绍如何使用以下方式配置终结点:

  • ASPNETCORE_URLS 环境变量。
  • --urls 命令行参数。
  • urls 主机配置键。
  • UseUrls 扩展方法。
  • WebApplication.Urls 属性。