草庐IT

python - Python web项目: development,打包、部署剖析

我是Python的新手(来自Java+Ant),想知道是否有人可以详细说明如何最好地使用Fabric+Pip+Virtualenv来设置Python网络应用程序包框架。最终目标是能够使用单个命令执行以下任何操作:在全新的开发箱上设置开发环境(安装所有依赖)运行所有测试打包并部署到暂存区将暂存部署到生产环境其他典型的开发流程任务:迁移架构等。我正在使用Debian+git+Tornado,但如果可能的话,我想保持这个OS/SCM/框架不可知。我已经做了一些搜索,但我还没有找到从上到下涵盖这一点的确定性内容。我会发现这非常有帮助,我想还有其他一些前Java/PHP/其他人也会这样做。谢谢!

python - 用于织物的独立 fabfile?

是否可以使fabfile独立?我不太喜欢运行外部工具“fab”。如果我设法获得独立的fabfile,我可以从(Eclipse/Pydev)IDE中运行该文件,轻松调试它,使用项目配置和路径等。为什么这不起作用:fromfabric.apiimportrundefhost_type():run('uname-s')if__name__=='__main__':host_type() 最佳答案 我最终找到了解决方案(而且真的很简单!)。在我的fabfile中,我添加了:fromfabric.mainimportmainif__name_

python - 使用 Python 的 Fabric 库对 "execute"进行嵌套调用

Python的Fabric提供了使用execute函数调用fab实用程序之外的结构函数的能力。当在使用execute调用的另一个函数中调用execute函数时,会出现上下文问题。当调用内部执行时,Fabric会丢失外部执行的上下文,并且永远不会恢复它。例如:env.roledefs={'webservers':['web1','web2'],'load_balancer':['lb1']}@roles('webserver')defdeploy_code():#shipovertar.gzofcodetounpack....execute(remove_webserver_from_l

python - 带有命令行参数的 Fabfiles

是否有一种简洁的方法让您的fabfile接受命令行参数?我正在为我希望能够通过命令行指定可选目标目录的工具编写安装脚本。我写了一些代码来测试如果我传入一些命令行参数会发生什么:#fabfile.pyimportsysdefinstall():_get_options()def_get_options():printrepr(sys.argv[1:])几次运行:$fabinstall['install']Done.$fabinstall--electric-boogalooUsage:fab[options][:arg1,arg2=val2,host=foo,hosts='h1;h2',

python - 出于测试目的模拟 SSH 服务器

我必须为通过SSH上传文件的部署脚本编写测试,但我希望它不依赖于外部服务器配置。这是我的看法:在环回接口(interface)的不同端口上创建2个无需身份验证的SSH守护进程。在这两个端口上运行部署脚本唯一的问题是如何运行这些虚拟SSH守护进程。我使用Python和Fabric。 最佳答案 如果您想完全控制服务器的操作(例如,为了模拟各种问题条件,从而进行真正彻底的测试),我建议twisted:如本文所示,它使设置您自己的自定义SSH服务器变得非常容易。如果您更愿意使用现有的ssh服务器,请从列表中选择一个here(或者使用系统附带

python - Django 和 Deployment 中的私有(private)设置

我正在使用Django并使用Ansible部署我的堆栈。最后,我使用Fabric部署我的Django项目,从GitHub拉取我的代码。我的问题:处理Django的settings.py文件中的私有(private)设置(例如电子邮件或S3的密码)的最佳做法是什么?目前,在重新启动应用程序服务器之前,我在部署脚本的末尾将settings_production.py从我的机器文件传输到生产机器。此文件包含我没有作为repo的一部分放入settings.py的设置。在我的settings.py的末尾,我添加了类似的内容try:fromsettings_productionimport*exc

python - 为 EC2 配置结构

我正在尝试创建一个fabfile.py,以便我可以在EC2上进行部署。我的fabfile.py中有以下内容:from__future__importwith_statementfromfabric.apiimport*defec2():env.hosts=['111.111.111.111']env.user='ubuntu'env.key_filename='/path/to/my/pem/key.pem'defrun_ls():run('ls-alt')'111.111.111.111'是我实例的弹性ip,我总是使用ubuntu登录,而不是root。当我运行以下命令时fabec2r

python - 无法使 Fabric 的分离屏幕 session 示例正常工作

我正在尝试使用分离的屏幕session在远程主机上执行脚本。我试用了exampleFabricgives不幸的是无法让它工作。fromfabric.apiimportrundefyes():run('screen-d-m"yes"')在我的本地机器上执行fabyes将它正确地连接到远程主机并表明命令已经运行,但是在远程主机上没有执行任何操作。在任何一台机器上尝试screen-d-m"yes"都可以正常工作。如果有人能指出我做错了什么,我将不胜感激。另外,附带说明一下,为什么命令中的yes周围有引号?没有引号它会工作吗?谢谢! 最佳答案

python - 如何使用 Fabric 传递 SSH 选项?

我们正在努力改进一些服务器进程的自动化;我们使用织物。我预计必须管理多个主机,这意味着必须对以前未通过SSH连接的服务器建立SSH连接。如果发生这种情况,SSH总是会要求验证连接,这会破坏自动化。我已经解决了这个问题,在同一过程中,在我用来与rsync同步代码的SSH命令上使用-ostricthostkeychecking=no选项,但我还需要在与Fabric的通话中使用它。有没有办法将特定于ssh的选项传递给Fabric,尤其是我上面提到的那个? 最佳答案 简短的回答是:对于新主机,不需要任何东西。env.reject_unkno

python - 我可以使用 Fabric 执行交互式 shell 命令吗?

我正在尝试使用fabric安装和部署一个web项目,在此期间我需要创建一个postgresql数据库并配置一个RabbitMQ服务器。这两个操作都是交互式的,需要用户输入以创建数据库、添加用户、设置密码等(至少据我所知)。我可以使用结构脚本来执行这些交互式shell操作吗? 最佳答案 这是在Fabric1.0中。我试过了,它对我有用。OlderversionsofFabric(andsimilarhighlevelSSHlibraries)runremoteprogramsinlimbo,unabletobetouchedfromt