作者:刘天棋
本文选自 Serverless 函数计算征集令 活动
序言
Serverless 经过几年的发展,已经和传统服务器一样好用了。我最初接触 Serverless 是在 2020 年的云开发校园合伙人创造营上,当时我基于阿里云云开发平台部署了一个在线工具箱。
Serverless 发展简史
网站背后的运行技术服务的发展就像人类的进化:物理服务器时代——云计算时代——无服务器化时代,但是有些老系统不能直接部署到 Serverless,必须进行一定的拆解,这无形之中增加了一道门槛。
本文我将介绍如何基于阿里云 Severless 函数计算 FC 搭建按量付费的 WordPress 网站。
简介
通过阿里云函数计算FC,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。更棒的是,您只需要为代码实际运行消耗的资源付费 - 代码未运行则不产生费用。
下表是传统方式搭建服务和 Serverless 的对比:
准备事项
1. 阿里云函数计算 FC,可按量付费,有免费额度
2. 文件储存 NAS,可按量付费
3. 云数据库 RDS 版
4. 日志服务 SLS
在进行本文的操作前,需要先开通上述四项服务,并开通在同一地域的同一 VPC 下。
流程操作
NAS
1. 访问阿里云 NAS 控制台
2. 创建通用型 NAS 文件系统。在这里我选择华东 1(杭州)地域。
3. 系统已经自动创建了挂载点,所以我们无需再进行创建挂载点的操作。
阿里云函数计算 FC
1. 访问阿里云函数计算控制台
2. 在“概览”中进入刚才创建 NAS 服务时选择的地域。
3. 创建服务。需要选择允许访问 VPC 并且允许访问公网,选择好刚才创建 NAS 服务时使用的 VPC 和交换机,如果没有安全组,则需要新建安全组。
服务角色按默认选择。
4. 在函数的“服务详情”页面,找到“储存配置”选项,点击编辑。
5. 启用 NAS,并选择自动配置。
6. 回到函数管理界面,创建新函数,选择创建一个空白函数。
运行环境选择 php7.2,并勾选“处理 http 请求”。
配置触发器,请求方式全部勾选,最后点击创建。
7. 进入函数详情页面,编辑默认提供的代码为下面的这段代码。
getAttribute("requestURI"); $uriArr = explode("?", $uri); // default php / or /wp-admin/ if (preg_match('#/$#', $uriArr[0]) && !(strpos($uri, '.php'))) { $uriArr[0] .= "index.php"; $uri = implode($uriArr); } $proxy = $GLOBALS['fcPhpCgiProxy']; $root_dir = '/mnt/www'; //php script if (preg_match('#\.php.*#', $uri)) { $host = "www.stgit.cn"; // 此处填写你的域名 $resp = $proxy->requestPhpCgi($request, $root_dir, "index.php", ['HTTP_HOST' => $host, 'SERVER_NAME' => $host, 'SERVER_PORT' => '80'], ['debug_show_cgi_params' => false, 'readWriteTimeout' => 60000] ); return $resp; } else { // static files, js, css, jpg ... $filename = $root_dir . explode("?", $uri)[0]; $filename = rawurldecode($filename); $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); $headers = [ 'Content-Type' => $proxy->getMimeType($filename), 'Cache-Control' => "max-age=8640000", 'Accept-Ranges' => 'bytes', ]; return new Response(200, $headers, $contents); } }
8. 之后回到函数计算控制台,在高级功能—域名管理中配置自定义域名。
域名填写已经接入阿里云备案的域名,路由配置选择刚才的服务名称和函数名称,点击创建。注意:这里需要把域名解析到提供的内网 chame。
9. 上传 wordpress 程序
为了简便操作,本文通过开一台按量付费的 ECS 挂载 NAS 然后通过 SFTP 进行可视化操作来上传程序。
可通过类似下面的命令将 NAS 通过 NFS 的方式挂载至目录下。
mount -t nfs -o vers=4.0 16d3e4b609-cub21.cn-hangzhou.nas.aliyuncs.com:/ /mnt
10. 访问我们绑定的域名。
至此部署完成。
参考链接:
[1] 阿里云函数计算 FC:
https://www.aliyun.com/product/fc
[2] 阿里云 NAS 控制台:
https://nasnext.console.aliyun.com/overview
[3] 阿里云函数计算控制台:
https://fcnext.console.aliyun.com/overview
阿里云 Serverless 近期热门活动
2022 阿里云 Serverless Developer Meetup 杭州站火热报名中!
点击此处,立即报名!