溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2022-01-05 19:18:30 來(lái)源:億速云 閱讀:109 作者:柒染 欄目:云計(jì)算

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

在tcb上安裝onemanager

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

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

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

      "盤(pán)名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明文找一個(gè)base64轉(zhuǎn)成結(jié)果填這\",\"diskname\": \"明文找一個(gè)base64轉(zhuǎn)成結(jié)果填這\",\"domain_path\": \"明文找一個(gè)base64轉(zhuǎn)成結(jié)果填這,形式是域名1:/目錄1|域名2:/目錄2......\",\"refresh_token\": \"看接下來(lái)手動(dòng)獲取方法\",\"token_expires\": 9999999999}",

      "盤(pán)名2": "{同盤(pán)1生成方式}"

    }
  }]
}

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

cloudbaserc.json準(zhǔn)備完畢,最后cd到這個(gè)目錄,cloudbase functions:deploy,這樣你就得到了一個(gè)完全手動(dòng)和程序化的安裝方式,后臺(tái)改變256m到128m,觸發(fā)路徑/或/xx不能是/xx/結(jié)尾,以后deploy,提示覆蓋直接確認(rèn)即可。

更多讓onemanager實(shí)用做站的考慮

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

處理靜態(tài)資源問(wèn)題和定制模板:

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

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

加速和cdn:

我們知道網(wǎng)站速度至關(guān)重要。不光對(duì)用戶對(duì)運(yùn)營(yíng)也是如此。要實(shí)用做站的話,必須要配cdn。對(duì)于cdn加速,比如要求文件靜態(tài)化為各個(gè)url路徑為目錄名的目錄下的index,html。onemanager有沒(méi)有相關(guān)方面的支持呢

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

對(duì)于md,上面說(shuō)到它是在客戶端通過(guò)client js來(lái)渲染從服務(wù)端拉取下來(lái)的內(nèi)容的(如果發(fā)現(xiàn)大量md的網(wǎng)站慢,有可能這個(gè)js處在慢速cdn上,換個(gè)),,對(duì)于html則是跟md一樣直接下載并output不經(jīng)過(guò)主題渲染處理,相當(dāng)于部署了一個(gè)靜態(tài)頁(yè)面。

本來(lái)它是在客戶端生成的。其實(shí)在服務(wù)端也可完成md,比如下載一個(gè)php的渲染器mdparser.php,再在index.php中include 'mdparser.php';common.php中在對(duì)應(yīng)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-->');

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

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

關(guān)于如何在tcb上裝om并使其變身實(shí)用做站版就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI