日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一元建站-基于函数计算 wordpress 构建 serverless 网站 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本文旨在通過(guò) 快速部署一個(gè) wordpress 網(wǎng)站到阿里云函數(shù)計(jì)算平臺(tái) 這個(gè)示例來(lái)展示 serverless web 新的開發(fā)模式, 包括 FUN 工具一鍵初始化 NAS, 同步網(wǎng)站到 NAS, 一鍵部署等能力, 展現(xiàn)函數(shù)計(jì)算的開發(fā)敏捷特性、自動(dòng)彈性伸縮能力、免運(yùn)維和完善的監(jiān)控設(shè)施。

相關(guān)參考文檔: https://yq.aliyun.com/articles/640912

1.1 DEMO 概述

  • DEMO 示例效果入口: http://hz.mofangdegisn.cn
    • 賬號(hào): fc-test-user
    • 密碼: fc-test-pwd
  • DEMO 示例工程地址: fc-wordpress

開通服務(wù)

免費(fèi)開通函數(shù)計(jì)算, 按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。

免費(fèi)開通文件存儲(chǔ)服務(wù)NAS, 按量付費(fèi)

1.2 解決方案

如上圖所示, 當(dāng)多個(gè)用戶通過(guò)對(duì)外提供的 url 訪問(wèn)web服務(wù)的時(shí)候時(shí)候,每秒的請(qǐng)求幾百上千都沒(méi)有關(guān)系, 函數(shù)計(jì)算平臺(tái)會(huì)自動(dòng)伸縮, 提供足夠的執(zhí)行實(shí)例來(lái)響應(yīng)用戶的請(qǐng)求, 同時(shí)函數(shù)計(jì)算提供了完善的監(jiān)控設(shè)施來(lái)監(jiān)控您的函數(shù)運(yùn)行情況。

1.3 Serverless 方案與傳統(tǒng)自建 web 方案對(duì)比

ITEM成本穩(wěn)定性
基于 VM 方案使用 ecs.t5-lc1m1.small, 22.8元/月服務(wù)器和數(shù)據(jù)庫(kù)在同一臺(tái)VM, 均無(wú)主備容災(zāi),同時(shí)該規(guī)格的主機(jī)本身性能弱
輕量應(yīng)用服務(wù)器60元/月(1vCPU 1GB 1Mbps 20GB[ssd])服務(wù)器和數(shù)據(jù)庫(kù)在同一臺(tái)VM, 均無(wú)主備容災(zāi),同時(shí)該規(guī)格的主機(jī)本身性能弱
函數(shù)計(jì)算sqlite3 版本約為 1元/月 mysql 版本大約 26元/月

函數(shù)計(jì)算完整費(fèi)用詳情:

  • 每月前 100 萬(wàn)次函數(shù)調(diào)用免費(fèi), 每月前 400000(GB*秒) 費(fèi)用免費(fèi), 函數(shù)的內(nèi)存可以設(shè)置為 128M 或者 256M, 因此對(duì)于一個(gè)一個(gè)月訪問(wèn)量低于 100 萬(wàn)次的網(wǎng)站, 該項(xiàng)是免費(fèi)的
  • 對(duì)于低成本的網(wǎng)站, 假設(shè)一個(gè)月的產(chǎn)生的公網(wǎng)流量為 1GB, 0.8元
  • NAS, US$0.06/GB/Month, 網(wǎng)站大小為 50M, 即使按 1G 計(jì)算, 0.42元
  • RDS mysql 最基本的單機(jī)版本, 25元/月

函數(shù)計(jì)算計(jì)費(fèi) | NAS 定價(jià)

如上所述, 在低成本網(wǎng)站領(lǐng)域, 函數(shù)計(jì)算具有十分明顯的成本優(yōu)勢(shì),同時(shí)還保持了彈性能力,以后業(yè)務(wù)規(guī)模做大以后并沒(méi)有技術(shù)切換成本(可能需要做的只是更換一個(gè)更強(qiáng)的關(guān)系型數(shù)據(jù)庫(kù)), 同時(shí)財(cái)務(wù)成本增長(zhǎng)配合預(yù)付費(fèi)也能保持平滑。低成本網(wǎng)站變成高可用高性能網(wǎng)站如絲般順滑, 高性能網(wǎng)站詳情可以參考文末 FAQ 中的 Q1 問(wèn)題。

函數(shù)計(jì)算運(yùn)行 PHP 框架原理

在具體操作部署之前, 先簡(jiǎn)單梳理一遍 函數(shù)計(jì)算運(yùn)行 PHP 框架原理

2.1 傳統(tǒng)服務(wù)器 PHP 運(yùn)行原理

  • 原理示意圖

  • A simple nginx conf

從上面原理示意圖我們可以看出,Web 服務(wù)器根據(jù) conf 中 location將 PHP 腳本交給 php-fpm 去解析,然后將解析后的結(jié)果返回給 client 端

