【问题标题】:How to manage libraries in deployment如何在部署中管理库
【发布时间】:2014-07-09 13:40:49
【问题描述】:

我在 Mac OS X 上运行 Vagrant。我正在使用 CentOS 6 在虚拟机中进行编码,并且在我的开发和生产环境中使用相同版本的 Python 和 Ruby。我有这些限制:

  1. 我无法手动安装。一切都必须通过 RPM。
  2. 我无法使用pip installgem install 安装我想要的库,因为系统是通过Puppet 管理的,我添加的所有内容都将被删除。
  3. yum 有旧包。我通常找不到最新版本的库。

我想将我的库本地放在我的脚本附近的 lib 目录中,并创建一个包含那些冻结版本的依赖项的 RPM。我找不到一种简单的方法来为我的脚本捆绑我的库并将所有内容推送到我的生产服务器中。我想知道在 Python 和 Ruby 中收集我的依赖项的最简单方法。

我试过了:

  • virtualenv(带有--relocatable 选项)
  • PYTHONPATH
  • sys.path.append("lib path")

我不知道哪条路是正确的。同样对于 ruby​​,有什么方法可以解决我的 bundler 问题吗?我看到捆绑器是用于导轨的。它适用于自定义小脚本吗?

我喜欢Node.JSNPM 中的方法;所有包都本地存储在node_modules。我安装了 nodejs rpm,并在生产服务器上部署了一个包含我的应用程序的文件夹。我想在 Ruby 和 Python 中这样做。

【问题讨论】:

    标签: python ruby linux deployment


    【解决方案1】:

    我不知道 Node,但你对 NPM 的描述似乎正是 virtualenv 是什么。一旦 virtualenv 被激活,pip 只会安装在该 virtualenv 中——所以 puppet 不会干扰。您可以使用pip freeze 将您当前的包列表写入 requirements.txt 文件,然后使用pip install -r requirements.txt 重新创建整个内容。理想情况下,您将使用 puppet 进行部署,部署步骤将涉及创建或更新 virtualenv、激活它,然后运行该 pip 命令。

    【讨论】:

      【解决方案2】:

      也许看看 Docker?

      使用 Docker,您可以创建特定环境的映像并进行部署。

      https://www.docker.com/whatisdocker/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-03
        相关资源
        最近更新 更多