首页
学习
活动
专区
工具
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

83720
  • 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行的位置,我主动添加的。

    61530

    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容器的网络会附属主机上

    73420

    旧安卓机别扔了!自制 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个字符,足够证明,我们的服务器可以处理少量的并发用户了

    2.9K40

    如何在Ubuntu安装RubySinatra

    与日益流行的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.6K40

    部署一个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

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

    由于历史原因,本身就由Ruby撰写的HomeBrewMac 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 和端口号,并能够通过它访问您的应用程序。

    66820

    使用 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

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

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

    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.3K20

    当微服务遇上Docker系列之构建、实践与颠覆

    [图1]集中式LB方案 集中式LB方案实现简单,LB也容易做集中式的访问控制,这一方案目前还是业界主流。...举个例子,下面代码中的DockerFile可以用来定义一个微服务的Docker镜像,它使用了RubySinatra框架: FROM ubuntu:14.04 MAINTAINER John Doe <...如何使用容器技术来建立一个微服务架构,回复2,查看完整PDF文档 Docker运行微服务 Container是基于内核的空间。...网络的空间,它隔离了和网络相关的资源,如服务器的网卡、IP地址、服务表等,之后这个进程某个网络的空间内运行就看不到其他空间相关的网络资源。 文件系统,这个名字空间把这类资源也进行了隔离。...关于Docker运行微服务请回复4,查看完整PDF文档 再谈Docker-微服务的场景化应用 Docker出现之前,虽然我们谈论微服务架构,但是其实是很难实现的。

    1.3K50
    领券