如何设置本地测试服务器?

本文介绍如何在您的机器上设置简单的本地测试服务器,以及如何使用它的基本知识。

先决条件 您需要首先了解 互联网是如何工作的,以及 什么是 Web 服务器
目标 您将学习如何设置本地测试服务器。

本地文件与远程文件

在大多数学习区域中,我们建议您直接在浏览器中打开示例 - 这可以通过双击 HTML 文件、将其拖放到浏览器窗口或选择文件 > 打开... 并导航到 HTML 文件来完成。 有很多方法可以实现这一点。

如果 Web 地址路径以file://开头,后面跟着本地硬盘上文件的路径,则使用本地文件。 相反,如果您查看托管在 GitHub 上(或其他远程服务器上的示例)的示例,Web 地址将以http://https://开头,表示文件已通过 HTTP 接收。

测试本地文件的问题

如果您将某些示例作为本地文件打开,它们将无法运行。 这是由于多种原因造成的,最有可能的原因是

  • 它们包含异步请求。 一些浏览器(包括 Chrome)如果只是从本地文件运行示例,将不会运行异步请求(参见 从服务器获取数据)。 这是由于安全限制造成的(有关 Web 安全的更多信息,请阅读 网站安全)。
  • 它们包含服务器端语言。 服务器端语言(如 PHP 或 Python)需要特殊的服务器来解释代码并传递结果。
  • 它们包含其他文件。 浏览器通常将使用file://模式加载资源的请求视为跨域请求。 因此,如果您加载包含其他本地文件的本地文件,这可能会触发 CORS 错误。

运行简单的本地 HTTP 服务器

为了解决异步请求的问题,我们需要通过本地 Web 服务器运行这些示例来测试它们。

在代码编辑器中使用扩展

如果您只需要 HTML、CSS 和 JavaScript,并且不需要服务器端语言,最简单的方法可能是检查代码编辑器中的扩展。 除了自动为您的本地 HTTP 服务器安装和设置之外,它们还可以与您的代码编辑器很好地集成。 在 HTTP 服务器中测试本地文件可能只需单击一下即可。

对于 VSCode,您可以查看以下免费扩展

  • vscode-preview-server。 您可以在其 主页 上查看它。

使用 Node.js

Node.js http-server 模块是将 HTML 文件托管在任何目录中最简单的方法。

要使用该模块

  1. 运行以下命令以检查 Node.js 是否已安装
    bash
    node -v
    npm -v
    npx -v
    
  2. 如果 Node.js 未安装,您需要安装它。 请遵循 Node.js 文档中的下载说明,然后再次运行上述命令以检查安装是否成功。
  3. 假设该目录为/path/to/project。 运行以下命令以启动服务器
    bash
    npx http-server /path/to/project -o -p 9999
    
    这将托管/path/to/project目录中的所有文件,位于localhost:9999。 选项-o将在 Web 浏览器中打开index.html页面。 如果index.html不存在,则会显示该目录。

使用 Python

另一种实现此方法的方法是使用 Python 的http.server模块。

注意:旧版本的 Python(最高版本 2.7)提供了一个名为SimpleHTTPServer的类似模块。 如果您使用的是 Python 2.x,您可以按照本指南进行操作,将所有使用http.server的地方替换为SimpleHTTPServer。 但是,我们建议您使用最新版本的 Python。

为此

  1. 安装 Python。 如果您使用的是 Linux 或 macOS,它应该已经在您的系统上可用。 如果您是 Windows 用户,您可以从 Python 主页获取安装程序,并按照说明进行安装
    • 转到 python.org
    • 在下载部分,单击 Python "3.xxx" 的链接。
    • 在页面底部,单击Windows 安装程序链接下载安装程序文件。
    • 下载完成后,运行它。
    • 在第一个安装程序页面上,确保选中“将 Python 3.xxx 添加到 PATH”复选框。
    • 单击安装,然后在安装完成后单击关闭
  2. 打开您的命令提示符(Windows)/终端(macOS/Linux)。 要检查 Python 是否已安装,请输入以下命令
    bash
    python -V
    # If the above fails, try:
    python3 -V
    # Or, if the "py" command is available, try:
    py -V
    
  3. 这应该返回一个版本号。 如果一切正常,请使用cd命令导航到包含要测试的网站代码的目录。
    bash
    # include the directory name to enter it, for example
    cd Desktop
    # use two dots to jump up one directory level if you need to
    cd ..
    
  4. 在该目录中输入命令以启动服务器
    bash
    # If Python version returned above is 3.X
    # On Windows, try "python -m http.server" or "py -3 -m http.server"
    python3 -m http.server
    # If Python version returned above is 2.X
    python -m SimpleHTTPServer
    
  5. 默认情况下,这将在本地 Web 服务器上运行该目录的内容,端口为 8000。 您可以通过在 Web 浏览器中访问 URL localhost:8000来访问此服务器。 在这里,您将看到该目录的内容列表 - 单击要运行的 HTML 文件。

注意:如果您已经在端口 8000 上运行了其他内容,您可以通过运行服务器命令后跟一个备用端口号来选择另一个端口,例如python3 -m http.server 7800(Python 3.x)或python -m SimpleHTTPServer 7800(Python 2.x)。 然后,您可以通过localhost:7800访问您的内容。

在本地运行服务器端语言

处理服务器端语言(如 Python、PHP 或 JavaScript)的最佳方法取决于您使用的服务器端语言,以及您是使用 Web 框架还是“独立”代码。

如果您使用的是 Web 框架,通常该框架会提供自己的开发服务器。 例如,以下语言/框架附带开发服务器

如果您没有直接使用服务器端框架或提供开发服务器的编程语言,Python 的http.server模块也可以用于测试用 Python、PHP、JavaScript 等语言编写的服务器端代码,方法是调用服务器端通用网关接口 (CGI) 脚本。 有关如何使用此功能的示例,请参见 realpython.com 上的如何在 Python 代码中用一行代码启动 HTTP 服务器中的 通过通用网关接口 (CGI) 远程执行脚本