一元建站-基于函数计算 + wordpress 构建 serverless 网站

news/2024/5/16 14:29:19/文章来源:https://blog.csdn.net/zhaowei121/article/details/103512977

前言

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

相关参考文档: https://yq.aliyun.com/articles/640912

1.1 DEMO 概述

  • DEMO 示例效果入口: http://hz.mofangdegisn.cn

    <ul><li>账号: fc-test-user</li><li>密码: fc-test-pwd</li>
    </ul>
    </li>
    <li>DEMO 示例工程地址:&nbsp;<a href="https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fgithub.com%2Fawesome-fc%2Ffc-wordpress">fc-wordpress</a></li>
    

开通服务

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

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

1.2 解决方案

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

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

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

函数计算完整费用详情:

  • 每月前 100 万次函数调用免费, 每月前 400000(GB*秒) 费用免费, 函数的内存可以设置为 128M 或者 256M, 因此对于一个一个月访问量低于 100 万次的网站, 该项是免费的
  • 对于低成本的网站, 假设一个月的产生的公网流量为 1GB, 0.8元
  • NAS, US$0.06/GB/Month, 网站大小为 50M, 即使按 1G 计算, 0.42元
  • RDS mysql 最基本的单机版本, 25元/月

函数计算计费 | NAS 定价

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

函数计算运行 PHP 框架原理

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

2.1 传统服务器 PHP 运行原理

  • 原理示意图

  • A simple nginx conf

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

2.2 FC 驱动 PHP 工程原理

  • 函数计算的执行环境实例相当于传统 web 服务的 Apache/Nginx
  • 用户函数相当于实现 Apache/Nginx 的 conf 中 location
  • 用户将 Web 网站部署在 NAS,然后挂载 NAS 到函数的执行环境, 比如下面代码中 /mnt/auto目录
  • 对于 WordPress 入口函数代码就是这么简单: index.php

    <p>其中函数计算为用户提供了一个&nbsp;<code>$GLOBALS[&#39;fcPhpCgiProxy&#39;]</code>&nbsp;对象用来和 php-fpm 进行交互,对</p>
    </li>
    

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

  • requestPhpCgi

    <pre>
    

requestPhpCgi($request, $docRoot, $phpFile = “index.php”, $fastCgiParams = [], $options = [])

<ul><li><code>$request</code>: 跟&nbsp;<code>php http invoke</code>&nbsp;入口的参数一致</li><li><code>$docRoot</code>: Web 工程的根目录</li><li><code>$phpFile</code>: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数</li><li><code>$fastCgiParams</code>: 函数计算内部尽量根据 $request给您构造&nbsp;<code>default cgi params</code>, 但是如果您不是想要的,可以使用<code>$fastCgiParams</code>覆盖一些参数 (reference:&nbsp;<a href="https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCommon_Gateway_Interface">cgi</a>)</li><li><code>$options</code>: array类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒</li>
</ul>
</li>

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

  • PHP 入口函数
  • PHP 执行环境

案例操作步骤

准备条件

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

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

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

如您想在杭州的 region 部署 wordpres 网站, 则将 abc.com CNAME 解析到 12345.cn-hangzhou.fc.aliyuncs.com, 其中 12345 是您的 accountId

3.1 安装最新的 Fun 工具

  • 安装版本为8.x 最新版或者10.x 、12.x nodejs
  • 安装 funcraf

3.2 Clone 工程

git clone https://github.com/awesome-fc/fc-wordpress.git

3.3 根据需要使用的数据库进入不同的目录

  • 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息

如果使用 mysql 数据库, 参考章节 3.3.1

如果使用 sqlite3 数据库, 参考章节 3.3.2

3.3.1 使用 mysql 数据库

  • 进入 目录 fc-wp-mysql

    <pre>
    

fun nas init
fun nas info

<blockquote>
<p>fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas</p><p>如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-mysql/wordpress</p>
</blockquote>
</li>
<li>
<p>上传 wordpress 网站到 NAS</p><pre>

fun nas sync
fun nas ls nas:///mnt/auto/

<blockquote>
<p><code>fun nas sync</code>: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的 fc-wp-mysql 目录</p><p><code>fun nas ls nas:///mnt/auto/</code>: 查看我们是否已经正确将文件上传到了 NAS</p>
</blockquote>
</li>

3.3.2 使用 sqlite3 数据库

  • 进入 目录 fc-wp-sqlite

    <pre>
    

fun nas init
fun nas info

<blockquote>
<p>fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas</p><p>如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-sqlite/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress</p>
</blockquote>
</li>
<li>
<p>本地完成安装过程, 初始化 sqlite3 数据库</p><ul><li><p>在目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 中输入命令:</p><pre>

php -S 0.0.0.0:80

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

  • <blockquote>
    <ul><li>linux/mac : vim /etc/hosts</li><li>windows7: C:WindowsSystem32driversetc</li>
    </ul><p>其中 hz.mofangdegisn.cn 是您预先准备的域名</p>
    </blockquote><ul><li>通过浏览器输入 hz.mofangdegisn.cn, 这个时候没有mysql数据库设置页面,完成 wordpress 安装过程</li>
    </ul>
    </li>
    

    成功安装以后, 这个时候, .fun/nas/auto-default/fc-wp-sqlite/wordpress/wp-content 下面应该有一个 database 的目录, ls -a 查看, 应该有 .ht.sqlite 这个 sqlite3 数据库文件

    • 回退 host 文件的修改

    注: 中间修改 host 的目的是初始化 sqlite3 数据库的时候, base site url 是提前准备的域名, 而不是 127.0.0.1

    • 上传 wordpress 网站到 NAS

      <pre>
      

    fun nas sync
    fun nas ls nas:///mnt/auto/

    <blockquote>
    <p><code>fun nas sync</code>: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-sqlite)上传到 NAS 中的 fc-wp-sqlite 目录</p><p><code>fun nas ls nas:///mnt/auto/</code>: 查看我们是否已经正确将文件上传到了 NAS</p>
    </blockquote>
    </li>
    

    3.4 部署函数到FC平台

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

    • 修改 index.php 中的 $host 中的值
    • 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可
    • 修改 template.yml 自定义域名为自己提前准备好的域名
    • 执行 fun deploy

    登录控制台 https://fc.console.aliyun.com,可以看到service 和 函数已经创建成功, 并且 service 也已经正确配置。

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

    • mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程
    • sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台

    FAQ

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

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

    • 单实例多并发
    • 选择高性能关系型数据库,比如高可用的云数据库POLARDB

    有必要再加上这些优化:

    • 预留实例消除冷启动 + 预付费优化成本
    • 极速型 NAS
    • OSS 对象存储 + CDN 来存储和分发静态资源

    目前 PHP Runtime 并不支持单实例多并发, 使用 Custom Runtime,可以将基于传统模式 nginx + php-fpm + mysql 开发的网站直接简单无缝迁移到函数计算平台,示例工程 customruntime-php

    使用OSS对Wordpress进行图片动静分离

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

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

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

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

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

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

    A: 可以, 比如 python: https://yq.aliyun.com/articles/603249 , 或者直接使用 custom runtime, 内置了 java、python 和 node, Custom Runtime 用户手册 , Custom Runtime 使用集锦

     

    本文作者:rsong

    原文链接

    本文为阿里云内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_752903.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Edge 浏览器如何查看当前网站的 SSL 证书

