运行 本地网络服务器是什么意思?
What does it mean to run a local web server?
我可以在 Ruby 在 Rails/JS/HTML/CSS 中进行编程和开发,以制作一个完整的堆栈应用程序。但是,我对 HTTP request/response 循环的理解存在漏洞。以下几点正确吗?
- 如果我制作了一个 Rails 应用程序,并在命令行上键入
rails server
,我将获得一个本地服务器,我可以向其发出请求。如果我打开浏览器,键入 localhost:3000
,然后按回车键,我将向本地服务器发出 HTTP 请求。
- Rails 默认使用名为 WEBrick 的 Web 服务器,尽管还有其他服务器,如 Thin、Puma 和 Unicorn。这些都是软件,之所以成为 Web 服务器,是因为该软件实现了处理 HTTP 请求的功能。
- 当我 运行 本地网络服务器时,这意味着我的计算机正在 运行 正在侦听 HTTP 请求的这些软件之一。
上面是什么意思"to run a local web server"?
- 我已经看到了 "run a local web server" 的其他方法示例。其中之一是在项目目录中 运行
npm install -g http-server
,然后导航到 localhost:8080
。这也是启动 运行ning 并在端口 8080 上接受 HTTP 请求的软件吗?
- 在 Ruby 命令行上,安装机架 gem:
gem install rack
。然后在一个新的 Ruby 文件中我们 require 'rack'
,启动一个网络服务器:
Rack::Server.start({ app: MySimpleApp, port: 3000 })
然后我们可以定义一个 web 应用程序 MySimpleApp
是机架兼容的(响应 call
方法的对象):
class MySimpleApp
def self.call
(...)
end
end
所以现在当我们在浏览器中导航到 localhost:3000 时,MySimpleApp 将被执行。 rack 只是 运行 是默认的 WEBrick 服务器吗?上面的命令只是简单地 运行 本地 Web 服务器并定义当 HTTP 请求进入时要做什么(执行 MySimpleApp)?
你的理解很正确。 HTTP 只是一种基于文本的协议,与许多协议一样,它在 TCP/IP.
上运行
内置的 WEBrick 服务器并不是用 Ruby 编写的 HTTP 服务器的最佳示例,但出于遗留原因将其包括在内,因为通常 "good enough" 可以帮助您入门。 Pow 要好得多,尽管它是由生产 Rails 的同一家公司生产的,但它主要是用 Node 编写的。
与许多基于 Internet 的协议一样,HTTP 的优点在于,只要您符合标准,使用什么语言并不重要。
Rack 是一个在 HTTP 之后运行的层,并在 request/response 周期上提供一个薄的抽象层。
服务器是为某种数据传输打开端口(80、443、8080)的东西。端口 80 是 HTTP 端口,端口 443 是 HTTPS 端口。 8080 是开发常用的端口(3000 也是)。 https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
根据定义,本地服务器是您计算机上的服务器 运行。
总的来说,你绝对是在正确的轨道上。
我可以在 Ruby 在 Rails/JS/HTML/CSS 中进行编程和开发,以制作一个完整的堆栈应用程序。但是,我对 HTTP request/response 循环的理解存在漏洞。以下几点正确吗?
- 如果我制作了一个 Rails 应用程序,并在命令行上键入
rails server
,我将获得一个本地服务器,我可以向其发出请求。如果我打开浏览器,键入localhost:3000
,然后按回车键,我将向本地服务器发出 HTTP 请求。 - Rails 默认使用名为 WEBrick 的 Web 服务器,尽管还有其他服务器,如 Thin、Puma 和 Unicorn。这些都是软件,之所以成为 Web 服务器,是因为该软件实现了处理 HTTP 请求的功能。
- 当我 运行 本地网络服务器时,这意味着我的计算机正在 运行 正在侦听 HTTP 请求的这些软件之一。
上面是什么意思"to run a local web server"?
- 我已经看到了 "run a local web server" 的其他方法示例。其中之一是在项目目录中 运行
npm install -g http-server
,然后导航到localhost:8080
。这也是启动 运行ning 并在端口 8080 上接受 HTTP 请求的软件吗? - 在 Ruby 命令行上,安装机架 gem:
gem install rack
。然后在一个新的 Ruby 文件中我们require 'rack'
,启动一个网络服务器:
Rack::Server.start({ app: MySimpleApp, port: 3000 })
然后我们可以定义一个 web 应用程序 MySimpleApp
是机架兼容的(响应 call
方法的对象):
class MySimpleApp
def self.call
(...)
end
end
所以现在当我们在浏览器中导航到 localhost:3000 时,MySimpleApp 将被执行。 rack 只是 运行 是默认的 WEBrick 服务器吗?上面的命令只是简单地 运行 本地 Web 服务器并定义当 HTTP 请求进入时要做什么(执行 MySimpleApp)?
你的理解很正确。 HTTP 只是一种基于文本的协议,与许多协议一样,它在 TCP/IP.
上运行内置的 WEBrick 服务器并不是用 Ruby 编写的 HTTP 服务器的最佳示例,但出于遗留原因将其包括在内,因为通常 "good enough" 可以帮助您入门。 Pow 要好得多,尽管它是由生产 Rails 的同一家公司生产的,但它主要是用 Node 编写的。
与许多基于 Internet 的协议一样,HTTP 的优点在于,只要您符合标准,使用什么语言并不重要。
Rack 是一个在 HTTP 之后运行的层,并在 request/response 周期上提供一个薄的抽象层。
服务器是为某种数据传输打开端口(80、443、8080)的东西。端口 80 是 HTTP 端口,端口 443 是 HTTPS 端口。 8080 是开发常用的端口(3000 也是)。 https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
根据定义,本地服务器是您计算机上的服务器 运行。
总的来说,你绝对是在正确的轨道上。