Contents that posted a long time ago may be obsolete and may not reflect my current opinion.

本文为《轻松部署 Laravel 应用》的预习补充篇。

简介

所谓「基础设施(Infrastructure)」,是云时代兴起后流行起来的一个名词。服务器、交换机、负载均衡等等,都可以称作是基础设施。

基础设施通常是软件项目的硬件载体。部署的过程,可理解为将软件安装到基础设施的过程。在实际项目部署前,通常首先要确定你的项目「需要哪些 基础设施」。

云服务器

云服务器(Elastic Compute Services)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。

更直白地说,你可以将一台云服务器理解为一台独立的「电脑」,只不过这台「电脑」的硬件咱们看不见摸不着,它托管于云服务厂商。在云服务厂商提供的管理页面,你可以给云服务器升级、降级配置,以及进行开关机、重装系统等常见的管理操作。

实际上,云服务厂商只是将硬件划分给云服务器,并出租给我们,而我们则 具备对该服务器软件与数据方面的完全、绝对控制权

通常情况下,云服务器是一切服务的基础;后续的课程将会把 Laravel 项目部署到云服务器中。

为什么不应该使用虚拟主机

首先,我们需要明白什么是 虚拟主机

虚拟主机(Virtual Hosts)是指在服务器上分配一定的磁盘空间,用户可以租用此部分空间,以供用户放置站点,并提供简易的存储和传输功能。

可以看出,虚拟主机是在服务器的基础上进行二次划分,将原本属于单台服务器的资源分配成一个个小块。如果将云服务厂商比作拥有硬件的房东,那么我们租用云服务器则可以看作是租房。而虚拟主机,则是租房后摆上多个床位再次出租,成为集体宿舍。

如同上文所说,我们可以完全控制一台云服务器的软件部分,但虚拟主机往往可控范围十分有限,很少有虚拟主机提供商支持安装 PHP 扩展、配置 FPM 参数,更别提执行 Composer 命令、指定系统版本,这 对项目的部署过程是非常不利的

另外,虚拟主机数据隔离性差,很难保证其可靠性和安全性;一台服务器可能同时「超载」了成百上千个虚拟主机,不仅 速度慢,且容易 受到其它虚拟主机的影响。相比之下,多数云服务厂商目前技术已经比较成熟稳定,因此请使用云服务器,避免使用虚拟主机。

可选的独立服务

主流云服务厂商除了提供基本的云服务器之外,大多还有独立的 数据库服务(例如 MySQL)、缓存服务(例如 Redis)等。这些服务也是通过云服务器作为载体,将它们部署在云服务器上出租给我们。

你可能想问,那我为什么不自己部署呢,何必买独立的服务?其实,幕后的工程师们通常为这些服务进行了大量优化,是总结了许多实战经验后给出的更专业、更快捷的解决方案;并且服务内部的运维工作交给了云服务厂商,我们可以更加专注于如何实现具体的业务。

因此,在没有特殊要求的情况下,如果可以,我更推荐使用这些独立的服务,省心省力又省时。

主流云服务厂商

来自国内:

  • 阿里云:阿里巴巴出品,国内市场占有率连续多年保持第一。
  • 腾讯云:腾讯出品,凭借多年的 IM 技术积累,提供一些不错的特色服务。
  • 华为云:华为出品,由于其具备硬件研发生产能力,在部分领域有后来居上之势。

来自国外:

包年包月还是按时长付费?

大多云服务提供两种租赁计费模式:包年或包月预付费 以及 按时长后付费

包年、包月的计费方式比较简单,在购买时支付定量费用即可;在服务未过期前你可以任意使用,到期后将会自动销毁。

按时长的计费单位通常更加精确,例如 每小时 甚至 每分钟每秒;你可以随时创建服务,也可以随时销毁。在服务被销毁之前,服务商将持续从你的账户内扣费。

按时长通常比包月略贵些,但更加「随心所欲」;而包月不必担心忘记销毁导致超额账单,但也不可避免地丧失了灵活性。

后续课程推荐使用按时长付费的云服务。在还不熟悉相关配置的情况下,你可以任意创建、修改、销毁它们,而不会被固定的付费模式禁锢。

按固定宽带还是按流量付费?

与上文类似,国内云服务器网络计费方式通常也分为两种:按固定带宽计费 以及 按流量计费

按带宽计费将服务器的最高带宽限制在某个固定值;无论利用率高低,是否有数据传输,带宽越高,价格越贵。

按流量计费类似手机流量,只不过我们不需要预充值;服务商将实时统计云服务器数据传输量,按照 每 GB 一定价格持续从你的账户内扣费。

以实际经验来看,按带宽计费通常比按流量计费性价比低,因为绝大多数站点并不是每时每刻都保持稳定的访问量,在业务低谷时尽管带宽利用率很低,仍需支付同样的费用。不过要提醒大家,按流量付费的站点需要注意避免被心怀叵测的「小人」恶意刷流量,导致账单超额。