Etherpad:修訂版本之間的差異

出自福留子孫
跳轉到: 導覽搜尋
四、參考文件
一、安裝
 
(未顯示3位用戶所作出之89次版本)
第 1 行: 第 1 行:
[[分類:網路服務]]
+
[[分類:Etherpad]]
 
===一、安裝===
 
===一、安裝===
 
前置準備:
 
前置準備:
第 5 行: 第 5 行:
 
# root 權限
 
# root 權限
 
安裝步驟
 
安裝步驟
 +
#先在 DS720+ 安裝 git server ,使得可以使用 git clone … 指令。
 
#進 OS 取得 root 權限
 
#進 OS 取得 root 權限
 
#cd 到 web 服務的根目錄
 
#cd 到 web 服務的根目錄
#git clone https://github.com/ether/etherpad-lite.git<br/>會建立 etherpad-lite 目錄
+
#git clone https&#58;//github.com/ether/etherpad-lite.git 安裝資料夾<br/>省略安裝資料夾則會安裝到 etherpad-lite 資料夾<br/>(士賢:從etherpad官網下載,再解壓縮再將資料夾上傳到伺服器)<br/>會建立安裝資料夾
 
#chown -R adminNas:administrators ./etherpad-lite
 
#chown -R adminNas:administrators ./etherpad-lite
 +
#檢查 etherpad-lite 路徑是否沒有任何可操作之權限,若是:chmod -R 777 ./etherpad-lite
 
#回復到 adminNas 的帳號身份
 
#回復到 adminNas 的帳號身份
 
#cd etherpad-lite
 
#cd etherpad-lite
#bin/run.sh
+
#bin/run.sh<br/>(士賢:src/bin/run.sh)
 
納入排程:
 
納入排程:
 
#去「DSM/控制台/任務排程表/新增」
 
#去「DSM/控制台/任務排程表/新增」
第 22 行: 第 24 行:
 
#bin/run.sh --root
 
#bin/run.sh --root
 
#export NODE_ENV=production
 
#export NODE_ENV=production
 +
 +
====debug====
 +
若是安裝啟動後,首頁及頁面CSS顯示出問題(跟預設不同)
 +
*可以更改setting.json的下面這行(大約在295行),將true改成false 
 +
*::  "minify": true,  ----->>  "minify": false,
 +
*(如果為 true,則所有 css 和 js 在傳送到客戶端之前都會被縮小。)
  
 
===二、使用===
 
===二、使用===
#http://jendo.org:9001
+
#http://網址:9001
#http://jendo.org:9001/p/頁名 // 進入某頁
+
#http://網址:9001/p/頁名 // 進入某頁
#http://jendo.org:9001/admin // 安裝 Plugin 或編輯設定檔(暫未能進入)
+
#http://網址:9001/admin // 安裝 Plugin 或編輯設定檔<br/>設定要可更改,須先「chmod 777 setting.json」
 +
#*重新啟動:http://網址:9001/admin/settings 中有「存設定」與「重啟 Etherpad」的按鈕
 +
#*#「存設定」按了也不會存入新的設定
 +
#*#「重啟 Etherpad」按鈕按了可以關停 Etherpad ,但不會重新啟動。
 +
#*管理外掛:http://網址:9001/admin/plugins
 +
#*運行資訊:http://網址:9001/admin/plugins/info
 +
#重新啟動 Etherpad :
 +
#*先利用「http://網址:9001/admin/settings」的「重啟 Etherpad」按鈕,會關停 Etherpad ,但重啟會失敗。
 +
#*再執行「DSM / 控制台 / 任務排程表 / run2.sh」使新設定生效。
  
 
====刪除一篇便箋(pad)====
 
====刪除一篇便箋(pad)====
 
http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......<br/>apikey 去 APIKEY.txt 中查閱
 
http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......<br/>apikey 去 APIKEY.txt 中查閱
  
===三、進階設定===
+
===三、有用外掛===
 +
====(一)插入圖照====
 +
