騰訊云:theia安裝+登錄認(rèn)證

來(lái)源: 騰訊云
作者:諦聽(tīng)
時(shí)間:2020-10-12
18947
本文介紹用騰訊云進(jìn)行theia安裝+登錄認(rèn)證的過(guò)程。

1 theia 介紹

theia 安裝后的樣子:

tktqekdrn2.png

theia界面

theia 是一套構(gòu)建基于 web 的云端工具和 IDE 的開(kāi)源框架。theia 提供了一個(gè)工作框架、模塊系統(tǒng)、和 git 集成等一些可重用的特性。基于 theia 的工具可以遠(yuǎn)程部署,并通過(guò)瀏覽器或桌面應(yīng)用如 Electron 進(jìn)行訪問(wèn)。theia 基于 Typescript、HTML、CSS、LSP(Language Server Protocol)和 VS Code 提供的 Monaco 代碼編輯器構(gòu)建。

它是一套開(kāi)源框架,而不是一個(gè)最終產(chǎn)品,開(kāi)發(fā)者可以基于 theia 構(gòu)建和自定義一款屬于自己的 IDE 或工具,例如 gitpod、建模工具等。

1.1 優(yōu)點(diǎn)

·為終端用戶(hù)提供完整的多語(yǔ)言 IDE(不僅僅是智能編輯器)。

·同時(shí)支持桌面和云端的 IDE。

·和 VS Code 體驗(yàn)高度一致,大大降低學(xué)習(xí)成本。

·方便擴(kuò)展,開(kāi)發(fā)者可定制自己的 IDE。

·由 Eclipse 基金會(huì)托管,是一個(gè)與廠商無(wú)關(guān)的項(xiàng)目。

1.2 不足

·第一次打開(kāi)界面或刷新界面時(shí),會(huì)加載所有插件,耗時(shí)較長(zhǎng),20s~1min。

·增加一個(gè)新插件需要重新編譯整個(gè) IDE。

·默認(rèn)只支持 nodejs 語(yǔ)言,其它語(yǔ)言可在擴(kuò)展處安裝,或者在 theia 自帶的命令行終端中安裝。

·通過(guò)界面操作,只能打開(kāi)服務(wù)器上已有的項(xiàng)目或新建文件夾。不能上傳項(xiàng)目,但是可以在 theia 上自帶的終端執(zhí)行 git 命令拉取 git 項(xiàng)目,也可以通過(guò)其它命令如 rsync 或 scp 命令自行將本地項(xiàng)目拷貝到遠(yuǎn)程服務(wù)器。

2 theia 安裝

有如下幾種方式:

·從源代碼克隆、構(gòu)建和運(yùn)行

·基于自定義 package.json 構(gòu)建包啟動(dòng)

·基于預(yù)配置的 Docker Image 構(gòu)建

·在 gitpod 中啟動(dòng)

本文介紹第 1 種方式,即通過(guò)源碼安裝。

為了提高安裝速速,并且避免網(wǎng)絡(luò)錯(cuò)誤,可在騰訊云硅谷買(mǎi)一臺(tái) CVM,操作系統(tǒng)為 ubuntu 18。

安裝 node 10 和 yarn:

wget https://nodejs.org/dist/latest-v10.x/node-v10.22.0-linux-x64.tar.gz

tar zxvf node-v10.21.0-linux-x64.tar.gz -C /usr/local

echo "export PATH=/usr/local/node-v10.21.0-linux-x64/bin:$PATH" >> /etc/profile

echo "export PATH=/usr/local/node-v10.21.0-linux-x64/bin:$PATH" >> /etc/bash.bashrc 

source /etc/profile


npm install -g yarn

theia 前置安裝:

apt-get install -y g++ gcc make

apt-get install -y pkg-config

apt-get install -y build-essential

apt-get install -y libx11-dev libxkbfile-dev

apt-get install -y git

安裝 theia

git clone https://github.com/eclipse-theia/theia

cd theia

yarn

cd examples/browser

yarn run start --hostname 0.0.0.0 --port 3000

如果安全組開(kāi)放了 3000 端口,此時(shí)便可以通過(guò) http://IP:3000 訪問(wèn)了。

3 登錄認(rèn)證

theia 沒(méi)有登錄認(rèn)證功能,任何人都可以訪問(wèn),不安全,可借助 ngx_http_auth_digest 模塊進(jìn)行登錄認(rèn)證。

下載 ngx_http_auth_digest:

wget https://github.com/atomx/nginx-http-auth-digest/archive/v1.0.0.tar.gz

tar zxvf v1.0.0.tar.gz

編譯安裝 nginx 時(shí),加上參數(shù):

--add-module=nginx-http-auth-digest的路徑

生成登錄密碼:

apt-get install -y apache2-utils

htdigest -c /usr/local/passwd.digest theia admin

其中

·/usr/local/passwd.digest 為密碼文件路徑

·theia 為 realm,必須與后面要提到的 nginx 配置文件保持一致。

·admin 為登錄用戶(hù)名

在 nginx 配置文件中添加 server 段:

server {

listen 80 default_server;


    auth_digest_user_file /usr/local/passwd.digest;

    auth_digest_shm_size  8m;   # the storage space allocated for tracking active sessions

    

    location / {

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";


        auth_digest 'theia';

        auth_digest_timeout 60s;    # allow users to wait 1 minute between receiving the

                                    # challenge and hitting send in the browser dialog box

        auth_digest_expires 600s;   # after a successful challenge/response, let the client

                                    # continue to use the same nonce for additional requests

                                    # for 600 seconds before generating a new challenge

        auth_digest_replays 60;     # also generate a new challenge if the client uses the

                                    # same nonce more than 60 times before the expire time limit


        proxy_pass http://127.0.0.1:3000;

    }

}

其中,

·auth_digest_user_file 必須與設(shè)置密碼的 htdigest 命令中的密碼文件參數(shù)保持一致。

·auth_digest 必須與設(shè)置密碼的 htdigest 命令的 realm 參數(shù)保持一致。

·proxy_set_header Upgrade $http_upgrade; 

 proxy_set_header Connection "upgrade";

    這兩行必須有,否則不能正確代理 websocket。

這個(gè)配置相當(dāng)于每 (auth_digest_timeout+auth_digest_expires)=660s 允許 auth_digest_shm_size/((48 + ceil(auth_digest_replays/8))bytes)=(8*1024*1024)/(48+8)=149.8k 次請(qǐng)求,即每 660s 允許約 149.8k 次請(qǐng)求。登錄認(rèn)證 10min 后過(guò)期。

最后啟動(dòng) nginx,會(huì)彈出登錄認(rèn)證框,輸入用戶(hù)名和密碼后即可登錄,跳轉(zhuǎn)到 theia 界面。

為了更加安全,需要先停掉 theia,將啟動(dòng)方式

yarn run start --hostname 0.0.0.0 --port 3000

改為:

yarn start

默認(rèn)監(jiān)聽(tīng)端口為 3000。

參考

https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#quick-start

https://www.nginx.com/resources/wiki/modules/auth_digest

https://www.yangyang.cloud/blog/2015/07/17/session-with-express-and-nginx

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶(hù)可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買(mǎi)頁(yè)直接購(gòu)買(mǎi)。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢(xún)時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家