中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何在tcb上裝om并使其變身實用做站版

發布時間:2022-01-05 19:18:30 來源:億速云 閱讀:109 作者:柒染 欄目:云計算

這篇文章給大家介紹如何在tcb上裝om并使其變身實用做站版,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在tcb上安裝onemanager

首先,從http://github.com/qkqpttgf/OneManager-php下載代碼,先不上傳到cloudbase空間,本地修改platform/tencentscf.php的GetGlobalVariable($event){...}函數體中的$_GET = $event['queryString']為$_GET = $event['queryStringParameters'],這樣?admin等參數傳遞就正確了。然而程序還是得不到入口index.main_handler,直接使用cloudbase后臺的新建函數只能用index.man作入口,手動修改入口可以執行,但程序會進一步得不到環境變量,我們可以統一使用cloudbase cli命令行工具全面定制:

cloudbase cli是一個nodejs程序。按騰訊產品文檔在本地安裝后tcb login --key登錄,填入你的用戶access keyid和keysecret,在本地做一個待上傳目錄,在此目錄下寫如下內容的cloudbaserc.json,同時準備子目錄:functions/myonemanager/下放經過上面修改的onemanager代碼,到待上傳目錄(你也可以建一個目錄myonemanager,把om源碼和cloudbaserc.json統統放進去不用建functions/myonemanager子目錄,但是下面cloudbaserc.json中的functionroot要改為../):

{
  "envId": "你的環境",
  "functionRoot": "functions",
  "functions": 
  [{
    "name": "myonemanager",
    "timeout": 6,
    "runtime": "Php7",
    "installDependency": true,
    "handler": "index.main_handler有了這個就不用改入口了",
    "envVariables": {
      "Region":"ap-shanghai",
      "SecretId":"你的騰訊accesskeyid",
      "SecretKey":"你的騰訊accesskeysecret",
      "admin": "你要定義給后臺的密碼,明文",
      "sitename": "站點名,找一個在線base64轉碼后,將結果填這",
      "hideFunctionalityFile": "1",
      "disableChangeTheme": "1",
      "passfile": "密碼文件名",
      "theme": "主題名",
      "timezone": "8",
      "disktag": "盤名1|盤名2",

      "盤名1": "{\"Drive_custom\": \"on\",\"Drive_ver\": \"CN\",\"client_id\": \"你的azure app portal for onemanager的client app id明文\",\"client_secret\": \"你的azure app portal for onemanager的client app secretbase64明文找一個base64轉成結果填這\",\"diskname\": \"明文找一個base64轉成結果填這\",\"domain_path\": \"明文找一個base64轉成結果填這,形式是域名1:/目錄1|域名2:/目錄2......\",\"refresh_token\": \"看接下來手動獲取方法\",\"token_expires\": 9999999999}",

      "盤名2": "{同盤1生成方式}"

    }
  }]
}

可以看到盤名1后面的參數是一個字串,然而它本身也是個json,將json轉成字串供cloudbase識別的方法是將所有"都\轉義一下,如果你嫌麻煩實在想圖方便,可以在正常非cloudbase區或vps上直接搭建一個onemanager,注冊盤,然后將結果填到上面。 上面的clientid和secretid,正常方式安裝od是自動的,但其實你也可以手動https://portal.azure.cn/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps去生成,我這里是互聯,新注冊->任何組織目錄中的帳戶,多租戶->重定向url:web,https://scfonedrive.github.io,這里可以直接看到client id了。看左邊列,api權限不用設置,證書和密碼->新客戶端密碼,期限永久,就看到secret了。 至于refresh token,也可以從https://service-36wivxsc-1256127833.ap-hongkong.apigateway.myqcloud.com/release/scf_onedrive_filelistor手動得到。token_expires填10位9。

cloudbaserc.json準備完畢,最后cd到這個目錄,cloudbase functions:deploy,這樣你就得到了一個完全手動和程序化的安裝方式,后臺改變256m到128m,觸發路徑/或/xx不能是/xx/結尾,以后deploy,提示覆蓋直接確認即可。

更多讓onemanager實用做站的考慮

我們知道,云函數主要是處理api結果的傳送,在這里不能傳遞大量數據,保證一次http所有結果在最短的ms里完成,否則按調用次數和調用時長及內存占用的云函數會相應產生相對高的花費,查云函數后臺,確保每次2ms內的調用是合理和正常的。故onedrive和托管onemanager等程序的空間(這二者最好是同一地域的,比如世紀互聯配國內空間,國際版配港區空間)對提高調用速度至關重要,有些onedrive列表程序支持,前后端分離,云函數純粹后端只返回api結果不包前端渲染。api速度快(列文件很快)如fodi.