:名稱:previewimages
 +
:用法:直接在便箋文中插入圖照連結,會自動調大小顯示圖照。
 +
:補充:
 +
:#使用維基共享資源圖照時,可利用各種尺寸的縮圖
 +
:#同一行可以插入兩個圖照連結
 +
====(二)插入影片====
 +
:名稱:embedmedia
 +
:用法:安裝完會在工具列出現「Embed Media」圖示,按此圖示,輸入影片連結,可嵌入影片。
 +
====(三)設定字的大小====
 +
:名稱:font_size
 +
:用法:安裝完會在工具列出現「字級尺寸」圖示,是下拉選單。先選定字串,再設定字級。
 +
====(四)列出所有的 pad(便箋)====
 +
:名稱:padlist2
 +
:用法:網址列輸入「http://網址:9001/list 」,會列出所有便箋,並可以蒐尋字串找出「便箋名」含蒐尋字串的便箋。
 +
 
 +
====(五)可以 wiki 格式匯出單一 pad(便箋)的內容====
 +
:名稱:mediawiki
 +
:用法:安裝完會在匯出功能中,多一個 MediaWiki。
 +
:補充:多層文字的完整度不如預設的 Plain text ,多媒體完整度要靠預設的 Etherpad 格式(json 語法)
 +
:#多層列表只會表現出單層
 +
:#換行不會產生空白行
 +
:#沒有段落功能(等號)
 +
:#影片與圖照都轉成單層中括號
 +
:#加粗轉為三個單引號
 +
 
 +
===四、進階設定===
 
編輯 settings.json
 
編輯 settings.json
 
====(一)使用 MySQL 在資料====
 
====(一)使用 MySQL 在資料====
第 50 行: 第 93 行:
 
},</pre>
 
},</pre>
  
====(二)須登入(至今皆失敗)====
+
在重新開etherpad前,請先去設定的MySQL資料庫(例如使用 adminer),在資料表已有其他字集內容之前,將資料表的校對字集設定(Collation)與上面"charset"相符,否則 etherpad 會無法開啟。
#"requireAuthentication" : true,
+
 
 +
====(二)須登入才能使用 Etherpad====
 +
#"requireAuthentication": true,
 +
#"requireAuthorization": false,
 
#"users":{} // 諸帳號
 
#"users":{} // 諸帳號
  
第 79 行: 第 125 行:
 
*由 src/static/css/pad/icons.css 中查到上述各類別的字形編碼
 
*由 src/static/css/pad/icons.css 中查到上述各類別的字形編碼
 
*由 src/static/font/fontawesome-etherpad.svg 中的各 glyph 標籤 unicode 屬性,查出其向量繪圖資料
 
*由 src/static/font/fontawesome-etherpad.svg 中的各 glyph 標籤 unicode 屬性,查出其向量繪圖資料
 +
===四、檔案列表===
 +
<pre>ep_&lt;plugin&gt;/
 +
├ .github/
 +
│  └ workflows/
 +
│    └ npmpublish.yml  ◄─ GitHub workflow to auto-publish on push
 +
├ static/
 +
│  ├ css/              ◄─ static .css files
 +
│  ├ images/            ◄─ static image files
 +
│  ├ js/
 +
│  │  └ index.js        ◄─ static client-side code
 +
│  └ tests/
 +
│    ├ backend/
 +
│    │  └ specs/      ◄─ backend (server) tests
 +
│    └ frontend/
 +
│        └ specs/      ◄─ frontend (client) tests
 +
├ templates/            ◄─ EJS templates (.html, .js, .css, etc.)
 +
├ locales/
 +
│  ├ en.json            ◄─ English (US) strings
 +
│  └ qqq.json          ◄─ optional hints for translators
 +
├ .travis.yml          ◄─ Travis CI config
 +
├ LICENSE
 +
├ README.md
 +
├ ep.json              ◄─ Etherpad plugin definition
 +
├ index.js              ◄─ server-side code
 +
