Articles of 部署

Amazon Elastic Beanstalk环境中的共享文件文件夹

我正在开发一个Drupal应用程序,计划在Amazon Elastic Beanstalk环境中进行托pipe。 基本上,Elastic Beanstalk通过启动基于预定义规则的其他Web服务器实例来自动扩展应用程序。 共享数据库正在Amazon RDS实例上运行,所有实例都可以正确访问。 问题是共享文件文件夹(网站/默认/文件)。 我们使用git作为SCM,通过执行$ git aws.push ,我们可以部署新版本。 在后台Elastic Beanstalk自动删除( $ rm -rf )环境中运行的所有服务器的当前代码库,并部署新版本。 计划是在分段环境中使用S3(s3fs)作为共享文件,在生产环境中使用NFS。 我们已经成功设置了环境,以便在重新启动后正确安装共享文件文件夹。 但… 问题在于,在这种设置中,在运行实例上部署新版本失败,因为$ rm -rf无法删除挂载的目录,结果整个环境停止运行,我们需要重新启动环境,真的是一个优雅的解决scheme 问题1是在这种部署中pipe理共享文件的正确方法是什么? 你正在运行这样的环境? 你是怎么解决这个问题的? 通过查看Elastic Beanstalk Hostmanager代码(Ruby),似乎有一种方法可以将我们的function(如果在预部署中挂载并在后部署中挂载)挂接到Hostmanager(/ opt / hostmanager / srv / lib / elasticbeanstalk / hostmanager /应用程序/ phpapplication.rb),但文件中定义的脚本(即/tmp/php_post_deploy_app.sh)似乎没有工作。 这可能是因为我们的Ruby技能是不存在的。 问题2是你设法以便携的方式(例如不更改核心Hostmanager文件)在Hostmanager中挂载你的function吗?

使用RPM部署Python应用程序的首选方法是什么?

我是开发者的新手,我一直在努力将一个Python应用程序打包成一个RPM(使用python setup.py bdist_rpm),通过Yum部署到一个centos VM上。 厨师是用来pipe理虚拟机。 Python应用程序将在virtualenv中运行,作为持续部署过程的一部分。 如果RPM是智能且独立的,那么执行诸如创build/启动virtualenv环境,pip-安装所需的依赖关系,然后最终configuration一个init进程(在这种情况下启动virtualenv的uwsgi REST服务器进程)? 或者,如果Chef食谱pipe理构buildvirtualenv和pip安装依赖项,RPM自己做一个简单的“python setup.py install”来将我的Python模块加载到virtualenv的pythonX.Y / site-packages文件夹中? “yum install / reinstall”调用(通过自动化进程)的后续操作可以适用于这两种方法,但前者需要更复杂的RPM,这可能不是“最佳实践”,是正确的吗? 前者确实允许一个独立的安装,以后可以更干净地删除,并更好地分离开发人员(Python)和dev-ops(厨师)之间的关注。 请告知什么是“典型”完成。

AWS Elastic Beanstalk Swap Environment Url是否将环境交换为git push?

我已经阅读了关于aws的零停机时间的文档,但似乎无法理解在这种情况下会发生什么? 我有一个在生产环境中运行的“红色” 我将环境复制为“蓝色” 我在我的应用程序中使用eb init来推送到称为蓝色的新环境。 我的新版本成功运行在蓝色环境中 我交换环境url(我没有这样做,害怕,我猜) 一段时间后,我的stream量被指示为蓝色,红色将显示零stream量监控。 现在的问题是, 如果我从命令行使用git aws.push ,它会推到红色还是蓝色? 如果推到红色,我有一个零宕机的过程。 如果它变成蓝色,这是否意味着我必须再次启动init? 如果我必须再次启动它意味着 破坏红色(旧)环境 将蓝色复制为红色 eb init再次用于红色环境 这似乎并不正确。 我可能会错过一些东西。 什么是正确的方法来做ebs零宕机? 我读了很多,但似乎不能得到这些观点。 谢谢!

防止Gunicorn在非活动期之后缓慢加载?

