亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一元建站-基于函數計算 + wordpress 構建 serverless 網站

發布時間:2020-06-06 20:59:36 來源:網絡 閱讀:227 作者:阿里系統軟件技術 欄目:云計算

前言

本文旨在通過 快速部署一個 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 解決方案

一元建站-基于函數計算 + wordpress 構建  serverless 網站

如上圖所示, 當多個用戶通過對外提供的 url 訪問web服務的時候時候,每秒的請求幾百上千都沒有關系, 函數計算平臺會自動伸縮, 提供足夠的執行實例來響應用戶的請求, 同時函數計算提供了完善的監控設施來監控您的函數運行情況。

1.3 Serverless 方案與傳統自建 web 方案對比

ITEM 成本 穩定性
基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服務器和數據庫在同一臺VM, 均無主備容災,同時該規格的主機本身性能弱
輕量應用服務器 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) 服務器和數據庫在同一臺VM, 均無主備容災,同時該規格的主機本身性能弱
函數計算 sqlite3 版本約為 1元/月 <br />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 運行原理

  • 原理示意圖
    一元建站-基于函數計算 + wordpress 構建  serverless 網站

  • A simple nginx conf

一元建站-基于函數計算 + wordpress 構建  serverless 網站

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

2.2 FC 驅動 PHP 工程原理

一元建站-基于函數計算 + wordpress 構建  serverless 網站

  • 函數計算的執行環境實例相當于傳統 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:\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 文件的修改
      <br />注: 中間修改 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 數據庫性能決定, 這邊有一些壓測結果:

一元建站-基于函數計算 + wordpress 構建  serverless 網站

一元建站-基于函數計算 + wordpress 構建  serverless 網站

每次壓力增大時候, 都有些冷啟動,時間慢點,但是支持從壓測結果來看支持 50 QPS 是沒有疑問的, 是足夠支持一些中小網站的。

Q4: 使用其他語言基于函數計算開發 serverless 網站可以嗎?

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

一元建站-基于函數計算 + wordpress 構建  serverless 網站

“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 临澧县| 双桥区| 满洲里市| 宜章县| 西林县| 方城县| 清水县| 吉首市| 海南省| 方正县| 天津市| 乐业县| 陈巴尔虎旗| 太白县| 南安市| 华亭县| 磐石市| 乐业县| 丰宁| 武义县| 湖南省| 耒阳市| 临湘市| 江川县| 旬邑县| 望城县| 吉安县| 鄂托克前旗| 沭阳县| 曲阳县| 社会| 忻城县| 沂南县| 沽源县| 古丈县| 洮南市| 高陵县| 德清县| 龙门县| 庆城县|