處理靜態資源問題和定制模板:

由于od是一個特殊的程序,它定位于網盤文件列表而非帶資源的網站展示,它綁定的工作域名下,每一個路徑,如果不是顯式的?setup這種參數,就是文件調用,因此,它對所有js,css的引用,都是外部的(如果發現網頁慢,將它換到快點的cdn地址)。這也是為了上面說的一次request/respon能盡快調用完成,所以od的templates都是不帶靜態asserts的。------ 所以并不推薦將靜態template資源放在代碼theme下,然后根據判斷它是不是網盤文件進一步處理。

談到od的templates,其實它也是網頁模板技術的運用(本質就是定義一系列開頭結尾組合形式的模板變量塊,然后替換),你可以查看已有template自己寫一個比如最簡單的那個nexmoe1.html,,模板體邏輯通常是這樣的:開頭icon處理塊,管理相關的style,前端樣式style塊,外部css和jss引用,渲染omf,md文件的邏輯塊(require一個maked js然后根據md content在頁面直接render),。列文件和目錄的邏輯(其實又包括div邏輯塊,js邏輯塊),blaaaa.....。

加速和cdn:

我們知道網站速度至關重要。不光對用戶對運營也是如此。要實用做站的話,必須要配cdn。對于cdn加速,比如要求文件靜態化為各個url路徑為目錄名的目錄下的index,html。onemanager有沒有相關方面的支持呢

od是帶緩存的。主要是存取到云函數backend空間的system temp目錄中。這樣列文件和目錄的時間會相對變少。程序效果和體驗會最佳。od內部對text文件(包括markdown)都是有1800秒緩存的。這個過程在common.php中,查看fetch files,render list主要函數,gethiddenpass()等類似函數。

對于md,上面說到它是在客戶端通過client js來渲染從服務端拉取下來的內容的(如果發現大量md的網站慢,有可能這個js處在慢速cdn上,換個),,對于html則是跟md一樣直接下載并output不經過主題渲染處理,相當于部署了一個靜態頁面。

本來它是在客戶端生成的。其實在服務端也可完成md,比如下載一個php的渲染器mdparser.php,再在index.php中include 'mdparser.php';common.php中在對應headmd處理位置的地方作修改:

$parser = new HyperDown\Parser;            
$headmd = str_replace('<!--HeadmdContent-->', $parser->makeHtml(fetch_files(spurlencode(path_format(urldecode($path) . '/head.md'),'/'))['content']['body']), $tmp[0]);

$tmp = splitfirst($html, '<!--MdRequireStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--MdRequireEnd-->');

在服務端生成html作為api結果返回會稍微增加api時間,但結果更合理。你可以進一步把渲染好的html結果保存在cache中對應md地址的子目錄index.html(而不是原來的raw md content)中,然后下回fetch到這個md地址,直接取cache,按處理html的方式,直接render。這樣的“全站偽靜態”對cdn也是有用的。

你也可以修改refreshcache的邏輯,od有一個refresh cache,它是先切換到當前目錄下就refresh哪個目錄的cache。且只工作在手動管理模式下,其實你可以把它做成自動靜態化的,瀏覽到對應md位置就生成對應index.html到cache/md命名子目錄下。然后在后臺做一個一鍵md全站生成html到cache靜態化按鈕和功能。或者生成到cloudbase的存儲中。---- 已經有這樣的程序了,靜態網站生成器作為云函數,生成靜態文件到oss,云存儲。像極了自動化的github page action。

關于如何在tcb上裝om并使其變身實用做站版就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

元江| 防城港市| 比如县| 黑龙江省| 平谷区| 和政县| 虞城县| 牡丹江市| 潼南县| 桦甸市| 大悟县| 大兴区| 顺昌县| 西充县| 栾城县| 临城县| 万全县| 博客| 景宁| 怀仁县| 屏东县| 库尔勒市| 锦州市| 乌拉特前旗| 阳谷县| 广宁县| 巨野县| 蚌埠市| 邯郸市| 剑河县| 桐城市| 彩票| 桃源县| 普兰店市| 昌都县| 锦州市| 合川市| 手游| 莆田市| 万州区| 晴隆县|