【问题标题】:How to set up apt to use it for web app deployment如何设置 apt 以将其用于 Web 应用程序部署
【发布时间】:2013-04-03 07:43:20
【问题描述】:

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

apt-get update
apt-get install mywebapp-package

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

【问题讨论】:

    标签: deployment repository apt-get package-managers


    【解决方案1】:

    以下是创建 apt-package 的方法 https://askubuntu.com/questions/27715/create-a-deb-package-from-scripts-or-binaries

    这真的很简单......在您的应用文件夹中有一个 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”或“make install”来编译/解包程序...... dh_make 有一个过程和一些默认值略有不同,但它是一个非常相似的工作流程......以下是来自GNU Make Reference的一个非常简单的makefile

    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)
    

    基本上默认的“make”任务编译程序编辑......并且从这个结构中的文件名中自动检测依赖关系

    对于 web 应用,这是来自 OSS 项目的 makefile,其中包括从 Github 中提取 http://build.shr-project.org/Makefile

    基本上,如果您从事该项目并将所有安装任务放入一个 makefile ... 并让“make”默认任务解压缩您的应用程序并安装 apache / nginx vhost 并在完成后重新启动/重新加载相关服务器。 ..那么 apt 是一种完全可行的处理方式......有很多程序可以在数百个系统上同时管理 apt 包...... https://serverfault.com/questions/79093/managing-upgrades-on-hundreds-of-debian-servers

    Canonical/Ubuntu 的 Landscape 是处理这类事情的好工具......我之前在大约 20 个服务器的平台上使用过它......不太清楚设置自己的上游存储库的细节和签署密钥等,以便 apt 可以完全管理软件包,但我相信一旦你的 dpkg 开始运行,这将非常简单

    Debconf / apt 为许多类型的应用程序提供了一个很好的用例......但是,如果它是一个持续部署的应用程序并且您必须不断进行升级(我的经验法则是,如果您进行的升级超过每周一次或每月 5 次)......那么使用持续部署工具可能会更好...... Capistrano 和 Fabric 都非常出色(使用 Cap,具有多阶段扩展......很棒,Fabric 我只有听到了很棒的事情)...但是我仍然不相信数百台 Debian 服务器上的 Cap ...这实际上与您的项目规模有关...上面说 10 或 20 个服务器的上限太慢而且太笨重真的很好地管理部署(恕我直言,显然任何人都可以做任何事情,而且我对此还没有真正研究过,但是与 Gnu Make 和 debconf 相比,Ruby Rake 和 Capistrano 等都非常缓慢且不可靠,尤其是在野外)

    特别是关于一般服务器自动化,我建议您查看PuppetChef,这两个工具看起来都非常可行。也没有使用,但我们所有的管理脚本都是用 Ruby 编写的,而且 Chef 的刀工具对于以脚本方式配置服务器非常方便

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2022-06-26
      • 2023-04-10
      相关资源
      最近更新 更多