├ package.json
 +
└ package-lock.json
 +
</pre>
  
===四、參考文件===
+
===五、啟動解說===
 +
<pre>#!/bin/sh
 +
MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1
 +
cd "${MY_DIR}/../.." || exit 1
 +
. src/bin/functions.sh
 +
exec node $(compute_node_args) src/node/server.js "$@"</pre>
 +
 
 +
這是一個 shell 腳本,它使用 Node.js 執行一個 JavaScript 文件。讓我們逐行解析:
 +
 
 +
# #!/bin/sh (如何執行)<br>這是一個 shebang 行,它告訴系統用哪個解釋器來執行腳本。在這個例子中,它指定用 /bin/sh,即 Bourne shell 或其相容的 shell。
 +
# MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 (執行路徑設定)<br> 這行命令首先通過 ${0%/*} 獲取腳本所在的目錄,$0 表示腳本本身的路徑,${0%/*} 則是去掉文件名,只保留目錄路徑。<br> 然後使用 cd 切換到該目錄,並使用 pwd -P 獲取實際的絕對路徑,將其賦值給變量 MY_DIR。<br>如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
 +
# cd "${MY_DIR}/../.." || exit 1 (切換執行路徑)<br> 切換到 MY_DIR 變量所指向的目錄的上兩級目錄。<br>如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
 +
# . src/bin/functions.sh (常數參數設定)<br>使用點命令(.)來源(source)src/bin/functions.sh 文件。<br>這將執行該文件中的所有命令,並將其中定義的函數和變量導入當前腳本的環境。<br>可以使腳本中的函數(如 compute_node_args)在當前腳本中可用。
 +
#  exec node $(compute_node_args) src/node/server.js "$@" (執行伺服器)<br>這行命令與之前解釋的命令相同。<br>它在當前 shell 進程中使用 Node.js 執行 src/node/server.j 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。
 +
*<mwdetails><summary>第五行程式碼更詳細解說</summary>這條命令是在 Bash 環境下運行的,用於使用 Node.js 執行一個 JavaScript 文件。讓我們逐步解析這條命令:
 +
*#exec<br>exec 是一個 shell 內建命令,它用於在當前進程中執行指定的命令,而不是創建一個新的進程。<br>這意味著當你使用 exec 執行一個命令時,該命令會替換當前 shell 進程,而不是在新的子進程中運行。當命令執行完畢後,進程將終止,而不是返回到原始的 shell 進程。
 +
*#node<br>node 是 Node.js 的命令行工具,用於執行 JavaScript 文件。<br>Node.js 是一個用於開發伺服器端應用程式的 JavaScript 運行環境。
 +
*#$(compute_node_args)<br>這是一個命令替換(command substitution)表達式。<br>它將會執行 compute_node_args 腳本(假設它是一個可執行腳本),並將其輸出插入到當前位置。<br>這個腳本可能會計算並生成一些 Node.js 需要的參數,例如指定的 Node.js 版本、記憶體限制等。
 +
*#src/node/server.js<br>這是要執行的 JavaScript 文件的路徑。<br>在這個例子中,這是一個 Node.js 伺服器應用程式的入口點。
 +
*#"$@"<br>這是一個特殊的 shell 參數,代表所有傳遞給當前腳本或函數的參數。<br>在這裡,它將會把所有參數傳遞給 server.js 文件。<br>綜上所述,這條命令的功能是在當前 shell 進程中使用 Node.js 執行 src/node/server.js 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。
 +
</mwdetails>
 +
總結一下,這個腳本的目的是確保在正確的目錄下執行 Node.js 伺服器應用程式,並在需要時使用額外的命令行參數。在執行過程中,它還導入了一些函數和變量,可能對腳本的後續操作有用。
 +
 
 +
===六、參考外掛===
 +
