在AWS上部署服务器端Swift

开发完应用程序后,下一步就是将其提供给您的受众群体使用……因此,自然的愿望是将其部署到服务器上。

尽管可以将Swift应用程序部署到任何Ubuntu 16服务器,但在本文中,我将重点介绍如何使用Perfect Assistant部署到AWS实例。

如果要遵循,则需要满足三个先决条件:Perfect Assistant应用程序,Mac上可运行的Docker应用程序以及一个AWS账户。

AWS设置

从AWS收集的一些信息:

  • 存取金钥ID和机密
  • 公钥/私钥对
  • 安全小组

访问密钥和秘密

创建新的访问密钥和机密的步骤:

  • 访问https://console.aws.amazon.com/iam/
  • 从侧面导航中选择“用户”
  • 如果您没有IAM用户,请创建一个,确保添加“程序访问”复选框,然后单击“直接附加现有策略”,然后选择“ AmazonAPIGatewayInvokeFullAccess和AmazonEC2FullAccess”属性。 这将创建一个具有密钥和机密的新用户帐户。 记下它们!
  • 如果您已经拥有IAM用户帐户,请选择所需用户的名称,然后选择“安全凭据”选项卡。 单击“创建访问密钥”按钮,并记录密钥的ID和秘密。

公钥/私钥对

接下来,我们要创建一个新的公钥/私钥对。 转到“ EC2”部分,在导航中单击“密钥对”,然后单击“创建密钥对”按钮。 确保下载后! 将下载的文件(以“ .pem”结尾)放入“〜/ .ssh /”。 这使使用SSH连接到远程系统的应用程序(例如助手)可以访问它。

安全组

接下来,单击导航中的“安全组”,然后单击“创建安全组”。 给您的新组一个简短的名称和描述,然后选择“入站”选项卡,单击“添加规则”。

对于本演示,我建议您添加端口8181并在源下拉列表中选择“ Anywhere”,并确保您从当前IP地址添加SSH访问。

配置完美助手

单击“确定”,返回至Perfect Assistant,在“欢迎”屏幕上,单击EC2框中的“配置EC2凭据”按钮。 这将打开一个新窗口,您可以在其中添加新的凭据。

单击“创建”,为您的新凭证设置命名,然后输入我们从AWS获得的访问密钥和机密。 “区域”应该是您设置的在地理位置上接近您或大多数受众的地方。 按“保存”将锁定配置。

设置演示应用程序以进行部署

接下来,让我们从GitHub上获取“ Perfect App Template”。 仍在“欢迎”屏幕中,单击“创建新项目”,“自定义存储库URL”。 单击位置旁边的“浏览”,然后为模板找到URL,然后粘贴模板的URL:“ https://github.com/PerfectlySoft/PerfectAppTemplate.git”

保留“将Linux构建与Xcode项目集成”的复选框,因为我们在此阶段的目标是Linux部署。

单击“保存”后,系统将启动它是macOS端项目的初始克隆。

进行Linux构建非常简单,只需单击“ BUILD:Linux”按钮。 幕后操作是准备好Docker容器,将项目的依赖项克隆到沙盒位置,并进行沙盒化的Linux构建。

部署配置

现在我们已经确定它可以在Linux上正常构建,我们可以单击“ Deploy”按钮。 这将打开一个工作表,允许您选择“部署配置”或创建新的配置。 让我们为AWS创建一个新的。

命名配置,然后选择我们之前创建的EC2凭据。 选择一个SSH密钥-再次是我们之前获得的“ .pem”文件。 如果没有列出任何“可用实例”,请按“重新加载”。 重要的是,此处列出的实例是“完美兼容”的AWS实例。 如果您看不到任何一个,或希望创建一个新的,请单击“添加…”按钮。

在这里,您可以定义要创建的实例数量,然后定义要创建的实例的详细信息。

选择我们之前创建的安全组,以及实例类型,可用性区域和子网。 对于“密钥对”,您应该只看到之前输入的密钥对。 同样,现在只能选择一个“图像ID”…以后,随着添加了特定的变体,它们可能会更多。

按“启动”将触发AWS创建您请求的一个或多个实例。 返回上一页-您可能需要等待一两分钟,AWS才能启动您的新实例,然后按“重新加载”以获取它。 不幸的是,当它出现时不会被命名,因此,如果您已在AWS控制台中命名了所有实例,那么它将成为未命名的实例。

选择您的新实例,然后按“保存”。

而且,现在…部署

您可能需要返回并在Assistant中重新选择项目,但是现在当您单击“部署”时,您将看到新的配置,并确认将进行新的发行版构建,然后连接到您在配置中选择的每个实例,并上传webroot,config和可执行文件,然后创建并启用服务文件并启动服务。

在控制台输出中,您会看到它提到了每个实例的IP地址-让我们将其复制并在浏览器中转到它(在端口8104上)。 该URL看起来像这样— http://123.123.123.123:8104