我应该如何将 Web 服务器部署到 Amazon EC2

我应该如何将 Web 服务器部署到 Amazon EC2

我有一个小网站,我们想将其部署到 Amazon EC2。原因是它比大多数其他 VPS 系统便宜,而且我们希望拥有完全自定义的配置,因此共享主机是不可能的。此外,使用相同图像扩展到更大服务器的选项也是选择 EC2 的原因之一。

因为我们从 t1.micro 实例开始,所以我们将使用 EBS 启动实例 (x64_64)。我们选择的操作系统是 Ubuntu Server。我们不自己编译任何软件包,而是坚持使用存储库中的稳定软件包。

我们所有的网络服务器数据都存储在另一个 EBS 数据卷上。

现在的问题是:我们如何才能最好地部署我们的网络服务器,同时保持数据更新。

我目前考虑过的选项:

  • 使用我们需要安装的所有软件来制作我们自己的图像。
    • 缺点:我们必须定期更新映像,以便在重新启动服务器时获得安全更新的映像。此外,当我们切换到发行版的新版本时,我们必须重新安装所有内容。
    • 优点:启动服务器时无需花费时间进行任何安装程序
  • 使用标准 Ubuntu 镜像,在启动时安装所有服务器并从数据盘复制所有非标准配置文件
    • 缺点:启动时间较长,安装时可能出错,容易出错
    • 优点:可以非常轻松地使用新的发行版或更新的图像

最好的做法是什么?我是否错过了什么好的选择,或者我的选择中还有哪些方面是我没有考虑到的。

答案1

我们用织物自由云编写可以调用 API 来启动服务器、安装所有必要软件和更改配置的 Python 脚本。每次启动服务器所需的时间比使用磁盘映像时要长一些,但我们认为不必构建大量映像的简单性要好得多。

确保所有这些文件都存在于您的 VCS 中(包括配置文件),这样您就可以将其用作配置的文档。然后启动新服务器就可以很简单了

fab create_server:server_type=webserver

答案2

查看 Chef 和 OpsCode 提供的托管服务。Chef 允许您自动化部署和配置。chef-client 作为守护进程在服务器上运行,如果您愿意,可以为您升级软件包。

Fabric 也很棒,我们主要用它来操作实时服务器。

答案3

我创建了自己的 AMI,其中已安装 LAMP 堆栈和所有应用程序。我会跟踪所有更改,然后在有足够的更改时更新映像。我将 apache、mysql 和 php 配置文件以及 mysql 数据库符号链接到 EBS。这样我就不必跟踪这些更改,当我将当前快照附加到新实例时,这些更改就会被捕获。

相关内容