PES
ZH English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

如何开启通知

此浏览器或网址无法使用通知。请使用支持通知的浏览器,通过安全连接访问PES。

如果通知被屏蔽,请在浏览器设置中允许通知。

  1. 打开地址栏旁的站点设置或浏览器的站点设置,将此网站的通知设为允许。
  2. 在设备设置中允许浏览器发送通知,并检查勿扰模式或专注模式。
  3. 返回PES,刷新页面,然后通过铃铛开启通知。

在iPhone或iPad上,将PES添加到主屏幕,从主屏幕打开后允许通知。

我的学习进度
  1. 人工智能用法
  2. 终端命令
  3. 人工智能进阶
  4. Vibe 编程
  5. 人工智能证书 准备中
  6. 键盘
查看详情
返回 Vibe 编程
VIBE 编程

Web 服务器

二十行 Shell,浏览器就肯跟它说话。

Web 服务器不过是一个等待请求、送出响应的程序。为了证明这一点,我们只用 bash、netcat 和一个命名管道做一台出来 —— 每一行你都读得懂。之后再走向 Caddy,那是连 HTTPS 一起带上、真正跑线上站点的服务器。

Caddy:一台仍然读得懂的真服务器

Caddy 是一个只有单个可执行文件的现代 Web 。它值得紧接着 Shell 例子来学,因为它保留了同样的手感 —— 几行读得懂的配置就跑起来 —— 却把 Shell 版做不到的事全部解决了。

它最拿得出手的是自动 。给它一个真实,它就会申请证书、装好、在过期前续期,并把 http 访客转去 https。在别的服务器上,这是每隔几个月就得重来一次的杂活。

安装

install
# macOS
brew install caddy

# Ubuntu / Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
sudo apt update && sudo apt install caddy

# Docker alone is enough
docker run -p 8080:80 -v "$PWD":/usr/share/caddy caddy

一行命令把文件夹送出去

不需要配置文件。进到放着 index.html 的文件夹,敲一行命令就好 —— 这是把页面给同一网络里的人看的最快办法。

terminal
# serve this folder's index.html on port 8080
caddy file-server --listen :8080

# add a directory listing for folders without an index.html
caddy file-server --listen :8080 --browse

Caddyfile

要长期放着的,就写一份 Caddyfile。它就是纯文本,一个完整站点四行就够。

Caddyfile
example.com {
	root * /var/www/html
	file_server
	encode gzip zstd
}
  1. example.com {站点地址。这里写真实域名,Caddy 会自己张罗 HTTPS 证书;写 localhost,它就为本地开发提供普通的 http。
  2. root * /var/www/html文件在磁盘上的位置。星号表示这条规则适用于本站点的所有路径。
  3. file_server真正把那些文件送出去的一行。少了它,Caddy 会对请求什么都不给。
  4. encode gzip zstd送出前先压缩响应。就一个词,慢速网络下页面到达得明显更快。
关于那张证书

Caddy 向 Let's Encrypt 申请免费证书,这要求域名的 指向你的机器,而且 80 和 443 端口从外面能连上。如果前面另有一层代理替它接下了这两个端口,验证就会失败,证书永远拿不到 —— 这是第一次配 Caddy 时锁不变绿最常见的原因。

反向代理:把请求转交出去

大多数站点不是磁盘上的文件,而是某个在本地上倾听的应用程序。就是接下外部请求、转交给那个应用、再把答案送回去的服务器。一行就够。

Caddyfile
getpes.com {
	reverse_proxy pes-web:3000
}

dl.getpes.com {
	root * /srv/files
	file_server browse
}

一台机器承载多个站点靠的也是它。443 端口只能由一个程序占住,于是让 Caddy 占着,它读出访客要的是哪个域名,再把每一个转给背后不同的应用。

需要掌握的命令

命令作用
caddy run在前台运行,把日志打在终端上。配置还没调好的时候,你要的就是这个。
caddy start转到后台运行并把提示符还给你。临时演示够用,正式服务器则应当作为系统服务来跑。
caddy reload不中断任何一条连接就加载新配置。改了 Caddyfile 并不需要重启。
caddy fmt --overwrite就地把文件格式整理好。缩进比看上去重要,这条命令一次了结所有争论。
caddy validate什么都不启动,只检查配置有没有错。在给线上服务器 reload 之前先跑一遍。
这个站点正是这样跑的

在 PES 的服务器上,一个 Caddy 占住 80 和 443,按域名分流:主站送往应用容器,下载用的子域名直接从磁盘提供。新增一个站点,只是多放一份上面那样的文件再 reload —— 不用重启,也不会有第二个程序来抢端口。

这一栏由你自己标记,这里不打分。

要把这一阶段标记为已理解吗?

目前还不能取消,请在真正理解后再标记。

已标记为理解

这一栏由你自己标记,这里不打分。

学习指南

人工智能

人工智能资格证

学习

Vibe 编程

游戏开发

练习

导师

聊天

论坛

创作

社区

更多

术语词典

选一个你不认识的词吧,可以看到简单的解释和相关术语。

还没有匹配的术语。

选择一个术语即可查看解释。