阿里云建站模板,网站

大家好,关于阿里云建站模板很多朋友都还不太明白,今天小编就来为大家分享关于一元建站-基于函数计算 + wordpress 构建 serverless 网站的知识,希望对各位有所帮助!

前言

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

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

1.1DEMO概述

DEMO示例效果入口:http://hz.mofangdegisn.cn账号:fc-test-user密码:fc-test-pwdDEMO示例工程地址:fc-wordpress

1.2解决方案

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

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

函数计算完整费用详情:

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

函数计算计费|NAS定价

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

函数计算运行PHP框架原理

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

2.1传统服务器PHP运行原理

原理示意图Asimplenginxconf

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

2.2FC驱动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=[])\n

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

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

PHP入口函数PHP执行环境

案例操作步骤

准备条件

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

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

3.1安装最新的Fun工具

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

3.2Clone工程

gitclonehttps://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

funnasinit\nfunnasinfo\n

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

如果你没有修改templata.yml中的配置service名字,那么则可以进入下一步;如果有修改,会在当前目录生成新的目录.fun/nas/auto-default/{serviceName}(funnasinfo可以列出新的目录),将默认目录下的.fun/nas/auto-default/fc-wp-mysql/wordpress的wordpress目录拷贝到.fun/nas/auto-default/{serviceName}下,同时可以删除目录.fun/nas/auto-default/fc-wp-mysql/wordpress

上传wordpress网站到NAS

funnassync\nfunnaslsnas:///mnt/auto/\n

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

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

3.3.2使用sqlite3数据库

进入目录fc-wp-sqlite

funnasinit\nfunnasinfo\n

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

如果你没有修改templata.yml中的配置service名字,那么则可以进入下一步;如果有修改,会在当前目录生成新的目录.fun/nas/auto-default/{serviceName}(funnasinfo可以列出新的目录),将默认目录下的.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-S0.0.0.0:80\n

修改host文件,添加127.0.0.1hz.mofangdegisn.cnlinux/mac:vim/etc/hostswindows7: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数据库的时候,basesiteurl是提前准备的域名,而不是127.0.0.1

上传wordpress网站到NAS

funnassync\nfunnaslsnas:///mnt/auto/\n

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

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

3.4部署函数到FC平台

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

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

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

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

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

FAQ

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

A:可以,只要连接的数据库性能足够,有必要再配合预留实例消除冷启动就足够高qps的web网站了。

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

A:用一个timertrigger的函数keepwarm

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

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

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

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

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

作者:rsong

本文为云栖社区内容,未经允许不得转载。

关于阿里云建站模板到此分享完毕,希望能帮助到您。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平