2017 Fall 主機設定

在 2017 年 Spring, 電腦輔助設計室購入兩台 HP 伺服器, 分別是 HPE ProLiant ML10 Gen9 ServerHPE ProLiant ML350 Gen9 Server, 操作系統為 Ubuntu 16.04, 根據 Ubuntu LTS 通告, 使用週期可至 2021 年, 預計在 2019 年 Spring 由新伺服器接手提供服務.

近端、區網與雲端其實是同一端

自 2017 年 10 月起, 已經沒有免費的 OpenShift 雲端服務可以使用, 遠端較穩定的 html + javascript hosting 只剩下 Github Pages, 但是就課程與研究所需的近端、區網與雲端上的各項服務而言, 雲端的免費套餐終將越來越縮水的情況下, 強化近端與區網上的軟硬體服務, 將會更加重要.

這個學期工作站室的伺服器, 將全面使用 Fossil SCM 管理所有的課程與研究專案, 每一位上課的學員都將在近端與區網擁有一個 Fossil 倉儲, 用來存放與課程相關的所有內容.

Github 與 Bitbuckert 等雲端免費方案仍然扮演重要角色, 只是在無廣域網路連線與區域網路連線的情況下, 各學員的各項課程內容演練與操作資料提交, 將能在隨身的可攜系統上完成, 之後再配合區網與雲端網路的連線, 設法在分組協同的模式下, 將近端資料同步到區網與雲端主機. 因此 2017 Fall 起, 如何在近端、區網與雲端不同硬體環境下, 保持倉儲資料版本的同步, 就是另外一個重點.

主機設定

接下來, 我們透過 https://cadpb.kmol.info/40523201 學員倉儲, 來說明提供 Fossil SCM 服務的主機如何設定.

首先當然是要先掌握 kmol.info 網域的主導權, 透過網域 DNS 的控管, 讓區域網路中的主機可以在 A 與 AAA 設定下的 IPv4 與 IPv6 網址呼應, 例如: cadpb.kmol.info 指的就是 cadp 電腦輔助設計實習課程中的 b 班所使用的伺服器名稱.

如前所述, 這些伺服器都是安裝 Ubuntu 16.04 Server 操作系統 + OpenSSH, 目的是希望在 Self-signed Certificate 的模式下運作.

接著必須根據 多 Fossil SCM 倉儲主機 的架構, 分別安裝 Fossil SCM 與 Stunnel.

其中, 特別將 Fossil SCM 伺服的目錄指向 /home/cadpa2017, 表示各操作系統帳號所有人, 可以自行利用 fossil 指令, 建立多個倉儲, 此一模式就是同一台主機可以透過網域來界定上課班級, 操作系統帳號可以界定大分組名稱, 而採用學號的倉儲名稱則可以用來界定參與協同的所有者.

因此, 一旦各倉儲所有者掌握管理該 .fossil 檔案的總管理權之後, 可以將其他學員納入自己所掌控的 .fossil users 中, 視實際需求賦於各帳號不同權限. 且可透過制式的 URL, 在得知各班各分組的成員學號情況下, 連結至各學員的倉儲中進行資料檢視.

機械設計專案的資料格式

由於設計是一種利用口語、文字、2D、3D、數學與實體等形式, 所完成的明確與具體表達, 過程中必須仔細思考、多方考量, 而且在不同時段與多人協同合作的結果, 將會產生許多不同的資料版本.

加上二十一世紀的機械可說是各種固體、流體與軟體元件精巧組合而成, 能達成特定功能之器物. 因此機械設計專案過程所產生的各種資料及版本, 更需要特別關注並竭力保存, 以便讓新舊學員在自學、執行與想像的創造力發揮階段, 擁有可持續改進的工具之外, 也能有保有多元開放的完整學習資料.

在這樣對於機械設計表達、內容物與創造流程的認知下, 我們會希望學員在口語表達階段除了錄音之外, 能夠利用 Reveal.js 投影片寫下文字資料, 能儘量採用開放的設計格式, 在 Fossil SCM 倉儲中保留可以持續追蹤的文字資料格式, 2D/3D 的末端二位元檔案, 並非版次管理系統所關注並保留的重點, 學員該紀錄的是, 各種末端檔案是在何種情況下, 根據哪些約束條件, 用甚麼方法產生, 隨後的使用者在檢視歷史資料的同時, 應該可以根據這些較能持續改進的文字資料, 配合不同的情況, 使用不同的工具, 建立其所需的二位元末端檔案.