我的Django项目运行在gunicorn上 。 有时加载一个页面(和oracle程序调用相关)需要很多时间。 服务器在几分钟内保持非活动状态时,会发生90/100。 我怎样才能解决这个问题? wsgi.py import os import site import sys from whitenoise.django import DjangoWhiteNoise # Add the site-packages of the chosen virtualenv to work with site.addsitedir('/new_esmart/esmart_env/lib/python2.7/site-packages') # Add the app's directory to the PYTHONPATH sys.path.append('/new_esmart/esmart2') sys.path.append('/new_esmart/esmart2/esmart2') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "esmart2.settings") # Activate your virtual env activate_env = os.path.expanduser("/new_esmart/esmart_env/bin/activate_this.py") execfile(activate_env, dict(__file__=activate_env)) from django.core.wsgi import get_wsgi_application application […]

成像mac完全远程键盘免费?

如何通过networking远程镜像一台Mac而无需访问本机(无键盘)? 更新:selectnetworking启动盘后,我们可能会遇到重启过程中的问题,请参阅下面的编辑。 我们正在学习mac映像来pipe理一小部分mac构build机器(8 mac minis)。 这些机器被放在我们无法进入的房间里。 我们对这些机器拥有完整的pipe理权限,但是我们还没有制定出符合我们需求的成像stream程。 目标: 使用标准图像分发构build池环境更改 更改包括更新的iOS证书,configuration文件,XCode版本以及其他难以自动更改。 可以保存图像以捕获确切的环境,使旧版本可重复使用,例如,在生成新版本的同时,为实时版本提供修补程序。 对于图像自动化,我们希望成为: 能够从模板机器捕获图像,并将其存储在其他地方,如另一台Mac或networking上 能够将该映像远程应用到池中的其他计算机 能够应用没有本地访问的图像,尤其是没有按住组合键。 我们目前: 正在使用NetBoot和DeployStudio进行映像 专用一台机器全职成为“图像服务器” 捕获机器图像没有问题 可以使用NetBoot启动,但必须按住组合键才能使其工作 networking启动后似乎很好 编辑:本地networking引导可靠地持有Command-N。 select启动磁盘并重新启动不一致。 我们发现似乎十分之一左右的工作。 在成功的情况下,机器重新启动,显示苹果标志,PXE在networking上启动,图像加载并在整个过程中继续。 在故障情况下,屏幕保持黑屏,机器稍后重启。 这是令人费解的,但这可能表明我们有一个不同的问题需要解决。 感觉就像我们非常接近一个解决scheme,但是我们无法解决关键问题,这确实会导致我们的工作stream程出现问题。 有没有一种成像方法能够以这种方式与完全远程机器一起工作?

两个应用程序池或一个站点下的根虚拟目录

这可能听起来像一个非常愚蠢的问题,所以让我先说我想达到什么,然后继续我的问题,我如何设想这样的工作。 我试图实现完全无缝部署我们的Web应用程序到IIS(不中断用户或活动连接)。 我设想这个工作的方式是有两个根虚拟目录共享同一个站点。 根目录虚拟目录我的意思是IIS在内部创build并将其分配到每个站点或Web应用程序的根目录; 除了在这里我想有两个这样的根vdirs(每个绑定到自己的应用程序池,但都引用完全相同的应用程序从不同的文件夹)。 在正常的操作过程中,其中一个vdirs将不起作用。 在进行部署时,我会将新代码放到第二个(非活动)vdir所引用的另一个文件夹中,然后将其标记为活动状态。 我想要完成的是让IIS开始发送所有新的连接(请求同一站点)到新的代码,但保持旧的还活着和活动,直到所有剩余的连接到它死了(一些,如file upload,可能会长期运行)。 一旦所有滞留的连接都死掉,旧的vdir / app池将变为非活动状态,而第二个包含新代码的连接将成为唯一活动状态。 我希望这是有道理的。 如果不是这样,我的另一个尝试就是用一个例子来解释它。 — Web Site ("mysite.com") — Root VDir#1 (IIS Internal, App Pool: AppPool#1, Virtual Path: /, Physical Path: C:\inetpub\MySite.v1084\). ACTIVE — Root VDir#2 (IIS Internal, App Pool: AppPool#2, Virtual Path: /, Physical Path: NONE). INACTIVE 在部署期间,Root VDir#2将变为活动状态,其物理path将变为C:\ inetpub \ MySite.v1085。 这将是默认的vdir IIS将服务于所有新的连接。 […]

