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

news/2024/5/20 12:28:44/文章来源:https://blog.csdn.net/weixin_43970890/article/details/103511049

前言

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

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

1.1 DEMO 概述

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

    • 账号: fc-test-user
    • 密码: fc-test-pwd
  • DEMO 示例工程地址: fc-wordpress

开通服务

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

免费开通文件存储服务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

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

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

  • requestPhpCgi

      requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = [])
    • $request: 跟 php http invoke 入口的参数一致
    • $docRoot: Web 工程的根目录
    • $phpFile: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数
    • $fastCgiParams: 函数计算内部尽量根据 $request给您构造 default cgi params, 但是如果您不是想要的,可以使用$fastCgiParams覆盖一些参数 (reference: cgi)
    • $options: array类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒

如果您有兴趣, 可以了解下函数计算 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

    fun nas init
    fun nas info

    fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas

    如果你没有修改 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

  • 上传 wordpress 网站到 NAS

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

    fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的 fc-wp-mysql 目录

    fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS

3.3.2 使用 sqlite3 数据库

  • 进入 目录 fc-wp-sqlite

    fun nas init
    fun nas info

    fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas

    如果你没有修改 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

  • 本地完成安装过程, 初始化 sqlite3 数据库

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

      php -S 0.0.0.0:80
    • 修改 host 文件,添加 127.0.0.1 hz.mofangdegisn.cn
    • linux/mac : vim /etc/hosts
    • windows7: C:WindowsSystem32driversetc

    其中 hz.mofangdegisn.cn 是您预先准备的域名

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

成功安装以后, 这个时候, .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

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

    fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-sqlite)上传到 NAS 中的 fc-wp-sqlite 目录

    fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS

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 是没有疑问的, 是足够支持一些中小网站的。

双12来袭!500元淘宝红包、iPhone11等你拿。
https://www.aliyun.com/1212/2019/home?utm_content=g_1000092611

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

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

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

相关文章

(转)网站速度优化技巧:Nginx设置js、css过期时间

网站速度优化技巧:Nginx设置js、css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for-js-and-css.html 配置Nginx expires缓存实现性能优化 原文:https://blog.webfsd.com/post_pei-zhinginx-expires-…

保护网站访问安全--阿里云DNS正式支持DNSSEC

近日,云解析DNS正式发布DNSSEC(Domain Name System Security Extensions)功能。DNSSEC功能的发布,意味着云解析DNS在保护网站访问安全的方面,又前进了一大步。那到底什么是DNSSEC,这项技术的给我们带来了什么好处呢。接下来我们一…

Yslow安装使用, 网站性能工具Yslow

本文whyboy站长讲解 Yslow安装 以及 Yslow使用 ,打开Yslow官网就能看到有四个版本可供选择:火狐(firefox)浏览器、谷歌(chrome)浏览器、欧朋(opera)浏览器和移动版。本文介绍的火狐版本文whyboy…

如何利用全站加速,提升网站加速性能和用户体验?

随着网络技术的发展,越来越多的应用基于互联网发布,再好的应用,如果打开速度慢,10个用户会有9个用户选择离开,相关统计数据显示,每增加0.1秒的加载延迟,将会导致客户活跃度下降1%。在目前获客成…

中国游戏视频门户网站GTV 遭遇挂马袭击

【赛迪网-IT技术报道】2009年1月6日,网友glacier_lk举报中国游戏视频门户网站GTV.com.cn被***挂马。经过实验室反病毒工程师分析,确认了该网站确实包含恶意代码,浏览的用户可能会中毒。 当网友点击挂马网址hxxp://www.gtv.com.cn(出于安全考虑…

Step by Step WebMatrix网站开发之一:Webmatrix安装

WebMatrix是微软提供的一个完全免费的Web开发工具,工具内已集成web服务器、数据库和程序架构。笔者最感兴趣的是新的Razor,一个ASP.NET新的视图引擎。该引擎很好的将服务器代码和HTML代码融合在一起,使代码非常容易阅读和理解,而且…

Linux环境下网站平台的搭建 MySQL+apache+PHP

Linux环境下网站平台的搭建 MySQLapachePHP搭建条件:必须有apache、php、MySQL的联合支持。 静态安装:顺序: ①首先安装MySQL ②其次安装PHP ③最后安装apache 动态安装:顺序: ①首先安装MySQL ②其次安装ap…

