如何在部署中管理库

时间:2014-07-09 13:40:50

标签: python ruby linux deployment

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

  1. 我无法手动安装。一切都必须通过RPM。
  2. 我无法使用pip installgem install来安装我想要的库,因为系统是通过Puppet管理的,我添加的所有内容都将被删除。
  3. yum包含旧包。我通常找不到最新版本的库。
  4. 我想将我的库本地放在脚本附近的lib目录中,并创建一个包含那些冻结版依赖项的RPM。我找不到一种简单的方法来为我的脚本捆绑我的库并将所有内容都推送到我的生产服务器中。我想知道在Python和Ruby中收集依赖项的最简单方法。

    我试过了:

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

    我不知道哪条路是正确的。对于红宝石,有没有办法解决我bundler的问题?我看到捆绑器是用于rails的。它适用于自定义小脚本吗?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

也许看看Docker?

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

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