Tuesday, March 12, 2019

精密機械 - Github 倉儲, Github Pages 與可攜隨身系統

本週課程在說明如何利用 Github PagesCMSimfly, 建立個人的靜態網際內容管理系統.

Demo 網站: https://mdecourse.github.io/2019wcmj

此處所謂的靜態網際內容管理指 Github Pages 目前只允許伺服倉儲中特定分支的特定目錄中的超文件, 亦即 Html 檔案與 Javascript 程式檔案, 而 CMSimfly 的靜態網頁就是利用 Python 程式, 設法將原本的動態網站系統的內容轉為超文件與 Javascript 後, 單獨儲存在 content 目錄下, 然後透過倉儲根目錄中的 index.html 進行跳轉至 content/index.html, 但是 CMSimfly 倉儲中仍然保留所有動態系統的 Python 程式與設定, 可上傳至其他支援執行 Python 的網際應用伺服器 (例如: Heroku), 並以動態的網站格式型態, 讓管理者登入進行內容管理.

之後, 我們將以 Github 倉儲中的資料版本為主, 設法在各用戶的近端可攜環境中進行版本管理, 然後再同步到 Heroku 動態網站, 或其他自架的網站.

以下為與本週課程有關的操作說明影片.

建立 Windows 10 64 位元可攜程式套件



建立 Github 倉儲



啟用倉儲的 Github Pages 與 CMSimfly



使用 SSH 執行 Git clone 與 push

在 Windows 10 環境下使用可攜系統的優點是使用者可以隨身攜帶程式開發環境外, 還能將工作中的倉儲與認證用資料隨身, 以便在任何時間進行近端或遠端資料維護.

以下操作因僅用於課程教學使用, 所建立的認證用 Private Key 並未使用密碼保護, 其他非教學情境下, 建議一定要多加一組密碼保護認證用 Private Key, 一旦隨身碟遺失後, 無需擔心重要資料被竄改.

未採用密碼保護的 Private Key, 若隨身碟遺失, 則需即刻重新設定 Github 帳號中所使用的 SSH Public Key.

關閉操作系統儲存 Github 帳號密碼設定

目前 KMOL 所使用的 PortableGIT, 內建設定的 credential helper 為 manger, 表示當使用者使用 git push 時內建會跳出讓使用者輸入帳號密碼的對話視窗, 一旦使用者輸入帳號密碼後, 該資料將會儲存於操作系統中, 即便使用者選擇取消, 以手動輸入帳號密碼, 操作系統的 credential manager 依然會保存此一私密資料.

使用


git config --edit --system


可以帶出 vi 編輯器, 編輯 git 指令所使用的系統設定, 只要將 credential 項目中的 helper = manager 刪除後儲存, 即可關閉內定將使用者 Github 帳號密碼儲存於操作系統的問題.


建立 OpenSSH 格式的 Private 與 Public Keys


接下來, 在可攜系統的命令列視窗中, 以 sh 執行 Git 的 shell, 使用


ssh-keygen -t rsa -b 4096 -C "This is my key"

建立位於 y:\home\.ssh\id_rsa 的 Private Key 與位於 y:\home\.ssh\id_rsa.pub 的 Public Key, 並且將 id_rsa.pub 的內容, 轉貼到 Github 帳號 settings 中 SSH and GPG keys 項目內的 SSH Public Key 區.


使用 ssh 協定執行 git clone


為了採用 OpenSSH 協定執行登入認證, 使用者在近端 git clone 倉儲時, 必須使用類似 git@github.com:帳號/倉儲.git 的連線 URL


例如:


要將 https://github.com/mdecourse/wcm2019 的倉儲, 以 ssh 協定 git clone 到近端時, 必須使用:


git clone git@github.com:mdecourse/wcm2019.git


建立位於 wcm2019 的倉儲目錄, 而 git add ., git commit -m 與 git push 的指令則與採 http 連線時的指令相同. 只是採用 ssh 連線下的 git push, git 會讀取位於 y:\home\.ssh\id_rsa Private Key 與 Github 帳號上所設定的 Public Key 進行比對, 若同為一個 pair, 則通過認證, 可將改版的資料推送到遠端倉儲中.


上述 ssh 協定下的 git clone 與 git push, 配合 ungit 使用時, 可以直接輸入提交訊息後, 以 commit & push 將近端版本提交推送到遠端.


ssh 連線透過 proxy server, 必須設定 y:\home\.ssh\config 如下:

ProxyCommand y:/PortableGit/mingw64/bin/connect.exe -H proxy.kmol.info:3128 %h %p

# for user1
# url = git@github.com_user1:user1/cmstest.git
Host github.com_user1
    User git
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user1"

    TCPKeepAlive yes
    IdentitiesOnly yes
    
# for user2
# url = git@github.com_user2:user2/user2.com.git
Host github.com_user2
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user2"

    TCPKeepAlive yes
    IdentitiesOnly yes
    

No comments:

Post a Comment

NX12

NX 12 Help https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help Python related https://docs.plm.automation.siemens.com/tdoc/nx/...