iis6下配置支持.net4.0发布网站

iis6配置支持.net4.0 今天在win2003操作系统上发布两个网站,首先配置iis: 1.下载 .net framework 4.0 差不多48MB 2.安装 3.打开iis: 开始>管理工具>Internet 信息服务(IIS)管理器 4.点击管理器中的“web服务扩展”,刚刚安装的.net framework 4.…

获取网站缩略图代码

先看界面效果图: 最终运行得出的图如下: 页面代码: Form1.cs /** 作者:HJL * Blog:Http://www.cnblogs.com/xt_hjl * 获取网站缩略图程序 * 2010年8月最后一天 * 欢迎修改和传播 * 最好能保留该信息^_^ * 也欢迎大家访问我的博客 …

25个优秀的设计机构网站设计案例

今天,我们一起来欣赏网站设计工作室自己的网站。设计公司的网站除了要能够吸引客户以外,还要通过他们自己的网站向客户展示他们的设计理念和风格。这里收集的25个优秀的设计机构网站既有清爽简洁风格的,也有色彩丰富,图文并茂的&a…

网站安装打包 新建网站[四][创建网站] 中

在IIS6.0的帮助文档中,对于创建IIS,提供了三种程序管理方法,一种是WMI,另一种是ADSI,还有一种是命令行方法。 这里,采用网上代码比较多的ADSI编程方式进行。 用C#进行ADSI编程,需要引用添加名称空间&#x…

IIS 301永久重定向,提升网站SEO

对于每一个站长而言,SEO都是必修课。301永久重定向是SEO中,最为常见的一个。实现301重定向的方法有多种,需要根据实际的情况来区分。目前的主流WEB服务器,Apache, IIS等都是支持301重定向的。 今天要说的301重定向,是针…

阿里云网站全新启航,重新定义2.0时代的“一站式上云”

在刚刚过去的2020年云栖大会上,阿里云智能总裁张建锋宣布,阿里云正式从“飞天云平台”走向“数字原生操作系统”,进入2.0时代。 关于阿里云2.0,张建锋如此定义:“阿里云2.0,我认为就是云数字原生操作系统的…

50个非常漂亮的作品集网站设计【上篇】

对于设计师和设计机构来说,一个精美的作品集网站是吸引客户的最好方式。如果你正在建设作品集网站或者想重新设计的话可以参考本文收集的这些优秀案例,相信这些精美的网站作品能够带给你灵感,这些网站中汇集的众多优秀设计作品、素材和教程&a…

【渗透测试】网站有cdn怎么办?

文章目录一、简介二、如何检测目标是否使用CDN?1)[超级Ping](https://ping.chinaz.com/)2)nslookup三、常见CDN绕过获取真实IP方法?1)子域名查询2)国外地址请求3)邮件服务4)遗留文件…

分享45个海量免费电子书下载网站

随着网络和信息技术的快速发展,电子书越来越流行。以Amazon Kindle为代表的电子书阅读器的出现改变了人们传统的阅读方式,如同iPod改变人们听音乐一样。如今,很多网上书店也推出了电子书商品,相比传统的纸质书,电子书便…

30个漂亮的单页作品集网站设计案例欣赏

单页网站是指只有一个页面的网站,这类网站一般通过锚点实现平滑的导航。很多设计师的作品集网站也使用了单页类型,设计得非常好。今天这篇文章向大家分享30个漂亮单页作品集网站设计案例,相信这些例子能带给你设计灵感。 Eduardo de La Rocqu…

安装VS2010后,网站不能使用.net 4.0

在IIS7中部署了MVC2.0的程序,打开浏览器输入地址(绑定的端口是87,87端口在chrome有个问题,等下再说):http://localhost:87,但是访问失败, 以为.NET4.0虽然安装了,但还未在…

SharePoint 搜索爬网第三方网站配置

介绍:SharePoint的搜索着实强大,而且最近用到SharePoint搜索第三方爬网,感觉收获挺大,而且网上资料没找到太多类似的,就小记录一下,分享给大家。 首先,我自己写了一个net页面,里面读…

其他 之网站分享插件

<!doctype html> <html> <head> <meta charset"utf-8"> <meta content"widthdevice-width,user-scalableno" name"viewport"> <title>微信&#xff0c;QQ分享插件</title> <link href"css/st…