Articles of 部署

使用Git自动部署

我想知道是否有人有这种情况下更好的策略。 我目前托pipe我自己的远程git回购与web服务器在同一个框。 所有的git回购都在git用户之下。 sudo -uwww-data -gwww-data git –git-dir=/var/www/website/.git –work-tree=/var/www/website pull 我有一个cron作业,每分钟执行一次这个命令。 web文件夹中的git repo被从同一个盒子克隆到git的home dir,而不是通过ssh存储。 所以我的问题:因为git不拥有networking文件,它不能使用git钩子移动站点。 我会假设我不想让git拥有sudo,也不会通过git hook工作,对吗? 有什么东西可以比每分钟更快地部署网站吗? 我不希望这个行动非常昂贵。 有什么样的守护进程可以运行并侦听某种通知? 就像看着一个文件的最后修改时间一样?

轻松部署Python和应用程序在一个捆绑包,对于Linux

我开发在服务器端相当大的python应用程序,所有数据库连接,文件提取,parsing,命令行调用。 因为我在标准的python lib之外使用了许多第三方模块,所以它成为部署的噩梦。 而我失去了他们的踪迹。 特别是不同的Linux操作系统使用不同的版本,所以使用操作系统的软件包pipe理器来安装它们不再是好事。 我想部署他们在包括目前的python版本,我正在使用(大多数操作系统仍然与Python 2.5,6我使用2.7和2.7特定function)。 更重要的是,我必须教导客户如何部署,以便在其他服务器上进行testing。 但他们不是Linux专家。 我必须在一个脚本中或通过复制和粘贴来简化。 有Windows的PortablePython但Linux没有。 而我从来没有使用python包装,因为我通常在服务器上工作,我只主办。 请赐教python的可用打包和部署选项,包括所有已安装的python模块和python本身。

如何处理envvariables的人口

虽然我的理解是,在不同的部署环境中使用环境variables来configuration应用程序是最佳做法,但我不知道pipe理这些环境并在其中填充variables的好方法。 以下是我正在考虑的方法: 在我们用来运行我们的应用程序的Upstart脚本中填充它们。 我们使用Ansible来configuration我们的服务器,它们通过一个静态的新贵脚本来复制,但是这可以用环境variables来模板化。 采用相同的方法,但使用/etc/environment 使用类似envdir东西,并再次使用可以填充文件。 另一个问题是在哪里存储的价值,我想在redis,但我愿意build议。 Ansible有一个“保险库”,我还没有看看哪一个可能是一个select。 这些值是API密钥和数据库URL之类的东西。 我真的只是想知道其他人使用什么方法。 我接受所有的build议。

是否有一个Qt安装pathvariables,我可以在.pro文件中使用?

