Deployment 如何设置apt以将其用于web应用程序部署

Deployment 如何设置apt以将其用于web应用程序部署,deployment,repository,apt-get,package-managers,Deployment,Repository,Apt Get,Package Managers,如果我想使用apt软件包将我的web应用部署到不同的linux服务器,我应该采取什么步骤?从PHP/MySQL应用程序开始,我希望能够将其安装为如下所示的软件包: apt-get update apt-get install mywebapp-package 我想我必须在某个地方建立一个存储库并将我的包添加到其中,但是这是如何工作的呢?如何创建包本身?我要做什么才能让任何服务器找到我的存储库?一些谷歌搜索只发现了令人困惑的信息,也许我在寻找错误的流行语。任何帮助都将不胜感激 我建议使用或之类的

如果我想使用apt软件包将我的web应用部署到不同的linux服务器,我应该采取什么步骤?从PHP/MySQL应用程序开始,我希望能够将其安装为如下所示的软件包:

apt-get update
apt-get install mywebapp-package

我想我必须在某个地方建立一个存储库并将我的包添加到其中,但是这是如何工作的呢?如何创建包本身?我要做什么才能让任何服务器找到我的存储库?一些谷歌搜索只发现了令人困惑的信息,也许我在寻找错误的流行语。任何帮助都将不胜感激

我建议使用或之类的东西来部署应用程序,而不是使用apt-get。这些工具用于部署应用程序,并且能够部署到多个服务器。

下面介绍如何创建apt包

这真的很简单。。。在你的应用文件夹中有一个debian子文件夹。。。./debian/install文件包含一个非常简单的文件到最终位置的映射

# debian/install must contain the list of scripts to install 
# as well as the target directory
echo myscript.sh usr/bin > debian/install 
您可以使用makefile创建安装和安装后任务。如果您以前从未使用make编译过c/c++程序。。。基本上是在应用程序文件夹中运行“../configure”,然后“make”或“makeinstall”来编译/解包程序。。。dh_make有一个稍微不同的流程和一些默认值,但它是一个非常类似的工作流。。。下面是来自

基本上默认的“make”任务编译程序编辑。。。并且依赖项会自动从该结构中的文件名中检测出来

对于一个webapp,这里有一个来自OSS项目的makefile,其中包括从Github提取

基本上,如果您在项目中工作,并将所有安装任务放入makefile。。。并让“make”默认任务解包您的应用程序,安装apache/nginx vhost,完成后重新启动/重新加载相关服务器。。。那么apt是一种完全可行的处理方法。。。有很多程序可以在数百个系统上同时管理apt包。。。

Canonical/Ubuntu是这类东西的一个很好的工具。。。我以前在大约20台服务器的平台上使用过它。。。不太清楚设置您自己的上游存储库和签名密钥等细节,以便apt能够完全管理包,但我相信,一旦您的dpkg启动,这将非常简单

Debconf/apt为许多类型的应用程序提供了一个非常好的用例。。。但是,如果它是一个持续部署的应用程序,并且您必须不断进行升级(我的经验法则是,如果您每周或每月升级一次以上)。。。那么,使用连续部署工具可能会更好。。。Capistrano和面料都非常出色(使用过的帽子,带有多阶段延伸…很棒,面料我只听说过很棒的东西)。。。但我仍然不相信数百台Debian服务器的Cap。。。这真的是关于你项目的规模。。。如上所述,10台或20台服务器cap太慢、太笨重,无法真正管理好部署(显然,任何人都可以做任何事情,我对这方面的研究还不够,但Ruby Rake和Capistrano等都比Gnu Make和debconf慢得多,也不可靠,尤其是在野外)


特别是关于通用服务器自动化,我建议您查看和,这两种工具都是非常可行的工具。也没有使用,但是我们所有的管理脚本都是Ruby的,而且Chef’s knife工具以脚本化的方式配置服务器时绝对是非常方便的

John Resig mega legend使用make。。。顺便说一句,这是一个更好的技巧,我已经看到了一段时间,当谈到配置管理。。。简化一切
objects = main.o kbd.o command.o display.o \
               insert.o search.o files.o utils.o

     edit : $(objects)
             cc -o edit $(objects)
     main.o : main.c defs.h
             cc -c main.c
     kbd.o : kbd.c defs.h command.h
             cc -c kbd.c
     command.o : command.c defs.h command.h
             cc -c command.c
     display.o : display.c defs.h buffer.h
             cc -c display.c
     insert.o : insert.c defs.h buffer.h
             cc -c insert.c
     search.o : search.c defs.h buffer.h
             cc -c search.c
     files.o : files.c defs.h buffer.h command.h
             cc -c files.c
     utils.o : utils.c defs.h
             cc -c utils.c
     clean :
             rm edit $(objects)