2.2 FC 驅(qū)動(dòng) PHP 工程原理

  • 函數(shù)計(jì)算的執(zhí)行環(huán)境實(shí)例相當(dāng)于傳統(tǒng) web 服務(wù)的 Apache/Nginx
  • 用戶函數(shù)相當(dāng)于實(shí)現(xiàn) Apache/Nginx 的 conf 中 location
  • 用戶將 Web 網(wǎng)站部署在 NAS,然后掛載 NAS 到函數(shù)的執(zhí)行環(huán)境, 比如下面代碼中 ?/mnt/auto 目錄
  • 對(duì)于 WordPress 入口函數(shù)代碼就是這么簡(jiǎn)單: index.php
    其中函數(shù)計(jì)算為用戶提供了一個(gè) $GLOBALS['fcPhpCgiProxy'] 對(duì)象用來(lái)和 php-fpm 進(jìn)行交互,對(duì) PHP 工程中的 php 文件進(jìn)行解析,該對(duì)象提供了兩個(gè)重要的接口:
    • requestPhpCgi
requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = []) - `$request`: ?跟 `php http invoke` 入口的參數(shù)一致 - `$docRoot`: ?Web 工程的根目錄 - `$phpFile`: ?用于拼接 cgi 參數(shù)中的 SCRIPT_FILENAME 的默認(rèn)參數(shù) - `$fastCgiParams`: ?函數(shù)計(jì)算內(nèi)部盡量根據(jù) $request給您構(gòu)造 `default cgi params`, 但是如果您不是想要的,可以使用`$fastCgiParams`覆蓋一些參數(shù) (reference: [cgi](https://en.wikipedia.org/wiki/Common_Gateway_Interface)) - `$options`: array類型,可選參數(shù), debug_show_cgi_params ?設(shè)為 true ,會(huì)打印每次請(qǐng)求 php 解析時(shí)候的 cgi 參數(shù), 默認(rèn)為 false ;readWriteTimeout 設(shè)置解析的時(shí)間, 默認(rèn)為 5 秒

如果您有興趣, 可以了解下函數(shù)計(jì)算 PHP Runtime:

  • PHP 入口函數(shù)
  • PHP 執(zhí)行環(huán)境

案例操作步驟

準(zhǔn)備條件

免費(fèi)開通函數(shù)計(jì)算, 按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。

免費(fèi)開通文件存儲(chǔ)服務(wù)NAS, 按量付費(fèi)

有一個(gè)域名, 比如 abc.com, 并將域名 CNAME 解析到 函數(shù)計(jì)算(FC) 對(duì)應(yīng)的 region

如您想在杭州的 region 部署 wordpres 網(wǎng)站, 則將 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 根據(jù)需要使用的數(shù)據(jù)庫(kù)進(jìn)入不同的目錄

  • 復(fù)制 .env_example 文件為 .env, ?并且修改 .env 中的信息為自己的信息

如果使用 mysql 數(shù)據(jù)庫(kù), 參考章節(jié) 3.3.1

如果使用 sqlite3 數(shù)據(jù)庫(kù), 參考章節(jié) 3.3.2

3.3.1 使用 mysql 數(shù)據(jù)庫(kù)

  • 進(jìn)入 目錄 fc-wp-mysql
fun nas init fun nas info

fun nas init: 初始化 NAS, 基于您的 .env 中的信息獲取(已有滿足條件的nas)或創(chuàng)建一個(gè)同region可用的nas
如果你沒(méi)有修改 templata.yml 中的配置 service名字, 那么則可以進(jìn)入下一步; 如果有修改, 會(huì)在當(dāng)前目錄生成新的目錄 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目錄), ?將默認(rèn)目錄下的 .fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目錄拷貝到 .fun/nas/auto-default/{serviceName} 下, 同時(shí)可以刪除目錄 .fun/nas/auto-default/fc-wp-mysql/wordpress

  • 上傳 wordpress 網(wǎng)站到 NAS
fun nas sync fun nas ls nas:///mnt/auto/

fun nas sync: 將本地 NAS 中的內(nèi)容(.fun/nas/auto-default/fc-wp-mysql)上傳到 NAS 中的 fc-wp-mysql 目錄
fun nas ls nas:///mnt/auto/: 查看我們是否已經(jīng)正確將文件上傳到了 NAS

3.3.2 使用 sqlite3 數(shù)據(jù)庫(kù)

  • 進(jìn)入 目錄 fc-wp-sqlite
fun nas init fun nas info

fun nas init: 初始化 NAS, 基于您的 .env 中的信息獲取(已有滿足條件的nas)或創(chuàng)建一個(gè)同region可用的nas
如果你沒(méi)有修改 templata.yml 中的配置 service名字, 那么則可以進(jìn)入下一步; 如果有修改, 會(huì)在當(dāng)前目錄生成新的目錄 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目錄), ?將默認(rèn)目錄下的 .fun/nas/auto-default/fc-wp-sqlite/wordpress 的wordpress目錄拷貝到 .fun/nas/auto-default/{serviceName} 下, 同時(shí)可以刪除目錄 .fun/nas/auto-default/fc-wp-sqlite/wordpress

  • 本地完成安裝過(guò)程, 初始化 sqlite3 數(shù)據(jù)庫(kù)
    • 在目錄 .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 是您預(yù)先準(zhǔn)備的域名

  • 通過(guò)瀏覽器輸入 hz.mofangdegisn.cn, 這個(gè)時(shí)候沒(méi)有mysql數(shù)據(jù)庫(kù)設(shè)置頁(yè)面,完成 wordpress 安裝過(guò)程

