首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ruby Sinatra Webservice在localhost:4567上运行,但不在IP上运行

基础概念

Ruby Sinatra 是一个轻量级的 Web 框架,用于快速构建简单的 Web 应用程序和服务。Webservice 是一种通过网络(通常是 HTTP)提供服务的应用程序,允许不同的系统之间进行交互。

相关优势

  1. 轻量级:Sinatra 非常小巧,适合小型项目或作为微服务的基础。
  2. 灵活性:它提供了足够的灵活性来构建复杂的 Web 应用程序。
  3. 易于学习:Sinatra 的 API 简单直观,适合初学者。
  4. 高性能:由于其轻量级设计,Sinatra 能够提供良好的性能。

类型

  • Web 服务器:Sinatra 可以作为独立的 Web 服务器运行。
  • API 服务:可以用来构建 RESTful API。
  • 微服务:适合作为微服务架构的一部分。

应用场景

  • 快速原型开发:适合快速搭建和测试 Web 应用程序的原型。
  • API 开发:构建 RESTful API 服务。
  • 微服务架构:作为微服务的一部分,处理特定的业务逻辑。

问题分析

当你在 localhost:4567 上运行 Ruby Sinatra Webservice 时,它只能在本地访问。这是因为 localhost 指的是本机的 IP 地址(通常是 127.0.0.1),而不是你的实际 IP 地址。

原因

  • 绑定地址:Sinatra 默认只绑定到 localhost,这意味着它只能从本地机器访问。
  • 防火墙设置:可能存在防火墙设置阻止外部访问。

解决方法

要使 Sinatra Webservice 能够通过你的实际 IP 地址访问,你需要修改绑定地址。以下是具体步骤:

  1. 修改绑定地址
  2. 在你的 Sinatra 应用程序中,修改绑定地址为 0.0.0.0,这样它就可以接受来自任何 IP 地址的请求。
  3. 在你的 Sinatra 应用程序中,修改绑定地址为 0.0.0.0,这样它就可以接受来自任何 IP 地址的请求。
  4. 检查防火墙设置
  5. 确保你的防火墙允许外部访问 4567 端口。你可以使用以下命令检查和修改防火墙设置(以 iptables 为例):
  6. 确保你的防火墙允许外部访问 4567 端口。你可以使用以下命令检查和修改防火墙设置(以 iptables 为例):
  7. 重启服务器
  8. 修改代码后,重启 Sinatra 服务器以使更改生效。
  9. 修改代码后,重启 Sinatra 服务器以使更改生效。

示例代码

代码语言:txt
复制
require 'sinatra'

set :server, :webrick
set :bind, '0.0.0.0'

get '/' do
  "Hello, world!"
end

参考链接

通过以上步骤,你应该能够使你的 Ruby Sinatra Webservice 在你的实际 IP 地址上运行,并能够从外部访问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Step by Step!Kubernetes持续部署指南

构建Docker镜像 我们可以在Kubernetes上运行任何东西,只要它打包在Docker镜像中。在这一部分,我们将学习如何构建镜像。...-t test-image 使用Docker运行和暴露内部端口4567以在本地启动服务器: $ docker run -p 4567:4567 test-image 你现在可以测试一个可用的HTTP端点...: $ curl -w "\n" localhost:4567 hello world :)) ?...实际上,部署的最小单元是pod。一个pod就好像一群形影不离的朋友,总是一起去同一个地方。因此要保证在pod中的容器运行在同一个节点上并且有相同的IP。...它们可以同步启动和停止,并且由于它们在同一台机器上运行,因此它们可以共享资源。 pod的问题在于它们可以随时启动和停止,我们没办法确定它们会被分配到的pod IP。

