我有一个我们想要部署到Amazon EC2的小型网站。 原因是它比其他大多数VPS系统便宜,我们希望有完全自定义的configuration,所以共享主机是不可能的。 此外,select使用相同的图像扩展到更大的服务器是EC2的原因之一。
因为我们从一个t1.micro实例开始,我们将使用EBS启动的实例(x64_64)。 我们select的操作系统是Ubuntu服务器。 我们不编译任何packages十二,坚持稳定的软件包从仓库。
我们所有的networking服务器数据都存储在另一个EBS数据卷上。
现在的问题是:我们怎样才能最好地部署我们的networking服务器,同时保持数据。
我到目前为止所考虑的选项:
什么是最好的办法呢? 我错过了什么好的select,还有我没有考虑过的选项的其他方面。
我们使用Fabric和libcloud编写可以调用api的python脚本来启动服务器,安装所有必要的软件并更改configuration。 每次我们启动服务器的时间比磁盘镜像要花费的时间要长一些,但是我们认为不必构build大量镜像的简单性要好得多。
确保所有这些文件都存在于您的VCS(包括configuration文件)中,这样您就可以基本上将其用作您的configuration文件。 然后旋转一个新的服务器可以很简单
fab create_server:server_type=webserver
从OpsCode检查厨师和托pipe的服务。 厨师让你自动化你的部署和configuration。 厨师客户端作为守护程序在服务器上运行,如果愿意,可以为您升级软件包。
Fabric也很棒,我们主要用它来操作活动服务器。
我创build了我自己的AMI,它已经安装了LAMP堆栈和所有的应用程序。 我跟踪任何变化,然后当我有足够的时间更新图像。 我有Apache,MySQL和PHPconfiguration文件和mysql数据库符号链接到EBS。 这使我不必跟踪这些更改,并在将当前快照附加到新实例时捕获这些更改。