成功安裝以后, 這個(gè)時(shí)候, .fun/nas/auto-default/fc-wp-sqlite/wordpress/wp-content 下面應(yīng)該有一個(gè) database 的目錄, ls -a 查看, 應(yīng)該有 .ht.sqlite 這個(gè) sqlite3 數(shù)據(jù)庫(kù)文件

  • 回退 host 文件的修改

注: 中間修改 host 的目的是初始化 sqlite3 數(shù)據(jù)庫(kù)的時(shí)候, base site url 是提前準(zhǔn)備的域名, 而不是 127.0.0.1

  • 上傳 wordpress 網(wǎng)站到 NAS
fun nas sync fun nas ls nas:///mnt/auto/

fun nas sync: 將本地 NAS 中的內(nèi)容(.fun/nas/auto-default/fc-wp-sqlite)上傳到 NAS 中的 fc-wp-sqlite 目錄
fun nas ls nas:///mnt/auto/: 查看我們是否已經(jīng)正確將文件上傳到了 NAS

3.4 部署函數(shù)到FC平臺(tái)

接下來(lái)將函數(shù)部署到云平臺(tái):

  • 修改 index.php 中的 $host 中的值
  • 修改 template.yml LogConfig 中的 Project, 任意取一個(gè)不會(huì)重復(fù)的名字即可
  • 修改 template.yml 自定義域名為自己提前準(zhǔn)備好的域名
  • 執(zhí)行 fun deploy

登錄控制臺(tái) https://fc.console.aliyun.com,可以看到service 和 函數(shù)已經(jīng)創(chuàng)建成功, 并且 service 也已經(jīng)正確配置。

通過(guò)瀏覽器打開自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn

  • mysql 版本數(shù)據(jù)庫(kù), 可以直接跟傳統(tǒng)的 wordpress 一樣,直接進(jìn)入安裝過(guò)程
  • sqlite3 版本數(shù)據(jù)庫(kù), 由于之前已經(jīng)完成初始化,可以直接進(jìn)入網(wǎng)站首頁(yè)或網(wǎng)站后臺(tái)

FAQ

Q1: 函數(shù)計(jì)算能開發(fā)高性能高可用網(wǎng)站嗎?

A: 可以, 使用函數(shù)計(jì)算的單實(shí)例多并發(fā)功能和高性能數(shù)據(jù)庫(kù)

  • 單實(shí)例多并發(fā)
  • 選擇高性能關(guān)系型數(shù)據(jù)庫(kù),比如高可用的云數(shù)據(jù)庫(kù)POLARDB

有必要再加上這些優(yōu)化:

  • 預(yù)留實(shí)例消除冷啟動(dòng) 預(yù)付費(fèi)優(yōu)化成本
  • 極速型 NAS
  • OSS 對(duì)象存儲(chǔ) CDN 來(lái)存儲(chǔ)和分發(fā)靜態(tài)資源

目前 PHP Runtime 并不支持單實(shí)例多并發(fā), 使用 Custom Runtime,可以將基于傳統(tǒng)模式 nginx php-fpm mysql 開發(fā)的網(wǎng)站直接簡(jiǎn)單無(wú)縫遷移到函數(shù)計(jì)算平臺(tái),示例工程 customruntime-php

使用OSS對(duì)Wordpress進(jìn)行圖片動(dòng)靜分離

Q2: 使用低成本 sqlite3 版本的網(wǎng)站, 冷啟動(dòng)第一次打開很慢怎么辦?

A: 用一個(gè) timer trigger 的函數(shù) keep warm

Q3: 使用低成本 sqlite3 版本的網(wǎng)站, 能支持多大的qps?

A: 由 sqlite3 數(shù)據(jù)庫(kù)性能決定, 這邊有一些壓測(cè)結(jié)果:

每次壓力增大時(shí)候, 都有些冷啟動(dòng),時(shí)間慢點(diǎn),但是支持從壓測(cè)結(jié)果來(lái)看支持 50 QPS 是沒(méi)有疑問(wèn)的, 是足夠支持一些中小網(wǎng)站的。

Q4: 使用其他語(yǔ)言基于函數(shù)計(jì)算開發(fā) serverless 網(wǎng)站可以嗎?

A: 可以, 比如 python: https://yq.aliyun.com/articles/603249 , 或者直接使用 custom runtime, 內(nèi)置了 java、python 和 node, Custom Runtime 用戶手冊(cè) , Custom Runtime 使用集錦

“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的技術(shù)圈。”

總結(jié)

以上是生活随笔為你收集整理的一元建站-基于函数计算 wordpress 构建 serverless 网站的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。