有时候我们可能需要在浏览器上查看当前网站的 SSL 证书以确定是否配置正确了。 Edege 查看方法 单击网站 URL 链接地址的锁的标志。 如果你访问的网站是 https 的话&#xff0c;这个标志就会出现&#xff0c;否则你的网站就不是使用 https 的。 然后在下面的链接中将会显示当…

Edge 浏览器如何查看当前网站的 SSL 证书

有时候我们可能需要在浏览器上查看当前网站的 SSL 证书以确定是否配置正确了。 Edege 查看方法 单击网站 URL 链接地址的锁的标志。 如果你访问的网站是 https 的话&#xff0c;这个标志就会出现&#xff0c;否则你的网站就不是使用 https 的。 然后在下面的链接中将会显示当…

Nancy之给我们的网站添加自定义图标

原文:Nancy之给我们的网站添加自定义图标当我们在做一个网站时&#xff0c;可能经常会有这样一个需求&#xff0c;要给我们做的网站添加一个自定义的图标。 在Nancy中&#xff0c;默认是的下面这样 一个妹子的头像&#xff0c;其实也是挺好看的&#xff01;&#xff01; 那么当…

struts2架构网站漏洞修复详情与利用漏洞修复方案

struts2从开发出来到现在&#xff0c;很多互联网企业&#xff0c;公司&#xff0c;平台都在使用apache struts2系统来开发网站&#xff0c;以及应用系统&#xff0c;这几年来因为使用较多&#xff0c;被攻击者挖掘出来的struts2漏洞也越来越&#xff0c;从最一开始S2-001到现在…

借助 Lucene.Net 构建站内搜索引擎(上)

前言&#xff1a;最近翻开了之前老杨&#xff08;杨中科&#xff09;的Lucene.Net站内搜索项目的教学视频&#xff0c;于是作为老杨脑残粉的我又跟着复习了一遍&#xff0c;学习途中做了一些笔记也就成了接下来您看到的这篇博文&#xff0c;仅仅是我的个人笔记&#xff0c;大神…

php特级课---4、网站服务监控(常用网站服务监控软件有哪些)

php特级课---4、网站服务监控&#xff08;常用网站服务监控软件有哪些&#xff09; 一、总结 一句话总结&#xff1a;这些是架构师的知识 网络流量监控&#xff1a;cacti&#xff0c;mrtg 邮件报警系统&#xff1a;postfix 压力测试工具&#xff1a;Apache压力测试软件-ab&…

用户访问网站的过程

