作为自由职业者,在阿里巴巴云上部署Web应用的方法是什么?

透过此篇文章,我想分享我在部署网络应用程序到云端时所使用的最佳实践。

这个博客是从英语版翻译过来的。您可以在这里查看原始版本。我们使用了部分机器翻译。如果有翻译错误,请您指出,我们将不胜感激。

本文也在Medium博客平台上发布。

在这篇文章中,我要分享我在将Web应用程序部署到云端时所使用的最佳实践。我是一个自由职业者,最近一个客户向我要求为一个小组织设置SuiteCRM。由于我经常为Alibaba Cloud撰写教程,所以我建议客户使用同样的云平台。对于接近100名用户和30多名同时使用的用户,我推荐的配置如下所示。

1、为了安装Nginx的PHP-FPM,需要2个vCPU、4GB内存的ECS实例。
2、用于MySQL的RDS实例,使用ApsaraDB for RDS,具有1核心、1GB内存和10GB存储。
3、用于发送电子邮件的Direct Mail。

我所采用的方法非常简单,几乎可以应用于所有基于PHP的应用程序。

如果你是第一次使用Alibaba Cloud,可以通过这个链接进行注册。你将免费获得价值300美元的新用户信用额度,并可以使用它来尝试各种Alibaba Cloud产品。

创建ECS实例 ECS

阿里云在文档中记录了几乎所有开始使用云平台所需的信息。您可以使用阿里云的入门教程和技术分享博客了解如何开始使用阿里云。其中最简单的步骤在快速入门指南中有详细说明,并解释了在创建ECS实例时使用的最佳实践。

登录阿里云控制台,进入弹性计算服务界面。点击创建实例按钮,即可轻松创建实例。需要注意的点如下:

1、地区:由于阿里云在全球范围内拥有数据中心,因此请始终选择与应用程序用户地理位置接近的地区。如果数据中心靠近用户,网络延迟会较低,网站加载速度非常快。在我的情况下,由于组织总部位于孟买,我选择了孟买地区。

2、计费方式:如果要持续24小时365天运行实例,请选择按月计费,因为与按量计费相比,月费价格将减少一半或更少,所以需要始终选择按月计费。例如,共享类型的ECS实例,配有2个vCPU和4GB RAM,月度订阅费用为23美元;而如果使用按需计费,每小时费用为0.103美元。月度费用将为0.103 * 24 * 30 = 74.16美元。

3、根据需求选择实例类型,并且可以根据需要随后增加资源。

4、镜像:您可以在市场镜像中找到要安装在ECS实例上的应用程序,但建议始终使用干净的官方镜像进行自己的安装。这样,如果应用程序出现错误,您将知道在哪里查找解决方法。

5、存储:系统盘会在释放ECS实例时被删除。即使实例被误删除,数据盘仍将保留,请尽可能使用数据盘。以下是我使用的设置。

image.png

您可以选择默认创建的虚拟私有云(VPC)。您可以向其中添加4092个实例。由于我在每个ECS实例上使用不同的安全组,因此可以单独进行设置,并确保未使用的端口未打开。

另一个重要的事情是使用密钥认证而不是密码。如果您已经拥有密钥对,可以将公钥添加到阿里巴巴云。如果您没有密钥对,可以使用阿里巴巴云来创建。请确保将密钥存放在非常安全的地方,并确保密钥本身已经通过密码短语进行了加密。

image.png

创建ECS实例时需要注意的事项已经提到以上了。

ECS实例的配置

创建实例并登录到终端后,在设置网站之前,有几个要考虑的因素。

1、不要使用root账户来执行命令,而是在初始连接时设置sudo用户,并始终使用sudo用户执行命令。此外,可以为sudo用户设置基于密钥的身份验证,完全禁用root登录。

2、始终保持基础镜像更新。例如,在Ubuntu Server上执行以下命令。

3、Alibaba的基础镜像不包含不必要的额外软件包。请注意不要安装不必要的软件包。

4、如果在安装过程中出现问题,可以通过更改系统磁盘来随时重置实例,而无需删除并重新创建实例。

我创建了一个sudo用户,并在其中设置了基于密钥的认证。我更新了基础镜像,并设置了自动升级无人值守系统。按照Nginx Web服务器安装教程,我安装了Nginx Web服务器,并使用PHP-FPM安装了PHP 7.2。现在的PHP 7.2版本是目前可用的最新版本。通过使用最新的软件,我们可以避免错误,并提高处理速度,实现稳定运行。最后,我从官方网站下载了SuiteCRM的存档,并部署到了Nginx上。

请参考“入门教程”或“技术分享”中作者编写的教程来安装应用程序。

设置安全组规则

请确保在ECS实例的安全组中不要打开未使用的端口非常重要。请查看我在SuiteCRM实例中使用的安全组规则。

image.png