85020
  • Windows 下 Gollum 安装与使用

    那么我们在windows平台下该如何安装gollum呢? 1.搭建环境 GitHub :gollum 我们通过它的介绍,可以知道gollum 是基于Ruby开发的一个软件。...那么,我们需要解决的就是如何在windows 环境下执行ruby软件。 也就是一个ruby的解释器。让我们可以直接运行ruby程序 所以,需要先下载 一个叫做JRuby 的软件。...之后就可以在浏览器中输入:http://localhost:4567/ 打开gollum 进行wiki的编辑了。 如果你觉得上面的启动过程比较麻烦。...4.编辑 通过http://localhost:4567/ 打开后你就可以自己创建wiki页面了。创建完毕后,点击保存就可以了。 创建页面后,save后,会自动执行你的git文件进行操作。...效果如下:在第11行的位置,我主动添加的。

    70130

    Docker_000

    设置该选项,将新构建出的多个层压缩为一个新层,但是将无法在多个镜像之间共享新层;设置该选项,实际上是创建了新image,同时保留原有image。...RUN apt-get update && apt-get install -y ruby ruby-dev RUN gem install sinatra...RUN 命令是在镜像内部执行。就是说他后面的命令应该是针对镜像可以运行的命令。...小规模docker环境大部分运行在单台主机上,如果公司大规模采用docker,那么多个宿主机上的docker如何互联 Docker默认的内部ip为172.17.42.0网段,所以必须要修改其中一台的默认网段以免...地址,这就导致容器每次重启,ip都发生变化 none:无指定网络 启动容器时,可以通过–network=none,docker容器不会分配局域网ip host:主机网络 docker容器的网络会附属在主机上

    73720

    旧安卓机别扔了!自制 Web 服务器了解一下

    现在,我利用它运行一个Puma Web服务器,上面跑着一个简单的Sinatra应用。 在进一步介绍之前,你也许会想:这有什么实际的用途吗?...安装Ruby、Bundler、Sinatra和Puma Sinatra是一个轻量级的Web应用程序框架,而Puma是Web服务器。 Ruby就是Ruby!...在安卓上运行: pkg install ruby gem install sinatra puma 安装nginx nginx是Web服务器、反向代理和负载均衡器。...在安卓上运行: pkg install nginx 接下来需要一点小技巧,才能让nginx与Puma相互配合。...下面是在我的服务器上运行siege的情况,服务器支持3个并发用户(真实世界中应该设置得更大): 截图中数字的意义不大,因为我们的Web应用的响应只不过是时间戳,不超过100个字符,但足够证明,我们的服务器可以处理少量的并发用户了

    3K40

    如何在Ubuntu上安装Ruby和Sinatra

    与日益流行的Ruby on Rails框架不同,在Sinatra上创建的应用程序可以由单个文件组成,这块完全取决于Sinatra gem。...在这篇文章中,我们将学习如何在Ubuntu CVM上安装最新版本的官方Ruby解释器以及Sinatra Web应用程序开发库。之后,我们将创建一个示例项目并继续进行实际部署。...在RVM的帮助下,可以创建任意数量的完全隔离的gemsets,其中依赖项,软件包和默认的Ruby安装可以根据您的需求进行精心设计,并在不同的部署阶段之间进行相应的保证,要下载和安装RVM,请运行以下命令...要使用RVM从源安装Ruby,请运行以下命令: rvm reload rvm install 2.1.0 安装Sinatra 一旦我们有RVM安装Ruby,我们可以使用默认的RubyGems包在我们的系统上设置...运行以下命令以使用gem安装Sinatra: gem install sinatra 创建www用户组和部署用户 在我们完成所有安装之后,是时候进入基础并创建一个Linux组和一个用户来托管Web应用程序

    1.7K40

    部署一个Sinatra应用程序到Heroku

    由于Sinatra是一个Ruby应用程序,所以部署起来并不像要部署一个PHP应用程序那么简单,但它仍然并不是太困难。 Sinatra入门......假设您认为本地的应用程序没有问题了,接下来要做的是确保您有下边这些文件: Gemfile config.ru 我在上面的帖子中描述的Gemfile包含在应用程序中使用的所有Ruby gems的引用: source...Sinatra是一个构建应用程序的工具,但Heroku不是。我们只需要一个文件来表明我们想如何让我们的应用程序运行: 在config.ru里你需要填写以下内容: require '....下面您可以在这里学习怎么生成SSH密钥 当您在命令行环境下,您需要将您的密钥添加到Heroku,以便于在您的电脑和Heroku的计算机之间安全地进行通信: heroku keys:add 系统会要求您添加您创建...创建Heroku应用程序 回到命令行上: heroku create nameofapp nameofapp是你想要给应用程序起的名字,要牢记形似下边这样的Heroku创建的应用程序对应的网址:nameofapp.herokuapp.com

    5.1K110

    部署一个Sinatra应用程序到Heroku

    由于Sinatra是一个Ruby应用程序,所以部署起来并不像一个PHP应用程序那么简单,但它仍然不难。 Sinatra入门... 如果你刚刚开始入门Sinatra,你可能会觉得这个帖子有用。...假设您对本地应用程序感到满意,接下来要做的是确保您有一些文件: Gemfile config.ru 我在上面的帖子中描述的Gemfile包含对应用程序中使用的所有Ruby gems的引用: gem 'sinatra...Sinatra是一个Rack应用程序,但Heroku与这些没有任何障碍。我们只需要一个文件来解释我们如何让我们的应用程序运行: 在config.ru你需要以下内容: require '....创建Heroku应用程序 回到命令行上: heroku create nameofapp nameofapp的位置是根据你想要你的应用程序取什么名决定的,铭记Heroku将用这样的网址创建你的应用程序...然后,假设你已经提交了最新的更新,你可以这样做: git push heroku master 你会看到Heroku收到推送,压缩文件,安装所需的Ruby gems,运气好的话,你将可以部署你的应用程序

    2.7K60

    在Heroku中部署一个Sinatra应用程序

    由于Sinatra是一个Ruby应用,所以部署起来并不像一个PHP应用程序那么简单,但它也不算难。 Sinatra入门 如果你刚刚开始接触Sinatra,这个帖子或许会帮到你。...首先你需要在Heroku上有一个账户(注册是免费的) 如果你对你的程序在本地环境的运行情况感到满意(即你已经完成了应用程序的开发,并且其在本地运行没有问题),接下来要做的是确保你有以下文件: Gemfile...config.ru 其中Gemfile包含对应用程序中使用的所有Ruby gem的引用: gem 'sinatra' gem 'rdiscount' gem 'data_mapper' gem 'dm-migrations...我们只是需要一个文件来配置我们应用程序的运行方式: 在config.ru中你需要以下代码: require '....创建Heroku应用程序 回到命令行上输入以下指令: heroku create nameofapp 在此我们用nameofapp来指代你应用的名字,那么Heroku会为你的应用将创建这样的网址:nameofapp.herokuapp.com

    2.6K60

    基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境

    由于历史原因,本身就由Ruby撰写的HomeBrew在Mac os系统上大行其道,所以大部分Rails程序员的主力电脑都是Mac book pro,而使用Windows系统的用户就没那么好运了,比如Rails...starefossen/ruby-node     拉取镜像成功后,启动容器并且进入命令行,记住用挂载命令把当前目录共享到Docker容器内部,不会设置共享文件夹的同学可以参照这篇文章:上穷碧落下凡尘...下一步,为了能在宿主机运行我们的Rails服务,需要一个Dockerfile文件来定制我们自己的镜像 FROM starefossen/ruby-node # 设置项目目录 WORKDIR /usr/...我想说的是,时至今年,全球依然有超过一亿的网站和后台服务由Rails驱动,其中不乏国际知名企业,如:Airbnb、Basecamp、Github等,尽管Php和Python的使用范围比Ruby更广,但其最受欢迎的两个框架...我们可以看看在github上的开源代码贡献者的数量对比:     GitHub contributors to Ruby frameworks:     Rails: 4260     Padrino

    1.5K20

    DevSecOps 管道: 使用Jenkins自动化CICD管道以实现安全的多语言应用程序

    在环境阶段提及您的凭据。 环境 注意:通过在本地使用 docker run 命令,您可以验证 Docker 映像是否已启动并正在运行。...验证 Aqua Trivy 是否已安装在您的本地系统上。如果您的系统上尚未安装 trivy,请从 docker 获取它并运行 trivy 映像。...Kubernetes 部署 在环境阶段,提供您的 kube 配置凭据并添加部署.yaml 文件的名称来代替配置文件。 环境 在成功创建部署后,应用程序现在将在您的 Pod 上运行。...您可以通过使用服务名称运行 (kubectl get svc) 进行测试。如果您使用负载均衡器,您将收到外部 IP 并能够通过它访问您的应用程序。...如果您使用 minikube 运行(minikube 服务 MY-SERVICE-NAME),您将收到您的 IP 和端口号,并能够通过它访问您的应用程序。

    76120

    使用 Python SimpleHTTPServer 快速共享文件

    使用QQ传了几个照片,但视频实在是太慢了。便想用HTTP。    ...我启动了 Mac 上的 Web sharing(它会启动 Apache),将需要的文件放到 ~/Sites 目录下,在浏览器中打开 http://localhost/~seven/ 能正常看到内容。...上 ip138.com 找到我的我网 IP,在路由器上打开端口转发,NAT到我的机器上,测试使用外网IP也正常。把链接发过去,结果对方打不开。...但换 Apache 的端口需要改配置文件,当然,这也算不上麻烦,但我想找个更简单的方案。    打开一个 Sinatra 工程, 将内容copy到 public/ 目录里。...但 Sinatra 默认不支持文件列表。    后来Google 一下,找到一个 SimpleHTTPServer, 它是一个 Python 模块,在我的系统上是自带的。

    1.6K00

    web框架在什么程度上受限 ?

    如果选择更基本的框架,启动并运行所有功能所需的时间会更长,但可以使用完全的自由。...框架不是限制因素,它基本上是一种工具,可以简化应用程序某些部分的开发。例如,Django 和 rails 抽象了一些数据库功能,因此只需要担心模型对象。但这并不意味着自己也无法做任何事情。...RESTful 路由非常简单,但如果 REST 的特定 Rails 风格不满足需求,则路由是完全可配置的。在 Rails 应用程序中,可以使用默认设置的任意多或任意少,并且可以在所有级别进行重新配置。...答案6:如果不在 Rails 中使用表示层,就会错过很大一部分。...不确定此语句是什么意思…在某些时候必须将一些东西放入数据库,对吧?在大多数非平凡的应用程序中,很少有一个模型绑定到请求的末尾… 实际上可能有一个非常复杂的模型网络返回或更新。

    5110

    使用容器构建微服务体系结构

    由于容器可跨不同类型的基础架构移植,它们可以像在裸机服务器上一样容易地在AWS中运行,容器使代码的部署非常方便。...由于所有应用程序代码都在服务器上的相同进程中运行,因此很难(如果不是不可能)缩放应用程序的各个部分。...执行资源基本的 CRUD 操作的服务可能最好用 Ruby 实现。微服务架构不需要单片架构的 “一刀切” 模型, 但是微服务也有一些缺点。由于服务分布在多个主机上,因此难以跟踪哪些主机运行某些服务。...例如,下方的 DockerFile 可以定义一个使用 Ruby 和 Sinatra 框架的微服务 Docker 镜像: FROM ubuntu:14.04 MAINTAINER John Doe 上的所有资源,则可以在该实例的容器中启动其他服务,这些服务将使用空闲资源。

    1.5K51

    【webservice】Java JAX-WS和JAX-RS webservice「建议收藏」

    WSDL、SOAP和UDDI一起工作,支持webservice和Internet上的其它服务、应用程序和设备交互作用。...JAX-RS具有创建API的优势,这些API可以更简单的在不同的浏览器和移动设备上创建和消化消息,即JSON结构。它没有引入信封的概念,并使用HTTP。它不引入加密或安全性,它使用HTTPS。...JAX-WS虽然在HTTPS上运行,但是使用WS-SecurityPolicy等为安全性提供了额外的补充。...然而,使用RESTFul服务API类似于像Ruby和Python这样的元编程,这会延迟运行时间的问题,因为双方没有达成一致的定义模式和技术上的强制执行。...SOAP提升: 1.目前WebService的协议主要有SOAP1.1和1.2。 2.两者的命名空间不同。 3.SOAP1.1版本与SOAP1.2版本在头信息上存在差异。

    3.6K20
    领券