从临时服务器连接到 GitoLite 时出错 - ECONNREFUSED 部署错误

2024-02-27

我在尝试将以前工作的项目部署到开发服务器时遇到了一些麻烦。我没有设置系统,但我确实拥有我需要的所有凭据(我认为)。

在尝试 cap staging 部署之后,我到目前为止,然后它产生了一个错误。请看下面:

triggering load callbacks
  * 2012-11-20 14:52:20 executing `staging'
    triggering start callbacks for `deploy'
  * 2012-11-20 14:52:20 executing `multistage:ensure'
Identity added: /Users/XXX/.ssh/id_rsa (/Users/XXX/.ssh/id_rsa)
  * 2012-11-20 14:52:20 executing `deploy'
  * 2012-11-20 14:52:20 executing `deploy:update'
 ** transaction: start
  * 2012-11-20 14:52:20 executing `deploy:update_code'
    executing locally: "git ls-remote ssh://gitolite@repo1:2011/proto_projectname_rails HEAD"
    command finished in 2864ms
  * executing "git clone -q ssh://gitolite@repo1:2011/proto_projectname_rails /var/www/projectname/releases/20121120145223 && cd /var/www/projectname/releases/20121120145223 && git checkout -q -b deploy 0598169ed07015279bd78efa91f25ed3e5edcad8 && (echo 0598169ed07015279bd78efa91f25ed3e5edcad8 > /var/www/projectname/releases/20121120145223/REVISION)"
    servers: ["repo2"]
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/projectname/releases/20121120145223; true"
    servers: ["repo2"]
 ** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: repo2 (Errno::ECONNREFUSED: Connection refused - connect(2))
connection failed for: repo2 (Errno::ECONNREFUSED: Connection refused - connect(2))

部署.rb

set :stages, %w(staging production)
set :default_stage, "production"
require 'capistrano/ext/multistage'

set :application, "projectname"

set :scm, :git
set :repository,  "ssh://gitolite@repo1:2011/proto_projectname_rails"

老实说,我很困惑为什么以前的工作版本不再起作用。

对于此事,我们非常欢迎任何帮助、建议或指导。

谢谢

顺便说一句,是的,它一直是 2011 年的非标准端口,位于我的 .ssh/config 中

Edit:

此过程涉及 2 台服务器。

在本地和第二台服务器上运行以下命令后,我确实得到了响应。

git ls-remote ssh://gitolite@repo1:2011/proto_projectname_rails

它返回;

0598169ed07015279bd78efa91f25ed3e5edcad8    HEAD
0598169ed07015279bd78efa91f25ed3e5edcad8    refs/heads/master

编辑:在 2 台服务器上运行。回购1和回购2

cap deploy:check

Returns

   triggering load callbacks
 * 2012-11-27 21:02:36 executing `production'
 triggering start callbacks for `deploy:check'
 * 2012-11-27 21:02:36 executing `multistage:ensure'
  Identity added: /Users/x/.ssh/id_rsa (/Users/x/.ssh/id_rsa)
 * 2012-11-27 21:02:36 executing `deploy:check'
 * executing "test -d /var/www/projectname/releases"
   servers: ["repo2"]
   connection failed for: repo2 (Errno::ECONNREFUSED: Connection refused - connect(2))

Solved

事实证明,由于第二台服务器端口号,它被拒绝了。添加

set :port, 1893

赏金仍然向任何能够解释这一点的人开放。

为什么总是可以通过 SSH 连接到服务器,而无需随时编辑我的 ssh/config,并且其他计算机能够使用完全相同的部署和暂存文件进行部署,但在我显式添加端口号之前我不能这样做?


有关此问题的最终答案,请参阅下面的更新 2

好的,首先要测试的是,您是否可以从本地计算机运行git ls-remote ssh://gitolite@XXX:2011-- 它应该返回存储库中的引用列表。如果这不起作用,它可能会给你一个类似的错误(连接被拒绝或类似),然后你可能需要从托管 git 存储库的人那里找出原因。

如果它确实在本地工作,那么您可能需要设置部分或全部这些选项,具体取决于您在部署时希望如何访问 git。我认为除非您的部署服务器/用户可以直接登录存储库,否则需要forward_agent选项。

set :deploy_via, :remote_cache
default_run_options[:pty] = true
ssh_options[:forward_agent] = true

我描述了如何设置它这是另一个堆栈溢出答案 https://stackoverflow.com/questions/13476138/setting-up-private-github-access-with-aws-elastic-beanstalk-and-ruby-container/13476637#13476637.

关于 capistrano 需要记住的关键一点是,大多数命令实际上只是标准 shell 命令,而是使用 ssh 传递到远程服务器,如下所示ssh [email protected] /cdn-cgi/l/email-protection <command>,所以如果你不能让它工作,这将是另一件事要测试。

根据添加到原始问题的信息进行更新:

当您使用 URL 与服务器建立 TCP 连接时,您需要指定协议、主机地址和端口号。许多协议都隐含端口号。例如。ssh://1.2.3.4指定标准端口为 22 的 SSH 协议,因此与ssh://1.2.3.4:22。我猜测您的 git 提供商将不同的端口分配给不同的存储库(可能在同一 IP 地址上)以便路由请求,因此对于每个存储库,您可能有不同的端口号。因为它不是正在使用的 ssh 协议的默认端口,所以必须将其指定为 URL 的一部分(并且似乎您可以在 capistrano 中使用set :port).

对我来说,你拥有多个 git 存储库是没有意义的(repo1 and repo2)对于同一个项目,所以也许我需要了解在什么情况下会发生这种情况,但无论如何,错误的原因是您的服务器无法与给定提供的 URL 的 git 主机建立 TCP 连接。

Update 2好吧,事实证明repo1是一个 git 存储库。它托管在非标准 SSH 端口(2011)因此,每当引用 git 服务器的 ssh URL 时,都需要将其嵌入到 URL 中。

然而,repo2实际上只是运行 Rails 应用程序的应用程序服务器(由与 git 存储库相同的源托管),并且它是also可在非标准 ssh 端口上使用(1893)。为了通过 ssh 连接到该服务器,您需要使用以下命令指定端口ssh -p 1893 ...——既然这就是 capistrano 的连接方式,那么它也会如此。这就是为什么添加set :port, 1893是必须的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从临时服务器连接到 GitoLite 时出错 - ECONNREFUSED 部署错误 的相关文章

  • 使用 tweetstream 守护进程写入数据库

    我正在尝试将与关键字匹配的所有推文写入我的数据库 我在中设置了以下内容tracker rb require rubygems require tweetstream TweetStream Daemon new Bill Gates mon
  • 如何在 Rails 3 项目中包含 SSL 证书

    我开发了一个 Rails 3 项目 它使用thin作为服务器 与 Devise 和 Doorkeeper 一起进行身份验证 我想在我的项目中添加 SSL 证书 我看过一些描述如何在 Rails 3 项目中使用 SSL 证书的帖子 但没有一个
  • Ruby/Rails - 访问“查找”表而不对其进行建模?

    这是针对 Ruby on Rails 3 0 x 项目的 我有一个 查找 表 其中包含来自供应商的数据 当我从其他来源导入数据时 我想检查此表 加入 SKU 以获取额外数据 在我的应用程序中为该表创建模型对我来说似乎不合适 我的应用程序永远
  • 如何在 Rails 模型中获取 request.uri?

    request request 当我在控制器中写这个时 它就会起作用 但是如果我在模型或应用程序控制器中需要这个变量 我该怎么办 模型存在于 Web 请求的上下文之外 您可以在 irb 中实例化它们 可以在延迟作业或脚本等中实例化它们 如果
  • Rails、Facebook API、Koala gem — 获取“喜欢”某个页面的用户的所有个人资料

    使用 Rails3 和 koala gem 如何检索 喜欢 FB 页面的用户的所有个人资料 例如 http facebook com DAKINE 有可能吗 作为最终结果 我需要获取一堆存储在数据库中的用户配置文件 Thanks 在 Fac
  • 如何在 Ruby on Rails 中访问控制器中的隐藏字段

    问题 如何访问隐藏字段值post id从文件view comments comment html erb并用在controllers dashboards controller rb 有 2 个控制器 仪表板和评论 并使用gem act a
  • Rails:统计用户未读通知的数量

    我目前有一个处理用户活动通知系统的活动模型 当发生某些操作 例如创建新文章 时 活动观察者会创建一个新活动 现在我想记录当前用户尚未看到的这些活动通知中有多少 类似于 facebook 上的通知宝石 每次用户单击通知链接时 数字应重置为 0
  • 延迟的作业更新查询正在无限运行

    我在 Rails 应用程序中使用delayed job 和delayed job active record 来执行后台作业 我们正在使用基于队列的delayed job 为了启动延迟 我使用以下命令 RAILS ENV staging s
  • Rails3,从 cron 运行 rake 任务

    我从 cron 运行 rake 任务时遇到问题 我将其包装在 shell 文件中 当我从控制台执行此 shell 文件时 它工作正常 bin sh if ps ef grep v grep grep create all accounts
  • Ruby on Rails(三)隐藏部分视图

    我正在开发 Ruby on Rails 3 Web 应用程序 我有一个名为User有一列名为role 我正在寻找对视图的这些部分具有 错误 角色的用户隐藏视图部分的最佳方法 例如我希望所有用户都能够看到用户index页面 但我只想要具有角色
  • Capistrano + Thin + nginx 不允许用户使用 sudo howto?

    我有一个这样的场景 我想使用 capistrano 部署 ruby on Rails 应用程序 Web 应用程序位于瘦集群上 配置文件存储在 etc thin 下 etc init d thin 中还有一个初始化脚本 因此每当我的服务器需要
  • Ruby on Rails 中的渲染验证错误

    在模型中说Task 我有以下验证 validates presence of subject project user status 如何使用其他控制器呈现这些验证的错误消息 在我使用的 CustomController 内部 Task c
  • 为什么“jQuery-Rails”经常位于资产组之外

    为什么我经常看到gem jquery rails之外的 assets group group assets do gem sass rails gt 3 1 0 gem coffee rails gt 3 1 0 gem uglifier
  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end

随机推荐