【问题标题】:git clone problemgit克隆问题
【发布时间】:2011-03-08 00:57:18
【问题描述】:

我已经在本地机器上创建了项目的克隆

git clone git@github.com:test/abc.git

现在我想在我的 ubuntu 服务器上部署我的项目。

所以我创建了一个在我的 ubuntu 服务器上安装 git 的脚本。 现在我想在服务器上部署我的 rails 项目。 像 git clone git@github.com:test/abc.git 但我没有在我的服务器上设置 ssh 密钥。 有什么方法可以创建克隆而不在我的服务器上设置 ssh 密钥。

是不是我们必须强制在每台服务器上进行 ssh 连接?

如果我有 20 台服务器怎么办?我需要为要克隆的每台服务器设置 ssh 密钥吗?

有没有什么方法可以只询问密码而不是创建一个克隆?

或者其他方式?

【问题讨论】:

  • 为什么需要克隆来部署?为什么不直接为您的 20 台服务器创建一个适当的版本和 (s)ftp 的 tarball?

标签: ruby-on-rails ruby git github


【解决方案1】:

您可以使用只读版本。在存储库名称旁边,您可以选择 http 协议。此 url 可以在没有 ssh 密钥的情况下使用。如果是私有存储库,则需要将用户名添加到 url。

$ git clone http://myname@github.com:test/abc.git
Initialized empty Git repository in /Users/myname/Projects/abc/.git/
password: 

然后你输入你的密码,稍后你就有了你的克隆。一个缺点是如果你使用私人仓库,你需要输入密码。

虽然我没有看到添加几个 ssh-keys 的问题。如果您确实需要部署到 20 台服务器,您可能会考虑使用具有良好操作系统支持的打包方法来自动更新。

【讨论】:

    【解决方案2】:

    尝试使用配置管理工具来部署安装是错误的。你真的打算更新这 20 个系统的代码吗?那你为什么要授予他们对代码的写权限呢?

    创建一个 tarball 或使用您正在开发的语言中可用的任何包管理系统(例如,在 Perl 中,您可以使用 Dist::ZillaModule::InstallExtUtils::MakeMaker)。

    【讨论】:

      【解决方案3】:

      我们创建了一个 php 脚本,它构建了 RPM(并且 Using Alien 还构建了 DEB)来更新我们的 200 多台机器。像“http://repo/fetch/rpm/”这样的 url 被称为脚本,检查是否在 package_name 存储库中插入了新的 git 标签,如果是,则使用我们在每个 repo 基础上创建的 RPM 模板(通常放在 .build/rpm.spec ) 构建 RPM,将其保存到本地缓存目录并作为文件头读取内容。

      我意识到,由于您使用的是 GitHub,因此您的应用程序将无法运行 - 但对于拥有自己的远程存储库的人来说,这只是一个想法。盒子上的 cron 将每天查询一次这些 URL 并在输出上运行 rpm -Uvh。

      对于您的实例,最好对每个版本进行 tar 压缩,然后将其放在公共可访问的 URL 中,或者创建一个脚本以将其 rsync 到每个服务器 + exec

      【讨论】:

        【解决方案4】:

        如果您正在部署 Rails 项目,您应该查看 Capistrano - http://www.capify.org/index.php/Getting_Started

        【讨论】:

          猜你喜欢
          • 2013-10-03
          • 1970-01-01
          • 2021-06-03
          • 2010-11-20
          • 2022-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多