如果我想使用 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-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 编译过 ac/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”任务编译程序编辑......并且从这个结构中的文件名中自动检测到依赖关系
对于 webapp,这里是来自 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 为许多类型的应用程序提供了一个很好的用例......但是,如果它是一个持续部署的应用程序并且您必须不断进行升级(我的经验法则是,如果您每周进行一次以上的升级或 5x 月)......那么使用持续部署工具可能会更好...... Capistrano 和 Fabric 都非常出色(使用 Cap,具有多阶段扩展......很棒,Fabric 我只听说过很棒的东西) ...但我仍然不相信数百台 Debian 服务器上的 Cap ...这实际上与您的项目规模有关...上面说 10 或 20 个服务器的上限对于真正管理部署来说太慢太笨重了好吧(恕我直言,显然任何人都可以做任何事情,而我对此的研究还不够多,但与 Gnu Make 和 debconf 相比,Ruby Rake 和 Capistrano 等都非常缓慢且不可靠,尤其是在野外)
特别是关于一般的服务器自动化,我建议你看看Puppet和Chef,这两个都是非常可行的工具。也没有使用,但我们所有的管理脚本都是用 Ruby 编写的,而且 Chef 的刀工具对于以脚本方式配置服务器非常方便
我建议使用Capistrano或Fabric之类的东西来部署您的应用程序,而不是 apt-get。这些工具用于部署应用程序并且能够部署到多个服务器。