[https://static.etherpad.org/index.html 外掛列表]:
 +
#[https://www.npmjs.com/package/ep_embedmedia ep_embedmedia]:嵌入媒體 (youtube、vimeo 等)。
 +
#[https://www.npmjs.com/package/ep_image_insert ep_image_insert]:可插入圖像並調整圖像大小的功能。
 +
#[https://www.npmjs.com/package/ep_webrtc ep_webrtc]:WebRTC的音頻/視頻聊天的功能。
 +
#[https://www.npmjs.com/package/ep_mathjax ep_mathjax]:支持 LaTeX STylee 數學公式。
 +
#[https://www.npmjs.com/package/ep_mediawiki ep_mediawiki]:在 Etherpad 中編輯並導出為 mediawiki
 +
#[https://www.npmjs.com/package/ep_real_time_chat ep_real_time_chat]:即時聊天更新。
 +
#[https://www.npmjs.com/package/ep_inline_voting?activeTab=readme ep_inline_voting]:添加選項以對部分文本進行投票
 +
#[https://www.npmjs.com/package/ep_catalog_plugin ep_catalog_plugin]:etherpad目錄插件
 +
#[https://www.npmjs.com/package/ep_align ep_­align]:用於設置段落的左對齊、居中對齊、右對齊或完全對齊的功能。
 +
#[https://www.npmjs.com/package/ep_markdown ep_­markdown]:可應用 Markdown 編輯和導出。
 +
#[https://www.npmjs.com/package/ep_font_size ep_­font_­size]:可改變文字大小的功能。
 +
#[https://www.npmjs.com/package/ep_font_color ep_font_color]:可改變文字顏色的功能。
 +
#[https://www.npmjs.com/package/ep_print_preview_pdf ep_print_preview_pdf]:列印及預覽 PDF
 +
#[https://www.npmjs.com/package/ep_print ep_print]:列印功能。
 +
#[https://www.npmjs.com/package/ep_desktop_notifications ep_desktop_notifications]:接收聊天桌面通知。
 +
#[https://www.npmjs.com/package/ep_themes ep_themes]:改變 theme 的不同部分的主題、樣式和顏色。
 +
#[https://www.npmjs.com/package/ep_guest ep_guest]:限制未登錄的使用者有限的訪問許可。
 +
#[https://www.npmjs.com/package/ep_openid_connect ep_openid_connect]:限制特定的登錄者帳號密碼
 +
#[https://www.npmjs.com/package/ep_table_of_contents ep_table_of_contents]:表格相關]
 +
#[https://www.npmjs.com/package/ep_private_pad ep_private_pad]: 用戶註冊和登錄以管理私人pad (安裝會導致 EtherPad 無法開啟)
 +
#[https://www.npmjs.com/package/ep_tableau ep_tableau]: 出現表格選單,可以新增表格、刪除表格
 +
 
 +
===七、參考文件===
 
#https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝
 
#https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝
 
#https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html
 
#https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html
第 88 行: 第 208 行:
  
 
===附錄、DS218上共筆頁列表===
 
===附錄、DS218上共筆頁列表===
 +
SQL 指令:SELECT `key` FROM store WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%'
 +
 +
資料表中,key 可以有如下涵意
 +
#pad:頁名:該頁當前版本內容
 +
#pad:頁名:revs:數字:版本
 +
#pad:頁名:chat:數字:聊天
 +
 +
====一些頁面說明:====
 +
'''當前諸頁列表:'''
 +
<sqltbl>
 +
dbname=etherpad
 +
sql=SELECT if(char_length(`key`)>20,concat('pad:<br/>',substring(`key`,5)),`key`),caption FROM store a left join pageCaption b on a.`key`=b.page WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%'
 +
</sqltbl>
 +
 +
<sqltbl>
 +
dbname=etherpad
 +
sql=SELECT page,caption,b.`key` FROM pageCaption a left join store b on a.page=b.`key` where b.`key` is null
 +
</sqltbl>

2024年2月21日 (三) 15:09的最新修訂版本

一、安裝

前置準備:

  1. 一個 OS 專用於 etherpad 的帳號,如 adminNas
  2. root 權限

安裝步驟

  1. 先在 DS720+ 安裝 git server ,使得可以使用 git clone … 指令。
  2. 進 OS 取得 root 權限
  3. cd 到 web 服務的根目錄
  4. git clone https://github.com/ether/etherpad-lite.git 安裝資料夾
    省略安裝資料夾則會安裝到 etherpad-lite 資料夾
    (士賢:從etherpad官網下載,再解壓縮再將資料夾上傳到伺服器)
    會建立安裝資料夾
  5. chown -R adminNas:administrators ./etherpad-lite
  6. 檢查 etherpad-lite 路徑是否沒有任何可操作之權限,若是:chmod -R 777 ./etherpad-lite
  7. 回復到 adminNas 的帳號身份
  8. cd etherpad-lite
  9. bin/run.sh
    (士賢:src/bin/run.sh)

納入排程:

  1. 去「DSM/控制台/任務排程表/新增」
  2. 任務名稱:可取「run etherpad」(無法用英文)
  3. 使用者帳號:adminNas
  4. 「排程/在以下日期執行/不重複」
  5. 任務設定:「bash /volume1/web/etherpad-lite/bin/run.sh」
  6. 回到「控制台/任務排程表」挑選剛才新增的任務,按「執行」按鈕

額外的安裝布驟:

  1. bin/run.sh --root
  2. export NODE_ENV=production

debug

若是安裝啟動後,首頁及頁面CSS顯示出問題(跟預設不同)

  • 可以更改setting.json的下面這行(大約在295行),將true改成false
    "minify": true, ----->> "minify": false,
  • (如果為 true,則所有 css 和 js 在傳送到客戶端之前都會被縮小。)

二、使用

  1. http://網址:9001
  2. http://網址:9001/p/頁名 // 進入某頁
  3. http://網址:9001/admin // 安裝 Plugin 或編輯設定檔
    設定要可更改,須先「chmod 777 setting.json」
  4. 重新啟動 Etherpad :

刪除一篇便箋(pad)

http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......
apikey 去 APIKEY.txt 中查閱

三、有用外掛

(一)插入圖照

名稱:previewimages
用法:直接在便箋文中插入圖照連結,會自動調大小顯示圖照。
補充:
  1. 使用維基共享資源圖照時,可利用各種尺寸的縮圖
  2. 同一行可以插入兩個圖照連結

(二)插入影片

名稱:embedmedia
用法:安裝完會在工具列出現「Embed Media」圖示,按此圖示,輸入影片連結,可嵌入影片。

(三)設定字的大小

名稱:font_size
用法:安裝完會在工具列出現「字級尺寸」圖示,是下拉選單。先選定字串,再設定字級。

(四)列出所有的 pad(便箋)

名稱:padlist2
用法:網址列輸入「http://網址:9001/list 」,會列出所有便箋,並可以蒐尋字串找出「便箋名」含蒐尋字串的便箋。

(五)可以 wiki 格式匯出單一 pad(便箋)的內容

名稱:mediawiki
用法:安裝完會在匯出功能中,多一個 MediaWiki。
補充:多層文字的完整度不如預設的 Plain text ,多媒體完整度要靠預設的 Etherpad 格式(json 語法)
  1. 多層列表只會表現出單層
  2. 換行不會產生空白行
  3. 沒有段落功能(等號)
  4. 影片與圖照都轉成單層中括號
  5. 加粗轉為三個單引號

四、進階設定

編輯 settings.json

(一)使用 MySQL 在資料

用多行註解註解掉:

"dbType": "dirty",
"dbSettings": {
  "filename": "var/dirty.db"
},

改成:

"dbType" : "mysql",
"dbSettings" : {
  "user":     "某使用者",
  "host":     "localhost",
  "port":     3306,
  "password": "密碼",
  "database": "etherpad",
  "charset":  "utf8mb4"
},

在重新開etherpad前,請先去設定的MySQL資料庫(例如使用 adminer),在資料表已有其他字集內容之前,將資料表的校對字集設定(Collation)與上面"charset"相符,否則 etherpad 會無法開啟。

(二)須登入才能使用 Etherpad

  1. "requireAuthentication": true,
  2. "requireAuthorization": false,
  3. "users":{} // 諸帳號

三、圖示

圖示是被做成字型使用,並且套用「Font_Awesome_5」

  • 由主介面看原始碼,查 button 標籤的 class 屬性,查到諸圖示類別有:
    1. buttonicon-bold
    2. buttonicon-italic
    3. buttonicon-underline
    4. buttonicon-strikethrough
    5. buttonicon-insertorderedlist
    6. buttonicon-insertunorderedlist
    7. buttonicon-indent
    8. buttonicon-outdent
    9. buttonicon-undo
    10. buttonicon-redo
    11. buttonicon-clearauthorship
    12. buttonicon-import_export
    13. buttonicon-history
    14. buttonicon-savedRevision
    15. buttonicon-settings
    16. buttonicon-embed
    17. buttonicon-showusers
    18. btn-primary
    19. btn-default
    20. chatloadmessages
  • 由 src/static/css/pad/icons.css 中查到上述各類別的字形編碼
  • 由 src/static/font/fontawesome-etherpad.svg 中的各 glyph 標籤 unicode 屬性,查出其向量繪圖資料

四、檔案列表

ep_<plugin>/
 ├ .github/
 │  └ workflows/
 │     └ npmpublish.yml  ◄─ GitHub workflow to auto-publish on push
 ├ static/
 │  ├ css/               ◄─ static .css files
 │  ├ images/            ◄─ static image files
 │  ├ js/
 │  │  └ index.js        ◄─ static client-side code
 │  └ tests/
 │     ├ backend/
 │     │  └ specs/       ◄─ backend (server) tests
 │     └ frontend/
 │        └ specs/       ◄─ frontend (client) tests
 ├ templates/            ◄─ EJS templates (.html, .js, .css, etc.)
 ├ locales/
 │  ├ en.json            ◄─ English (US) strings
 │  └ qqq.json           ◄─ optional hints for translators
 ├ .travis.yml           ◄─ Travis CI config
 ├ LICENSE
 ├ README.md
 ├ ep.json               ◄─ Etherpad plugin definition
 ├ index.js              ◄─ server-side code
 ├ package.json
 └ package-lock.json

五、啟動解說

#!/bin/sh
MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1
cd "${MY_DIR}/../.." || exit 1
. src/bin/functions.sh
exec node $(compute_node_args) src/node/server.js "$@"

這是一個 shell 腳本,它使用 Node.js 執行一個 JavaScript 文件。讓我們逐行解析:

  1. #!/bin/sh (如何執行)
    這是一個 shebang 行,它告訴系統用哪個解釋器來執行腳本。在這個例子中,它指定用 /bin/sh,即 Bourne shell 或其相容的 shell。
  2. MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 (執行路徑設定)
    這行命令首先通過 ${0%/*} 獲取腳本所在的目錄,$0 表示腳本本身的路徑,${0%/*} 則是去掉文件名,只保留目錄路徑。
    然後使用 cd 切換到該目錄,並使用 pwd -P 獲取實際的絕對路徑,將其賦值給變量 MY_DIR。
    如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
  3. cd "${MY_DIR}/../.." || exit 1 (切換執行路徑)
    切換到 MY_DIR 變量所指向的目錄的上兩級目錄。
    如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
  4. . src/bin/functions.sh (常數參數設定)
    使用點命令(.)來源(source)src/bin/functions.sh 文件。
    這將執行該文件中的所有命令,並將其中定義的函數和變量導入當前腳本的環境。
    可以使腳本中的函數(如 compute_node_args)在當前腳本中可用。
  5. exec node $(compute_node_args) src/node/server.js "$@" (執行伺服器)
    這行命令與之前解釋的命令相同。
    它在當前 shell 進程中使用 Node.js 執行 src/node/server.j 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。
  • 第五行程式碼更詳細解說這條命令是在 Bash 環境下運行的,用於使用 Node.js 執行一個 JavaScript 文件。讓我們逐步解析這條命令:
    1. exec
      exec 是一個 shell 內建命令,它用於在當前進程中執行指定的命令,而不是創建一個新的進程。
      這意味著當你使用 exec 執行一個命令時,該命令會替換當前 shell 進程,而不是在新的子進程中運行。當命令執行完畢後,進程將終止,而不是返回到原始的 shell 進程。
    2. node
      node 是 Node.js 的命令行工具,用於執行 JavaScript 文件。
      Node.js 是一個用於開發伺服器端應用程式的 JavaScript 運行環境。
    3. $(compute_node_args)
      這是一個命令替換(command substitution)表達式。
      它將會執行 compute_node_args 腳本(假設它是一個可執行腳本),並將其輸出插入到當前位置。
      這個腳本可能會計算並生成一些 Node.js 需要的參數,例如指定的 Node.js 版本、記憶體限制等。
    4. src/node/server.js
      這是要執行的 JavaScript 文件的路徑。
      在這個例子中,這是一個 Node.js 伺服器應用程式的入口點。
    5. "$@"
      這是一個特殊的 shell 參數,代表所有傳遞給當前腳本或函數的參數。
      在這裡,它將會把所有參數傳遞給 server.js 文件。
      綜上所述,這條命令的功能是在當前 shell 進程中使用 Node.js 執行 src/node/server.js 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。

總結一下,這個腳本的目的是確保在正確的目錄下執行 Node.js 伺服器應用程式,並在需要時使用額外的命令行參數。在執行過程中,它還導入了一些函數和變量,可能對腳本的後續操作有用。

六、參考外掛

外掛列表

  1. ep_embedmedia:嵌入媒體 (youtube、vimeo 等)。
  2. ep_image_insert:可插入圖像並調整圖像大小的功能。
  3. ep_webrtc:WebRTC的音頻/視頻聊天的功能。
  4. ep_mathjax:支持 LaTeX STylee 數學公式。
  5. ep_mediawiki:在 Etherpad 中編輯並導出為 mediawiki
  6. ep_real_time_chat:即時聊天更新。
  7. ep_inline_voting:添加選項以對部分文本進行投票
  8. ep_catalog_plugin:etherpad目錄插件
  9. ep_­align:用於設置段落的左對齊、居中對齊、右對齊或完全對齊的功能。
  10. ep_­markdown:可應用 Markdown 編輯和導出。
  11. ep_­font_­size:可改變文字大小的功能。
  12. ep_font_color:可改變文字顏色的功能。
  13. ep_print_preview_pdf:列印及預覽 PDF
  14. ep_print:列印功能。
  15. ep_desktop_notifications:接收聊天桌面通知。
  16. ep_themes:改變 theme 的不同部分的主題、樣式和顏色。
  17. ep_guest:限制未登錄的使用者有限的訪問許可。
  18. ep_openid_connect:限制特定的登錄者帳號密碼
  19. ep_table_of_contents:表格相關]
  20. ep_private_pad: 用戶註冊和登錄以管理私人pad (安裝會導致 EtherPad 無法開啟)
  21. ep_tableau: 出現表格選單,可以新增表格、刪除表格

七、參考文件

  1. https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝
  2. https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html
  3. https://gis90.github.io/articles/7544/
  4. http://www.unixlinux.online/unixlinux/gdliunx/linuxj/201703/96960.html
  5. 以太墊的安裝與使用

附錄、DS218上共筆頁列表

SQL 指令:SELECT `key` FROM store WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%'

資料表中,key 可以有如下涵意

  1. pad:頁名:該頁當前版本內容
  2. pad:頁名:revs:數字:版本
  3. pad:頁名:chat:數字:聊天

一些頁面說明:

當前諸頁列表: