2020年5月14日 星期四

架設 bugzilla, 懶人版

最近需要用到 bugzilla, 手動架都失敗, 於是找到幾個偷懶的方法...

一、 Docker

第一個方法是: Setting up Bugzilla using docker image on localhost, 不過需要小改一些地方。

docker pull bugzilla/bugzilla-dev
docker run -d --name bugz -p 8124:80 bugzilla/bugzilla-dev:latest
docker exec -it bugz su -- bugzilla

抓回官方製作的 docker。 啟動時設為 daemon 模式, 命名為 bugz, 並且把 bugz 的 80 port 映射到 host 的 8124 port (任選數字)。 然後進入 bugz、 以 bugzilla 的身份打開命令列。 (關於 docker 基本觀念, 請見 volume/port/link 狀態轉換 兩篇。)

在 bugz 的命令列上啟動 mysql: mysql -h localhost -u root, 在 mysql 裡面:

CREATE USER 'bugs'@'localhost' IDENTIFIED BY 'bugs';
SELECT User FROM mysql.user;
CREATE DATABASE bugs;
GRANT ALL PRIVILEGES ON bugs.* TO 'bugs'@'localhost' WITH GRANT OPTION;

帳號密碼先用預設的 "bugs" 及 "bugs" 不要改, 因為後面的 perl 程式會採用這兩個預設值。 手動建立名為 bugs 的資料庫 (Setting 文裡漏了這一步), 並且讓 bugs 使用者擁有 bugs 資料庫的所有權限。 按 ^d 離開後, 再用 mysql -h localhost -u bugs -D bugs -p 重新登入一次, 確認帳號、密碼、資料庫名稱都正確並能登入,隨即離開 mysql -- 想必這些是程式碼連線時的預設值。

find / -iname 'checksetup.pl' > ~/where.txt
cat ~/where.txt
cd /var/www/html/bugzilla/
perl checksetup.pl
lynx http://localhost/bugzilla/

翻遍 bugz 這個 docker , 找到 checksetup.pl 這支程式, 進到它所在的目錄, 並且用 perl 執行它, 初始化資料庫。 回答一堆問題 (請提供有效的 e-mail; 帳號名稱是 bugzilla 登入時希望用的管理員名稱; 密碼至少要有 6 個字元), 之後便可用 lynx 瀏覽器測試, 看到 bugzilla 系統的首頁。 然後就可以離開 bugz 這個 docker。

回到 host, 在瀏覽器裡打入網址: http://localhost:8124/bugzilla/ 就有 bugzilla 可用囉! (port 號碼請見當初 docker run 的設定。) 其他的, 就以後有需要時再來研究 官網的 Dockerfile 吧。

二、 Proxmox 裡的現成的 lxc container

如果你已架好一部 proxmox 伺服器, 就可以用採用這一節的方案。

pveam available | grep bugz
pveam download local debian-9-turnkey-bugzilla_版本.tar.gz

然後透過 (pveproxy 服務的) :8006 的網頁介面建立一部 turnkey 版 bugzilla 的 lxc container。 再用 pct enter CT代號 進入這個 container, 編輯 /etc/network/interfaces 、 用 systemctl 重啟網路服務。

我的做法是當初用網頁介面建立 container 時, 即指定 把 ssh 公鑰放在 ~/.ssh/authorized_keys 裡面, 並且這個 container 的 IP 是 192.168.xx.yy 之類的, 用 fwmp 設定 port forwarding 透過 proxmox host 轉發它的 ssh 服務。

不論你如何配置你的網路設定, 總之 ssh 服務設定好之後, ssh -p 埠號 root@主機IP 第一次以 ssh 登入後就會直接被帶到設定程式,包含:

  • MySQL 'adminer' 的密碼
  • Bugzilla 'admin' 的 e-mail 及密碼
  • Bugzilla 寄件人的 e-mail
  • turnkey 服務的帳號
  • 重大安全通知的 e-mail
  • 是否要立刻更新安全相關套件

完成後就會自動啟用以下服務:

未加密 bugzilla http://192.168.xx.yy
加密 bugzilla https://192.168.xx.yy
Web shell https://192.168.xx.yy:12320
Webmin https://192.168.xx.yy:12321
SSH/SFTP root@192.168.xx.yy (port 22)

可是我有 ssh 就夠了, 並不需 web shell 跟 webmin, 所以趕快把它們刪掉: apt remove webmin shellinabox 再把 80 或 443 用 port forwarding 轉出來, 就可以使用囉。 若要研究資料庫, 可以在命令列上: mysql -u adminer -p 並用剛剛設定的密碼登入即可。

以下補充 [幾乎沒人有用得到的] 冷知識:

  1. Turnkey linux 首次登入執行的程式放在哪裡? 在 /usr/lib/inithooks/firstboot.d/ 。
  2. 分別查看 /usr/lib/inithooks/bin/bugzilla.py 跟 /var/www/bugzilla/checksetup.pl 發現 Turnkey linux 的 bugzilla.py 並沒有去呼叫 "原廠" 的 checksetup.pl 。 它們各自都會設定資料庫並根據使用者的輸入去更動 /var/www/bugzilla/data/params.json 。

三、 拿人家現成的來用

這一招最偷懶了: 網路上已有善心人士架好 bugzilla 讓大家練習使用。

如何登入 allizon 如果想要用 allizom 的 bugzilla 測試站, 需要先有一個 github 的帳號。 不要點 「NewAccount」! 要點 「login」 再點最左邊的 github 圖示 「Signin」, 然後就可以開始玩。

另一個是 OpenDemo 的 bugzilla 測試站。 在這裡用 e-mail 即可註冊。 但可能要等幾小時才會收到確認信, 而且可能會落在垃圾信箱裡。 點下確認連結後就可以用。

有了 bugzilla 網站可用之後, 再來就是閱讀教學文了: Bugzilla Tutorial for Beginners: Defect Tracking Tool

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。