构建 网站 Serverless 基于函数计算 Wordpress 一元建站 (构建网站所必需的软件系统不包括)

构建 网站 Serverless 基于函数计算 Wordpress 一元建站 (构建网站所必需的软件系统不包括)

前言

本文旨在通过 快速部署一个 wordpress 网站到阿里云 函数计算 平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。

相关参考文档:top="1055.453125">1.1 DEMO 概述

开通服务

免费开通函数计算, 按量付费,函数计算有很大的免费额度。

免费开通文件存储服务NAS, 按量付费

1.2 解决方案

如上图所示, 当多个用户通过对外提供的 url 访问 web 服务的时候时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提供足够的执行实例来响应用户的请求, 同时函数计算提供了完善的监控设施来监控您的函数运行情况。

1.3 Serverless 方案与传统自建 web 方案对比

成本 稳定性
基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱
轻量应用服务器 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱
函数计算 sqlite3 版本约为 1元/月 mysql 版本大约 26元/月

函数计算完整费用详情:

函数计算计费|NAS 定价

如上所述, 在低成本网站领域, 函数计算具有十分明显的成本优势,同时还保持了弹性能力,以后业务规模做大以后并没有技术切换成本(可能需要做的只是更换一个更强的关系型数据库), 同时财务成本增长配合预付费也能保持平滑。低成本网站变成高可用高性能网站如丝般顺滑, 高性能网站详情可以参考文末中的 Q1 问题。

函数计算运行 PHP 框架原理

在具体操作部署之前, 先简单梳理一遍 函数计算运行 PHP 框架原理

2.1 传统服务器 PHP 运行原理

从上面原理示意图我们可以看出,Web 服务器根据 conf 中 location 将 PHP 脚本交给 php-fpm 去解析,然后将解析后的结果返回给 client 端

2.2 FC 驱动 PHP 工程原理

其中函数计算为用户提供了一个 $GLOBALS['fcPhpCgiProxy'] 对象用来和 php-fpm 进行交互,对

PHP 工程中的 php 文件进行解析,该对象提供了两个重要的接口:

requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = [])
复制代码

: 跟 php http invoke 入口的参数一致

: Web 工程的根目录

: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数

$fastCgiParams : 函数计算内部尽量根据 $request 给您构造 default cgi params , 但是如果您不是想要的,可以使用 $fastCgiParams 覆盖一些参数 (reference:)

: array 类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒

如果您有兴趣, 可以了解下函数计算 PHP Runtime:

案例操作步骤

准备条件

免费开通函数计算, 按量付费,函数计算有很大的免费额度。

免费开通文件存储服务NAS, 按量付费

有一个域名, 比如 abc.com, 并将域名 CNAME 解析到 函数计算(FC) 对应的 region

3.1安装最新的 Fun 工具

3.2 Clone 工程

git clonetop="4679.453125">3.3 根据需要使用的数据库进入不同的目录

3.3.1 使用 mysql 数据库

fun nas initfun nas info
复制代码
fun nas syncfun nas ls nas:///mnt/auto/
复制代码

3.3.2 使用 sqlite3 数据库

fun nas initfun nas info
复制代码

在目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 中输入命令:

php -S 0.0.0.0:80
复制代码

修改 host 文件,添加 127.0.0.1 hz.mofangdegisn.cn

通过浏览器输入 hz.mofangdegisn.cn, 这个时候没有 mysql 数据库设置页面,完成 wordpress 安装过程

fun nas syncfun nas ls nas:///mnt/auto/
复制代码

3.4 部署函数到 FC 平台

接下来将函数部署到云平台:

登录控制台,可以看到 service 和 函数已经创建成功, 并且 service 也已经正确配置。

通过浏览器打开自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn

Q1: 函数计算能开发高性能高可用网站吗?

A: 可以, 使用函数计算的单实例多并发功能和高性能数据库

有必要再加上这些优化:

Q2: 使用低成本 sqlite3 版本的网站, 冷启动第一次打开很慢怎么办?

A: 用一个 timer trigger 的函数 keep warm

Q3: 使用低成本 sqlite3 版本的网站, 能支持多大的 qps?

A: 由 sqlite3 数据库性能决定, 这边有一些压测结果:

每次压力增大时候, 都有些冷启动,时间慢点,但是支持从压测结果来看支持 50 QPS 是没有疑问的, 是足够支持一些中小网站的。

Q4: 使用其他语言基于函数计算开发 serverless 网站可以吗?

A: 可以, 比如 python:或者直接使用 custom runtime, 内置了 java、python 和 node,Custom Runtime 用户手册,Custom Runtime 使用集锦

原文链接

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。