部署Openstack,无需互联网访问

我在一个单独的networking上有大约十几台相当健壮的机器。 这个networking不是(不会,不能)连接到互联网。 我想在它们上部署OpenStack,以便它们可以用作一种内部云托pipe解决scheme。 这将是一种“原型环境”,所以虽然我可以容忍周围的事情有点粗糙,但主要目标仍然是使用机器完成工作,而不仅仅是搞乱OpenStack。 以下是我到目前为止的选项: 运行相关存储库的本地镜像,并安装基于脚本的安装解决scheme,如Alamo 3+。 我不完全确定如何找出所有相关的存储库,但我并不期望发现使用反复试验。 使用撬棍build立一个独立的ISO,或使用提供的一个 。 尽pipe我没有完全清楚这些应该没有互联网接入的工作。 使用Alamo 2.0 ISO,它使用较旧的Exeter版本的Openstack。 我确定我错过了其他十几个选项。 如果可能的话,我想远离商业供应商。 在努力,function和面向未来的方面,实现这个目标的最好方法是什么?

与厨师一起部署应用程序

我对chef是新手,并计划在我们的生产环境中实施它。 我们正计划使用chef来维护系统状态/configuration以及应用程序部署。 在应用程序部署期间,部署不应该在群集中的所有主机上并行发生。 相反,部署必须以集合的forms发生,即在10个主机的集群中,首先2个主机必须被停止轮换,并且必须在那里完成发布,然后只有当发布成功完成时,才应该部署下一组主机。 这可以做chef吗?

Appengine卡在“正在更新服务 …”

我在appengine上使用nodejs。 星期二我们有一个非常稳定的应用脚手架,到了星期五,尝试部署后它完全被打破了。 我们对前端代码做了一些小的改动,但是我认为没有什么会阻止实例的旋转。 这里是重现的步骤。 gcloud –project "{appname}" preview app deploy 日志显示npm安装,容器构build等 挂起Updating service [default]… 5分钟 失败,错误。 错误:(gcloud.preview.app.deploy)错误响应:[13]启动虚拟机时超时。 应用程序代码可能是不健康的。 (准备好0/1,仍然在部署1)。 我已经尝试恢复存储库,当我们有稳定的部署,并没有帮助。 这让我觉得GCP上的东西坏了。 我试图删除所有当前版本,然后部署,但无济于事。

知道(一眼)你的Mac客户端是最新的

我们有超过一千个Mac客户端,偶尔会发出影响其中许多或全部(例如安装新软件,创build本地用户帐户或应用更新)的更改。 我想知道你用什么方法知道你的客户是最新的,一目了然 ,因为我们发现,当一些机器错过了更新,它反映在我们身上相当糟糕:) 发布更改:我指的是使用一个系统推出更改,如Casper,Puppet,radmind,Apple远程桌面,甚至是一个黑客一起ssh授权expect脚本。 至于“一目了然”,有两个主要的地方我会看(特别是如果从发布变化的系统的信息不是很明显): 走进电脑室,看着屏幕(甚至从远处看) 通过Apple Remote Desktop扫描实验室并查看四个自定义字段。 我发现简单的改变是改变login屏幕的背景 ,或者改变login窗口上的文本 。 什么可能会更强大将是一种方法来采取标准的桌面背景,并作出注释的副本(也许有一些点或文字,以表示已经发生的变化)。 [有谁知道如何做到这一点,或者我应该问它作为一个单独的问题,无论是在这里或在计算器上?] 另一个简单的改变是设置四个ARD字段中的一个,如下所示: defaults write /Library/Preferences/com.apple.RemoteDesktop Text4 "`date +%Y-%m-%d`" 那么,你怎么知道你的客户是最新的(或者,如果你知道怎么做,你想做什么?)