diff --git a/pages/_planet/2025-01-03-local-file-serving.md b/pages/_planet/2025-01-03-local-file-serving.md index 8743809ce8..db32d48e7c 100644 --- a/pages/_planet/2025-01-03-local-file-serving.md +++ b/pages/_planet/2025-01-03-local-file-serving.md @@ -12,7 +12,7 @@ USTCLUG 的一个重要服务是它的 [开源软件镜像](https://mirrors.ustc 某些课程作业附带的代码示例会通过 HTTP 的方式获取运行需要的输入数据,但是如果这个数据不巧放在某台访问速率很低的服务器上(例如不少用 `.edu` 域名的国外大学的课程网站上),则会使得作业的运行时间大大加长——通过只有几 KB/s 的网络下载数十 MB 的数据总不是个好主意。更有可能的是,根据作业内容,样例代码还需要做一些修改,这时候每次调试运行代码时都要去下载一次输入数据,简直难以忍受。本文将针对 Windows 用户,讲解如何在手工下载一次相关的文件后,在本地快速搭建一个 HTTP 服务器提供数据文件,以避免反复访问慢速的源地址。对于不能修改访问地址的情况,也提供了相应的对策。 -> 为何不写针对 Linux 用户的教程呢?这是因为,由于有 Apache 和 NGINX 这类成熟好用的服务器软件,再加上 Linux 操作系统优秀的包管理器,结合网上的教程,用几分钟的时间在 Linux 平台上快速建立并运行一个 HTTP 服务器应该不是难事。而在 Windows 上,配置 IIS 这类大而笨重的服务器非常麻烦,使用 Apache/NGINX 之类的服务器软件又由于操作习惯的不同,也不方便。 +> 为何不写针对 Linux 用户的教程呢?这是因为,由于有 Apache 和 Nginx 这类成熟好用的服务器软件,再加上 Linux 操作系统优秀的包管理器,结合网上的教程,用几分钟的时间在 Linux 平台上快速建立并运行一个 HTTP 服务器应该不是难事。而在 Windows 上,配置 IIS 这类大而笨重的服务器非常麻烦,使用 Apache/Nginx 之类的服务器软件又由于操作习惯的不同,也不方便。 ## 使用 Python `http.server` @@ -20,7 +20,7 @@ USTCLUG 的一个重要服务是它的 [开源软件镜像](https://mirrors.ustc 如果你已经安装了 Python,则可以直接使用 -``` +```cmd python3 -m http.server ``` @@ -28,13 +28,13 @@ python3 -m http.server 如果需要指定别的目录 `` 作为 HTTP 服务的根目录,可以使用 -``` +```cmd python3 -m http.server --directory ``` 如果需要 bind 到特定的地址(对于本地服务而言,应该使用 `127.0.0.1`),可以使用下面的命令。`bind` 是指将一个网络地址(IP 和端口)与服务器软件中的套接字关联的过程,使得该服务器能接收指定地址上的网络数据。**Python 的 http.server 默认值为 `0.0.0.0`,代表所有人都可以访问**。如果只需要本地访问,则可以使用本地回环地址 `127.0.0.1`。 -``` +```cmd python3 -m http.server --bind 127.0.0.1 ``` @@ -69,7 +69,7 @@ python3 -m http.server --bind 127.0.0.1 如果代码不支持修改地址(这很少见),那么也可以按照原来的 URL 在本地建立文件夹,类似下面这样: -``` +```text EasyWebSvr.exe path/ -> 建立这个目录 to/ -> 建立这个目录 @@ -79,22 +79,22 @@ path/ -> 建立这个目录 然后修改 `hosts` 文件(一般在 `C:\Windows\System32\drivers\etc` 里面,需要管理员权限,具体请看相关教程),加上一句 -``` +```text 127.0.0.1 some.site.edu ``` 然后以管理员权限运行 -``` +```cmd ipconfig /flushdns ``` 即可。可以通过浏览器访问 `http://some.site.edu/path/to/file/data.csv` 来确认。这一操作会修改所有对 `some.site.edu` 的请求,因此用完后请删去在 `hosts` 中加入的那一行,然后再运行一次 `ipconfig /flushdns`。 -#### 原地址有非 `80` 的端口号 +#### 原地址有非 80 的端口号 如果你拿到的地址使用了别的端口(例如 `some.site.edu:8080`)且不能修改,那么请在 EasyWebServer 的设置页面 `端口号` 处输入对应的端口号 `8080`,对应的访问地址就是 `localhost:8080`。 #### 提示端口已被占用 -这可能是因为有其他应用在使用 `80` 端口。通过 `netstat -ano` 命令可以查看机器上正被使用的端口号和对应的进程 ID。如果不希望关闭占用 `80` 端口的程序,那么和上面非 `80` 端口一样,将我们的 HTTP 文件服务器换到一个别的端口就好了,例如 `8080` 或者 `8000`,然后再次点红色圆球图标开启服务器。这时候记得访问地址也要加上对应的端口号。 +这可能是因为有其他应用在使用 80 端口。通过 `netstat -ano` 命令可以查看机器上正被使用的端口号和对应的进程 ID。如果不希望关闭占用 80 端口的程序,那么和上面非 80 端口一样,将我们的 HTTP 文件服务器换到一个别的端口就好了,例如 `8080` 或者 `8000`,然后再次点红色圆球图标开启服务器。这时候记得访问地址也要加上对应的端口号。