Fossil SCM 是一套完整的軟體組態管理系統 (Software Configuration Management), 以 ANSI C 編寫, 其中利用 TCL 作為 Scripting 語言. 接下來將要說明如何在 Ubuntu 20.04 中安裝與配置 Fossil SCM.
這裡所要介紹的 Fossil SCM 為 http://fossil.kmol.info (只配置 IPv6 網路協定), http 網際伺服器前端採用 nginx, https 代理伺服器採用 stunnel, 主要伺服的 Software Configuration Management 套件則為 Fossil SCM.
安裝 nginx
在 Ubuntu 20.04 中安裝 nginx 非常簡單, 只要執行 sudo apt install nginx 即可.
nginx 的基本設定檔案位於 /etc/nginx/sites-available/default
安裝 nginx 有兩個目的, 一方面回應 http://fossil.kmol.info, 也就是 port 80 的 WWW 伺服器. 而另外一方面則是配合 https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx 以手動模式取得 stunnel https 伺服所需要的 fullchain.pem 與 privkey.prm 等兩個檔案.
安裝 Fossil SCM
在 Ubuntu 20.04 安裝 Fossil SCM 也非常簡單, 只要執行 sudo apt install fossil 即可. 但是所安裝的版本可能不是最新版, 由於安裝的 fossil 執行檔案位於 /usr/bin/fossil, 假如希望與 Windows 10 64 位元操作系統中的 Fossil SCM 對應, 可以至 https://fossil-scm.org/home/uv/download.html 下載 Linux 最新版本的 fossil, 然後以 sudo cp fossil /urs/bin/ 即可. 若要查驗 Fossil SCM 的版本, 可以使用 fossil version 指令.
Fossil SCM 整個系統就只有一個 fossil 執行檔案, 而倉儲檔案則只全部壓縮在一個 SQLite 資料庫檔案中.
接下來為了配置一套可以伺服多個 Fossil SCM 倉儲的 Ubuntu 20.04 系統, 在 /home/user/ 目錄下建立 repository 目錄, 之後的所有要從遠端擷取的 Fossil SCM 倉儲都可以放在此一用戶目錄下. 至於要在此目錄下建立一個內定的 Fossil SCM 倉儲, 可以進入 /home/user/repository 目錄後 (這裡的 user 為 Ubuntu 20.04 下的用戶帳號名稱), 以 fossil init cd2021.fossil 建立一個 Fossil SCM 倉儲, 執行完後系統就會直接在命令列中顯示用來管理此一倉儲的用戶 (會使用建立倉儲的帳號, 也就是 user) 登入管理的密碼.
使用者可以選擇將此一與 user 對應的管理密碼記起來, 或者之後再使用 sqlite3 指令進入 cd2021.fossil 查詢.
假如使用者需要在 Ubuntu 環境中直接對 Fossil SCM 倉儲改版, 則建議在 /home/user/repository 目錄中再建立一個 wd 目錄 (為 working directory 的縮寫), 之後可以將位於 /home/user/repository 目錄中的各個 .fossil 內容, 在 /home/user/repository/wd 目錄中展開, 若以 /home/user/repository/cd2021.fossil 為例, 展開後將位於 /home/user/repository/wd/cd2021.
安裝 stunnel
安裝 stunnel 也很簡單, 只要執行 sudo apt install stunnel4 即可, 安裝後若要隨系統開機啟動, 則需要 sudo vi /etc/default/stunnel4, 並在檔案中加入 ENABLED=1 後存檔.
另外, 還需要 sudo vi /etc/environment, 並在檔案中加入 HTTPS=on 後存檔.
接下來為了由 stunnel 代理 Fossil SCM 的 https 伺服, 必須加入 /etc/stunnel/stunnel.conf
[https] accept = 140.130.your_ipv4.ip:443 accept = 2001:288:6004:your:ipv6::ip:443 cert = /etc/stunnel/fullchain.pem key = /etc/stunnel/privkey.pem exec = /usr/bin/fossil execargs = /usr/bin/fossil http /home/user/repository/ --https --nojail --notfound cd2021
上述的 fullchain.pem 與 privkey.pem 由於尚未配置 certbot, 必須要取得合法的數位簽章檔案後, 再利用:
sudo systemctl start stunnel4.service
啟動 stunnel.
sudo systemctl stop stunnel4.service
關閉 stunnel, 或利用:
sudo systemctl restart stunnel4.service
重新啟動 stunnel.
擷取 fullchain.pem 與 privkey.pem
這個步驟主要按照 https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx 中的指令操作, 由於 Ubuntu 20.04 已經內建 snap, 因此只要執行:
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --nginx
就可以在 /etc/letsencrypt/live/fossil.kmol.info/ 目錄中找到 fullchain.pem 與 privkey.pem 等兩個數位簽章檔案, 接著將此兩個檔案複製至 /etc/stunnel/ 目錄, 以便配合 /etc/stunnel/stunnel.conf 隨電腦開機啟動.
因為 certbot 的數位簽章每 90 天都要更新一次, 屆時若要手動更新可以先模擬執行:
sudo certbot renew --dry-run
nginx http 跳轉 https
最後一個步驟是讓 nginx 所伺服的 http://fossil.kmol.info 能夠自動跳轉到 Fossil SCM 與 stunnel 結合的 https://fossil.kmol.info
修改 /etc/nginx/sites-available/default 中的設定如下:
server { listen 80; server_name fossil.kmol.info; rewrite ^/(.*)$ https://fossil.kmol.info/$1 permanent; }
No comments:
Post a Comment