我有一个关于软件部署的一般性问题。 在工作中,我们devise了一个通过networking浏览器使用的CRM。 我最近被告知,每个特定的客户端都有自己的服务器(尽pipe服务器是我的公司所有,但他们不在他们的办公室)。 这让我有点困扰。 以我的观点来看,当devise一个Web应用程序时,他必须记住,他将能够为所有客户端(不是谈论复制或负载平衡)保持一个“软”的运行,可能有不同的数据库每一个,而是一个应用程序…它特别有助于维护和保持每个人与修补程序和升级最新。 我错了吗 ?? 愿你帮助我更好地理解这个问题的资源(我必须缺乏正确的关键字或自己find他们)。 其实我不明白他们为什么要通过“一个人的一个集中的networking应用程序”和一个“分布式的桌面应用程序”之间的“第三条路线”。 谢谢 !
我有一个简单的Web应用程序部署在EC2的大型实例。 我现在想把最新的代码部署到这个服务器上,但是我想这样做的方式是尽量减less停机时间,并尽可能平稳地为最终用户。 这是我的计划: 开火另一个大实例 安装该实例上的所有软件层 将EBS驱动器还原并附加到实例 在新实例上部署最新的生产就绪代码 运行所有testing(包括应用程序的手动testing) (如果testing通过)在网站上放置“正在维护的网站”通知。 备份实况站点上的EBS实例 从新服务器上分离EBS实例,并replace为最新的备份 使用ec2-associate-address将IP地址移动到新的实例 坐下来等待stream量开始stream经新的实例 终止旧的实例 这似乎是一个好策略吗? 有没有可能涵盖这个主题的教程或书籍? 我已经阅读了George Reese的“Cloud Application Architectures”,这是一本很好的书,但没有涉及部署。 另外,我知道有些工具可以帮助像RightScale或者enStratus这样的工具,当我开始使用多个实例的时候我会使用它。
我有一个开发的git服务器,部署到一个活的服务器,当分支被推送到。 每个用户都有自己的login,因此实时部署的post-receive hook是在自己的用户下运行的。 因为我不想把用户公钥作为远程活动服务器上的授权密钥来维护,所以我组成了一组'属于git系统的密钥,以便添加到远程活动服务器中(在post-receive hook我正在使用$GIT_SSH设置私钥与-i选项)。 我的问题是,因为所有的用户可能想要部署到现场,git系统的私钥至less必须是可读的,SSH真的不喜欢这个。 这是一个错误的例子: XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0640 for 'id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: id_rsa 我环顾四周期待find一些迫使ssh只能通过连接的方式,但除了一些用户之外,我什么也没有发现,只是一味的说,你不应该允许访问任何东西。
我们部门正在更换3岁以上的电脑。 然而,尽pipe个人电脑的年龄,他们都是类似的spec'd,所以一个3岁的个人电脑仍然是一个1岁的个人电脑类似的规格。 因此,部门中的一半人将获得带有双显示器的新型高端个人电脑,另一半将继续使用单显示器旧电脑。 我不相信只取代一半部门是有道理的。 我很想听到其他IT经理和采购人员在这个问题上。 我没有道理的理由是: 而较新的一半设备不旧 ,与旧设备相同或相似。 有些人在那里取代没有缺陷的PC。 它在办公室里造成嫉妒。 如果你的同事有双重显示器,而你没有,你觉得怎么样? 任何遇到过类似问题的人的意见? 我意识到这是主观的,但我找不到太多的答案。
我们遇到了一个IIS 7.5的问题,我们有一个简单的部署系统,它由以下部分组成: 创build一个新的webroot的zip文件,由三个文件夹组成: Api Site Manager 这是解压缩到一个新的文件夹(假设我们称之为“SITE_REV1”),并包含一个脚本调用以下(每个webroot一个): C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site" 这通常工作,在9/10次。 在某些情况下,webroot似乎正确更新(如果我检查IISpipe理器中的基本设置,path看起来是正确的),但运行的网站实际上是指向旧的位置。 我们设法“修复”的唯一方法是运行IIS重置。 回收有问题的应用程序池是不够的。 有时似乎甚至有必要重新启动,但我不是100%确定这是准确的(我自己并不总是解决问题)。 我使用Powershell和Webpipe理模块重写了脚本,希望appcmd中有一个小故障,但同样的问题发生。 Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site" 有没有人经历过这样的事情? 有谁知道发生了什么事情,我能做些什么来防止这个问题? 进行IIS重置对我们来说并不是一个好的select,因为每次我们尝试在单个站点上部署更改时,都会影响服务器上的所有站点。 编辑:我们已经确定,在IISpipe理器中的站点(而不是应用程序池)的启动/停止解决了错误的物理path,但如果我停止使用appcmd的站点,更改物理path,然后启动它,我仍然遭受同样的问题。 我在空白处
我听说很多关于使用Cobbler与Puppet / Cfengine一起快速部署和configuration。 你能指点我一些教程或分享你如何做的经验吗? 也很想听听用于快速configuration和部署的其他任何系统。 谢谢。
我目前在一个脚本上使用rsync ,将一个PHP应用程序从一个登台部署到一台生产服务器。 这里是如何: rsync -rzai –progress –stats –ignore-times –checksum /tmp/app_export/ [email protected]:/var/www/html/app/ 这正在输出每个被比较的文件(项目中的每个文件)的列表,但是我希望它只输出修改过的文件,所以我可以用–dry-run选项来运行它,以检查每个文件部署仅更新所需的文件。 注:迄今为止我能做的最好的是grep fcst的结果,但我正在寻找一个rsync选项,我敢肯定它在那里,但我无法find它的手册页。 提前致谢!
我们目前正在使用MS Web部署工具将一个活动网站和一些WebServices从一个临时文件夹同步到两个活动服务器。 暂存箱在17000端口上承载任何IP上的站点,而两台现场服务器是负载平衡的,并且每个IP都有不同的IP。 目前,我生成了两个单独的软件包用于部署 – 每个机器一个 – 使用sync操作并指定DestinationBinding参数,如下所示: msdeploy -verb:sync -source:WebServer,computerName=localhost -dest:package="machinename.zip" -setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:". (分成多行,以便阅读!) 我运行这个两次,为两台机器的每一个不同的目标文件名和IP地址。 就部署而言,我只需从每个包到其各自的活动站点进行同步。 我知道,我知道 – 我应该可以通过生成一个参数化包,然后可能使用两个服务器中的每一个的SetParamFile开关 – 相信我,我想,但是这样做的文档是坦率地非 – 存在。 现在我需要为这个站点configuration和部署HTTP 和 HTTPS绑定; 包括也将被使用的SSL证书。 我已经在临时框中为站点添加了一个SSL绑定 – 它使用了一个开发证书(这需要被replace – 或者应该使用现场证书吗?),现在上面的命令行起作用了在http和https条目上replace目标IP。 看来我不能在上面的-setParam的DestinationBinding值中指定多个绑定加上证书信息,所以任何人都知道我将如何去做这件事? 任何帮助不胜感激。
(在这个问题上,我很抱歉,我通常是一个程序员,而不是系统pipe理员,但是我自己做了一些事情的自动化,并且清理了一些其他自动化的东西,但是没有以最漂亮的方式。:-) 我一直在环顾各种各样的工具,将软件部署自动化到cfengine,Puppet和Chef等一堆服务器上。 到目前为止,木偶看起来是最有吸引力的,但我当然还没有承诺任何东西。 这些工具看起来像是可以很好地保持一堆服务器与预先打包的软件的最新状态。 我没有得到的是:如何使用工具(如Puppet)来pipe理我们自己的内部软件的部署? 我觉得我很茫然,因为我看过一千个教程展示了如何让Apache ensure => latest (这非常酷),但是没有什么和我今天的用例相对应,这更像是: 当一个人按下button时, 从版本控制库B中拉出分支A. 运行命令C来编译它 将二进制文件D复制到服务器E1到E10 在每台服务器上运行命令F使所有更改生效 木偶听起来不错,我完全看到声明式,幂等configuration优于一些shell脚本的优点,但我还没有看到任何教程“你想更新你的shell脚本到Puppet(或厨师,或cfengine),所以这就是你应该做”。 有这样的事吗? 其他人是否明白如何把Puppet文档中提供的内容复制到我想要的行为上? 我只是没有得到它? 到目前为止,听起来对于我来说,人类(#1)会手动打包Puppet外部的软件(#2和#3),手动更新Puppetconfiguration,这将触发Puppet更新服务器。 .. 也许? (我在这里有点困惑,因为我敢肯定你可以告诉。) 谢谢!
我注意到有相当多的VOIP电话支持PoE。 虽然这个想法原则上看起来很棒(不用担心任何地方的电源适配器),但您是否发现它对整个企业的部署有效? 我主要关心的是所有的交换机都需要支持PoE:据我所知,在PoE交换机前插入一个非PoE交换机将意味着非PoE下的所有设备都不能通电。 由于PoE交换机比非PoE交换机要昂贵得多,并且随着PoE标准的变化,这看起来可能是一个狡猾的投资。 那么,如果你想让用户把他们的VOIP电话放在路上,那么他们需要记得拿起一个适配器或者注入器,并且弄清楚如何将它们连接在一起。 对于点对点的应用程序,PoE是否更好?比如在一些没有供电的远程地点运行WAP? 或者,在企业层面有效吗?