可以看出,所有的 ICMP 封包只允许端口 22、80 和 443。22 端口用于 SSH 连接。80 端口是不安全的 HTTP 端口,我会将其重定向到安全的 443 端口,用于 HTTPS。ICMP 封包用于检查主机是否存活。虽然删除 ICMP 封包也没问题,但会导致无法对实例进行 ping。

创建RDS实例

在创建RDS实例之前,首先浮现在脑海中的第一个问题是为什么它是必需的。此外,您还可以将开源数据库服务器(如MySQL、MariaDB、PostgreSQL、MongoDB)安装在ECS实例本身上。

答案: ApsaraDB for RDS 是专门为RDS实例优化设计的,具有高速和安全性。默认情况下,仅白名单中的实例可以访问所创建的实例。

让我们来看一下创建ECS实例时需要注意的要点。

1、地域:创建ECS实例和数据库实例时,请务必选择相同的地域。同时确保它们位于同一个VPC中。这样可以利用相同网络内主机之间的免费内网数据传输。另一个好处是只需将ECS实例的私有IP地址加入白名单,从而大幅提高数据库的安全性。

2、计费:重申一次,每月订阅的成本比按需付费方式低。请根据需求选择合适的方式。

3、容量:您可以从低端配置开始,例如1核心、1GB的实例和5GB的存储空间。之后根据需求增加资源。

4、账户:除非有必要,绝对不要创建MySQL 5.6实例的主账户。每个数据库创建数据库和数据库用户。

以下是我在SuiteCRM中使用的RDS配置。

image.png

当MySQL RDS实例启用后,我在实例的安全选项卡中将ECS实例添加到白名单中。一旦将IP地址加入白名单,我立即获取到了RDS实例的主机名和端口号,而这个端口号是MySQL的默认端口 “3306”。我创建了一个名为”suitecrm”的数据库和一个名为”suitecrm”的数据库用户,并为该用户赋予了读写访问权限。

使用HTTPS

随着互联网的发展,每天都有许多新网站被添加。自从Let’s Encrypt证书授权机构开始免费提供SSL证书以来,所有网站都开始使用SSL,这已成为趋势。为了确保安全性,在Web应用程序中使用SSL非常重要。如果交换的数据没有加密,就有可能被窃听并获取机密信息。

阿里巴巴云也提供SSL证书,但是在我看来价格相当昂贵。然而,昂贵的东西通常附带额外的保证。阿里巴巴云提供的SSL证书适合企业用户使用。

在部署SuiteCRM时,为了确保SuiteCRM Web应用程序的安全性,我们还使用了Let’s Encrypt的免费SSL证书。要使用Let’s Encrypt CA的客户端应用程序Certbot生成证书,需要将域名指向服务器。

阿里巴巴云提供非常实惠的价格,免费提供带有WHOIS保护的域名。在我的情况下,客户已经购买了来自其他地方的域名。我创建了子域名,并将该域名指向了ECS实例。通过安装Certbot,我能够轻松生成证书。请不要忘记设置用于自动更新证书的Cron作业,因为证书的有效期为3个月。

直邮设置 (Zhí

建立企業级网页服务器需要专业知识和时间,并且该服务器的维护成本非常高,因此应避免自行设置邮件服务器。即使是小小的设置错误,邮件也可能直接进入垃圾邮件文件夹。

阿里巴巴云直邮服务提供了使用SMTP从应用程序发送邮件的低成本方法。每天前200封邮件是免费的。对我来说,一天200封已经足够了,超出免费配额的邮件也非常便宜。我尝试在直邮中添加了新的邮件子域名。当添加域名时,需要更新DNS。我按照指示进行了操作,但DNS验证花费了一些时间。一旦完成后,我添加了发送者地址,并且可以在应用程序中使用SMTP服务器了。

基于网络的安装

终于,所有的准备工作都已经完成。SuiteCRM应用程序托管在ECS上。数据库服务器托管在ApsaraDB用于RDS上。可以轻松地进行基于Web的安装过程来安装软件。

以下是在SuiteCRM Web基础安装过程中提供给数据库服务器的配置。

image.png

同样地,我填写了所有必要的信息并提供了SMTP服务器的详细信息。

image.png

最终,我的应用程序被部署在阿里巴巴云上。我向客户提议使用ApsaraDB for Memcache来存储SuiteCRM的会话缓存,并使用WAF保护应用程序免受入侵威胁。然而,由于每月的账单增加,客户拒绝了这些提议的实施。尽管如此,客户对阿里巴巴云平台上的应用程序性能非常满意。

我经常在阿里巴巴云技术分享平台上撰写技术博客。请点击以下链接,找到我写的教程。此外,我还将编写详细指南,包括我在阿里巴巴云技术分享平台上安装SuiteCRM到Ubuntu 16.04所遵循的步骤和命令。

阿里云在日本拥有两个数据中心,是亚太地区排名第一的云基础设施服务商(据2019年Gartner报告显示),拥有超过60个可用区域。请点击此处查看阿里云的详细信息。阿里云日本官方网页。

广告
将在 10 秒后关闭
bannerAds