一.用户访问网站的过程 1.当用户访问一个网站时&#xff0c;都发生了什么&#xff1f; 概括如下&#xff1a; (1).利用DNS服务&#xff0c;将输入的域名解析为相应的IP地址 a.本地主机在输入域名后&#xff0c;会查询本地缓存信息和本地hosts b.本地主机会向远程LDNS服务器&…

go语言的服务发现、存储引擎、静态网站

go语言的服务发现、存储引擎、静态网站

03JavaScript程序设计修炼之道_2019-06-18_20-39-14_事件onloadonmouseoverout

02onload.html 03onmouseover&onmouseout.html 转载于:https://www.cnblogs.com/HiJackykun/p/11054778.html

修改chrome浏览器user-agent;在电脑上也能打开pad 或者 iphone 的专用网站

今天找了一个方法&#xff0c;可以修改chrome浏览器的user-agent &#xff1b;这样我们就 可以在电脑上访问 pad &#xff08; phone &#xff09;版的 gmail 或者 outlook 等。 1、 把chrome发送到桌面快捷方式&#xff0c;可以针对PAD 和PHONE 多建一些快捷方式。 2、 在快…

更好的网站 - 你知道网站被屏蔽了吗?

网站所有者应该知道的 - 你的网站被屏蔽了&#xff1f;

php网站点击特效代码,【seo优化】鼠标点击网站特效生成原理(附代码)

当前位置&#xff1a;首页 > SEO干货 正文2019年11月19日admin有朋友经常问&#xff0c;网站上点击出现爱国字眼是怎么做出来的&#xff0c;鼠标点击就显示“富强、民主、和谐”等24个词语&#xff0c;这样鼠标点击特效。下面来分享一下如何实现的。1&#xff0c;效果如下&…

树状结构搜索功能_事竟成科技,科普seo搜索引擎优化的做法

随着互联网的不断发展与普及&#xff0c;SEO成为一个企业宣传&#xff0c;选择推广的必要渠道&#xff0c;网络不同于其他大众传媒&#xff0c;网络具有广泛性&#xff0c;没有地域、行业、职务、生活背景、经济条件等等的限制。所以SEO排名直接影响了企业被展示的机会。要做优…

seo技术_基础知识_网站pr值的意义_SEO网站优化的通用策略有哪些!

seo不仅一种提高网站的权重的手段&#xff0c;更是网站运营的策略&#xff0c;seo策略直接关系到网站发展&#xff0c;不同的网站在执行上也略有差异&#xff0c;但是在还是有优化的程序都大同小异&#xff0c;下面为你介绍下网站优化通用的策略。第一步:分析对手1.确定你的竞争…

seo 伪原创_英文SEO采集伪原创软件Kontent Machine注册使用实战教程!

做跨境电商的童鞋们&#xff0c;总会遇到这样的问题&#xff1a;我们英文很差或者一般&#xff0c;无法写出精彩的原创英文文章进行SEO推广。这确实是很难的&#xff0c;即使许多商务英语过硬的都难以写出高质量英文原创文章&#xff0c;因为你不熟悉他们的生活环境&#xff0c…

php mysql 网站性能分析工具_MySQL profiling性能分析工具

MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具&#xff0c;通过该工具可以获取一条Query 在整个执行过程中 多种资源的简述&#xff1a;MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具&#xff0c;通过该工具可以获取一条Query 在整个执…

找网络高手联系方式_上海网络营销之SEO推广:原来SEO这样做才最有效

网络营销中&#xff0c;SEO因为成本低、效率高、获取的客户质量有保障&#xff0c;一直是各大企业最信赖、也最认可的一种营销方式。可是大多数的企业&#xff0c;却不懂如何运用SEO推广营销&#xff0c;更有甚者&#xff0c;贪图一时的利益&#xff0c;被某些黑心的互联网公司…

购买实体网站服务器,实体服务器购买

实体服务器购买 内容精选换一换已购买弹性云服务器ECS&#xff0c;具体操作请参见《弹性云服务器快速入门》。已购买弹性公网IP&#xff0c;并绑定到购买的弹性云服务器ECS上&#xff0c;具体操作请参见《弹性公网IP快速入门》登录AOM控制台&#xff0c;在左侧导航栏中选择“配…

辰光php客服系统源码_角点科技:购买的商城网站源码靠谱吗?

购买的商城网站源码靠谱吗?当下&#xff0c;商城网站开发越来越火&#xff0c;很多企业都想要开发一款商城网站&#xff0c;而不少企业在选择源码时&#xff0c;忽略了商城网站源码的重要性&#xff0c;从而造成损失&#xff0c;下面角点科技来为你讲解商城源码。1、商城网站源…

seo日常工作表_SEO日常工作内容主要有哪些

L氪迹在这里详细讲解SEO日常工作的主要内容以及各类工作内容重要性、频率和作用&#xff0c;下面进入主题:第一项:查看网站基本数据工作内容简述:快照、首页及其他页面重点词排名、整站关键词排名、权重、收录、友链稳定性&#xff1b;重要性:重要&#xff1b;频率:每天作用:检…