換言之, 一個多元開放的機械設計專案, 在導入各種軟硬體組態管理的時間點, 必須全面檢視所用的工具, 所處的環境, 盡量採用能持續改進的專案資料格式, 而非只儲存不知前因與狀況下所產生的封閉格式檔案.

文字、大綱與程式

當上述 Fossil SCM 主機的設定, 可以讓各學員個別管理 .fossil 倉儲檔案之後, 利用瀏覽器介面可以控管 users, 可以利用 wiki 建立快寫網頁, 可以將各種影片檔案以 attach 方式附加在 wiki 頁面中, 也可以在專案進行過程利用 tickets 追蹤設計問題, 並在專案階段性任務完成時, 以 technote 紀錄成果.

除了利用瀏覽器介面維護的協同內容之外, 機械設計過程中採 Pelican Blog 紀錄的網誌, 採 Reveal.js 格式的簡報網頁, 以及各種計算機程式檔案, 則必須在文字、大綱與程式架構下來進行管理.

在此我們所採用的管理工具為 Leo Editor, SciTE 與 Eric6.

Leo Editor 是一套採用 Python3 + PyQt5 所編寫的大綱管理套件, 其任務是負責利用大綱架構管理鬆散的 Pelican Blog, 並且利用 button 執行操作系統指令, 還肩負透過 Python3 程式碼所組成的 button, 在近端啟動 IPv4 與 IPv6 WWW 伺服模擬環境, 能讓學員在近端檢視所有之後要推送到區網與雲端中的網誌與投影片內容.

SciTE 則提供文字編輯以及 Python3 與 ANSI C 程式執行環境, 而 Eric6 則用於 PyQt5 程式的開發.

純 IPv6 主機設定

目前在系主幹上的電腦已經可以選擇透過 IPv6 DHCP 或自行設定 IPv6 位址連線上網.

在安裝 Ubuntu 16.04 Server 時, 選擇安裝 OpenSSH 模組, 之後則必須透過 IPv4/IPv6 雙支援的 Squid Proxy Server 才可以利用 apt 維護系統所安裝的套件.

apt Proxy 的設定必須在 /etc/apt/atp.conf 中納入:

Acquire::http::Proxy "http://[2001:288:6004:17::87]:3128";

直接存檔後, apt 指令就可以透過 Proxy Server 連接到只支援 IPv4 網路協定的電腦.

Ubuntu Server 安裝後, 若希望安裝 ubuntu-desktop:

sudo apt install ubuntu-desktop

接著必須在 Firefox 瀏覽中設定 Proxy Server 代理主機, 否則無法連到只支援 IPv4 網路協定的網站. 其中 Firefox 的 Proxy Server 設定, Proxy Server 的 IPv6 網址無需中括號.

其次若希望採用自訂的 IPv6 網路設定, 可以修改 /etc/network/interfaces 檔案

啟用 inet6 static or auto

address 2001... 
netmask 64 
gateway 2001... 
dns-nameservers 2001:b000:168::1

最後則安裝設定中文輸入法:

sudo apt install fcitx fcitx-chewing

然後修改系統的 language support 將輸入法改為 fcitx 設定後, 必須登出再登入, 讓設定生效, input method 則選擇 chewing.

各階段設定檔案

Stunnel 的設定, 目的在與 Fossil SCM 結合, 提供 https 的連線代理.

/etc/stunnel/stunnel.conf

[https]
accept = your_IPv4_ip:443
accept = :::443
cert = /etc/stunnel/localhost.crt
key = /etc/stunnel/localhost.key
exec = /usr/bin/fossil
execargs = /usr/bin/fossil http /home/ --https --nojail --notfound user/default

因為 Fossil SCM 加上 Stunnel 設定時, 已經將連線協定設為 HTTPS, 因此 http 伺服則交由 nginx 回應:

sudo apt install nginx

之後再些改 /etc/ nginx/site-available/default

nginx return 301 設定:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://hp.kmol.info;
}