本项目是一元建站-基于函数计算 + wordpress 构建 serverless 网站示例工程。
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, 按量付费
有一个域名, 比如 abc.com, 并将域名 CNAME 解析到 函数计算(FC) 对应的 region
如您想在杭州的 region 部署 wordpres 网站, 则将 abc.com CNAME 解析到 12345.cn-hangzhou.fc.aliyuncs.com, 其中 12345 是您的 accountId
git clone https://github.com/awesome-fc/fc-wordpress.git
- 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息
如果使用 mysql 数据库, 参考章节 3.3.1
如果使用 sqlite3 数据库, 参考章节 3.3.2
-
进入 目录 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
-
进入 目录 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:\Windows\System32\drivers\etc
其中 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
本地调试OK 后,我们接下来将函数部署到云平台:
修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可, 然后执行
fun deploy
注意: template.yml 注释的部分为自定义域名的配置, 如果想在 fun deploy 中完成这个部署工作:
-
先去域名解析, 比如在示例中, 将域名 hz.mofangdegisn.cn 解析到 123456.cn-hangzhou.fc.aliyuncs.com, 对应的域名、accountId 和 region 修改成自己的
-
去掉 template.yml 中的注释, 修改成自己的域名
-
执行
fun deploy
这个时候如果没有自定义域名, 直接通过浏览器访问访问http trigger 的url, 比如 https://123456.cn-shenzhen.fc.aliyuncs.com/2016-08-15/proxy/fc-wp-sqlite/wp-func/
会被强制下载. 原因
登录控制台 https://fc.console.aliyun.com,可以看到service 和 函数已经创建成功, 并且 service 也已经正确配置。
通过浏览器打开自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn
-
mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程
-
sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台
A: 可以, 使用函数计算的单实例多并发功能和高性能数据库
- 单实例多并发
- 选择高性能关系型数据库,比如高可用的云数据库POLARDB
有必要再加上这些优化:
目前 PHP Runtime 并不支持单实例多并发, 使用 Custom Runtime,可以将基于传统模式 nginx + php-fpm + mysql 开发的网站直接简单无缝迁移到函数计算平台,示例工程 customruntime-php
A: 用一个 timer trigger 的函数 keep warm
A: 由 sqlite3 数据库性能决定, 这边有一些压测结果:
每次压力增大时候, 都有些冷启动,时间慢点,但是支持从压测结果来看支持 50 QPS 是没有疑问的, 是足够支持一些中小网站的。