我想复制一个audio插件到我的目标目录,因为我需要它的部署。 它住在<PATH_TO_QT_INSTALL>\gcc\plugins\audio 我不知道我可以用什么variables来引用我的/ pro文件中的安装path。 我想添加的代码行如下所示: QMAKE_PRE_LINK += cp $$PATH_TO_QT_INSTAL/gcc/plugins/audio/* $$DESTDIR/lib || :; 有一个名为%{CurrentProject:QT_INSTALL_BINS}的环境variables,它使我能够使用$$PATH_TO_QT_INSTAL/gcc/bin ,但是我似乎只能在qt创build器中使用这个gui构build设置,这对我来说并不好因为这些设置居住在.pro.user文件中。 为什么不具有通用的构build设置机制:(…(这只是一个侧面的问题,不需要回答) 我的问题是我怎样才能引用我的专业文件中的QT安装path,是否有一个variables,可以做到这一点,或任何其他方式?

如何在Linux共享的公司环境中部署一个简单的Python应用程序?

我已经写了一个(很明显)优秀的Python(Linux下)工具,我想与我的同事分享。 我们在不同的机器上工作,但拥有相同的共享环境。 另外,我们是用户,所以没有办法轻松安装依赖关系。 现在这里有一个问题:我喜欢python,我的用户不关心。 他们确实可以访问公司范围的python安装(一个简单的),但他们不想关心(呃,这是可以理解的,不是每个人都是程序员)。 问题是:在这样的共享环境中,python解释器是可用的,但是我的应用程序中没有模块,那么与其他用户共享我的工具的最简单方法是什么? 正如你可能想象的,我的用户不想安装任何东西(特别是在用户空间中),configurationpath可能会在接受的边缘。 解决scheme不应该像一个冻结包装一切,这可能是一个矫枉过正的… 对于用户应该是:复制一个特定的tar.gz或去应用程序文件夹(共享),运行应用程序,完成。 所以也许模块应该以某种方式embedded到应用程序中? 或者我应该(在我的共享家中)托pipe库中的模块并设置一些path? 或者,也许一个virtualenv可以帮助,如果用户可以复制整个环境与path? 我希望你看到我的问题:D 谢谢!

部署自包含的本机OCaml应用程序

我需要在Linux中部署一个依赖于几个dynamic库的本地OCaml应用程序。 这个想法是准备包含所有东西的独立软件包(不依赖于OCaml,OPAM等),并可以假设任何现代x84 Linux机器上安装。 在理想的世界中,只会有一个文件被部署和运行。 我能想到的最好的方法是将所有需要的dynamic库( ldd app.native )与应用程序可执行文件一起部署,并通过在调用应用程序之前导出LD_LIBRARY_PATH的bash脚本运行应用程序。 任何想法如何使其更好,是值得欢迎的。 UPDATE 一些技巧: 使用Linux应用程序检查器来validation与不同Linux发行版的兼容性。 构build一个稳定但有点过时的二进制包(比如现在的CentOS 6)来提高libc兼容性。 构build二进制包的脚本示例,并运行可执行文件。

如何build立任务'gem:安装'

我正在部署我的Rails应用程序到一个Linux服务器,我有一些rake任务丢失耙gem:安装和耙数据库 我从创业板运行rails 2.3.4。 为什么是这样? 我该如何解决? 我可以更新吗? 他们从rake -T列表中丢失 rake apache2 # Build Apache 2 module rake clean # Remove compiled files rake clobber # Remove all generated files rake default # Build everything rake doc # Generate all documentation rake doxygen # Generate Doxygen C++ API documentation if … rake doxygen:clobber # Remove generated Doxygen […]

心理错误在Capistrano部署

我有一个工作一段时间的Capistrano部署脚本,但是现在它在部署上抛出这样的错误: /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError) from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:203:in `parse_stream' from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:151:in `parse' from /Users/lifecoder/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/psych.rb:127:in `load' … 在部署过程中还会引发多个警告: ** [out :: test.domain] Warning! PATH is not properly set up, '/home/lifecoder/.rvm/gems/ruby-1.9.3-p448/bin' is not at first place, ** [out :: test.domain] ** [out :: test.domain] usually this is caused […]

在CoreOS主机之间移动docker数据卷容器

对于某些场景,集群文件系统太多了。 这是,如果我正确的话, 数据量容器模式的用例。 但即使是CoreOS也需要不时更新。 如果我仍然希望尽量减less应用程序的停机时间,那么必须将带有应用程序容器的数据卷容器移动到其他主机,而旧主机正在更新。 现有最佳实践吗? 更经常提到的解决scheme是在旧主机上使用docker export并在新主机上docker import docker export 的容器的“备份” 。 但是这将包括将tar文件分发给其他主机。 这可以用船队pipe理吗?

如何做物联网设备的软件部署(基于Linux)?

我正在为客户服务的客户有一批BeagleBones / Raspberry PI在客户地点运作。 这些设备安装在本地networking和防火墙后面。 对于SSH连接有几个选项,但我们仍然在这些设备上的软件部署困难。 目前我们并不依赖容器技术,所以Docker Cloud或者Resin.io不是一种select,但是resin.io看起来很有希望。 我们正在使用AWS IoT进行数据收集。 有关部署的一些要求: 推软件服务器 – >设备 分阶段推出,随着时间推移增加到设备的百分比 回滚软件 设备configuration 没有容器技术 有什么好办法来达到这个目的?