Skip to content
deploy a wordpress on FC
PHP JavaScript CSS
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
fc-web-mysql config service log Mar 8, 2020
fc-web-sqlite config service log Mar 8, 2020
png change readme Mar 8, 2020
.gitignore v1 Oct 21, 2019
README.md change readme Mar 8, 2020

README.md

简介

本项目是一元建站-基于函数计算 + wordpress 构建 serverless 网站示例工程。

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 定价

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

案例操作步骤

准备条件

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

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

可选: 有一个域名(国内的需要备案, 海外的不需要), 比如 abc.com, 并将域名 CNAME 解析到 函数计算(FC) 对应的 region

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

如果没有域名也没有关系, fun 工具会给您生成一个临时域名

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

    可选操作: 如果您没有自己的域名,可以在这里首先执行一次 fun deploy, 命令行结果输出中会有一个可用的临时域名, 如下图中的 12720569-1986114430573743.test.functioncompute.com, 记录这个域名。

    fun deploy

    image

  • 上传 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

    可选操作: 如果您没有自己的域名,可以在这里首先执行一次 fun deploy, 命令行结果输出中会有一个可用的临时域名, 如下图中的 12720569-1986114430573743.test.functioncompute.com, 记录这个域名。

    fun deploy

    image

  • 本地完成安装过程, 初始化 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:\Windows\System32\drivers\etc

      其中 hz.mofangdegisn.cn 是您预先准备的域名或者 Fun 为生成的临时域名

    • 通过浏览器输入 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平台

本地调试OK 后,我们接下来将函数部署到云平台:

  • 修改 index.php 中的 $host 中的值, $host 修改为之前步骤中生成的临时域名, 如本例中的 12720569-1986114430573743.test.functioncompute.com

    当然, 这里您也可以使用自己的域名, 修改 template.yml 中 DomainName: Auto , Auto 修改成您自己的域名,  index.php 中的 $host 中的值也为您自己的域名

  • 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可, 有两处地方需要更改

    image

  • 再次执行 fun deploy, 完成最终的部署

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

3.  通过浏览器打开 Fun 临时生成的域名, 比如本例中的 12720569-1986114430573743.test.functioncompute.com

  • mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程

  • sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台

FAQ

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

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

有必要再加上这些优化:

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

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

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

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

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

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

image

image

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

You can’t perform that action at this time.