- 安裝 Windows Guest VM,關機。
- 插上讀卡機,在 VM USB (ver. 1.1 / 2.0) 設定勾選該裝置。
- 拔除讀卡機。
- 開啟 Windows Guest VM,開機完成再插入讀卡機。
星期二, 11月 29, 2016
VirtualBox Windows Guest + USB SmartCard Reader
不需要安裝 Guest Additions,但步驟如下可能會順利許多:
Ping VirtualBox Windows Guest Fail?
想從 VirutalBox Host ping 到 Windows Guest?兩個條件:
- VirtualBox Settings -> Network -> Host-only Adapter
- Windows Guest Firewall -> Inbound Rules -> Virtual Machine Monitoring (Echo Request - ICMPv4-In / ICMPv6-In) -> Profile: Public / All -> Enable
星期四, 11月 24, 2016
Java 8 + JBoss 4.x + JSP
要安裝 JBoss 4.x,可先在此下載,解壓縮即可。解壓後的目錄在下文以 <JBoss_Home> 表示。
啟動指令是 <JBoss_Home>/bin/run.sh -b <hostName_or_IP> &,如果省略 -b binding 的部份也可以,就只會允許伺服器本機的來源訪問;如果省略尾巴的 & 也可以,就變成前景執行(好像比較難管)?
停機指令是 <JBoss_Home>/bin/shutdown.sh -S -s <hostName_or_IP>,-s 的部份可省略,視如何開啟決定。
JBoss 4.x 接受 .war 熱部署,也就是把檔案直接丟 <JBoss_Home>/server/default/deploy 即可。
重點來了:如果底下是 Java 8 的話,.war 裡面的 JSP 如果有用到字串取代,在編譯時會拋出以下的錯誤:
依據這篇文章的說法,改 Java 7 即可解決。在安裝 Java 7 之後的程序如下:
怪的是,若再改回 Java 8 也不會有錯?其實原因在編譯結果已存在 JBoss 的其他位置,所以若將 JBoss 重新解壓縮到另一個目錄,那邊的 JSP 仍然會有問題。
啟動指令是 <JBoss_Home>/bin/run.sh -b <hostName_or_IP> &,如果省略 -b binding 的部份也可以,就只會允許伺服器本機的來源訪問;如果省略尾巴的 & 也可以,就變成前景執行(好像比較難管)?
停機指令是 <JBoss_Home>/bin/shutdown.sh -S -s <hostName_or_IP>,-s 的部份可省略,視如何開啟決定。
JBoss 4.x 接受 .war 熱部署,也就是把檔案直接丟 <JBoss_Home>/server/default/deploy 即可。
重點來了:如果底下是 Java 8 的話,.war 裡面的 JSP 如果有用到字串取代,在編譯時會拋出以下的錯誤:
依據這篇文章的說法,改 Java 7 即可解決。在安裝 Java 7 之後的程序如下:
怪的是,若再改回 Java 8 也不會有錯?其實原因在編譯結果已存在 JBoss 的其他位置,所以若將 JBoss 重新解壓縮到另一個目錄,那邊的 JSP 仍然會有問題。
星期六, 11月 19, 2016
Alpine quick start
因為 Docker 的關係,才注意到 Alpine 這種超輕量級的 Linux 最近很紅,以下紀錄一些初探的心得。
首先由官網下載 ISO,開機過程中有些問題要回答,大部份依照預設值即可。值得注意的是:
首先由官網下載 ISO,開機過程中有些問題要回答,大部份依照預設值即可。值得注意的是:
- 首次登入的帳號是 root,無需密碼。
- 登入後第一個命令在提示訊息也可看到:setup-alpine。
- 網路必須要通,依預設會用 dhcp 連外。
- 在意時區的話,可輸入 Asia/Taipei。
- 鏡像站 mirror 的選擇,可依預設讓每一個都測試過反應時間,自動挑最快的。
- 除非當作 LiveCD 用,可以一直按 enter 依預設值下去。若要安裝在硬碟的話,還是必須選擇裝在 sda 之類的裝置上,接著「如何使用」請回答 sys,為了要清除舊磁區內容還必須再回答 y。
- 這階段完成會提示要 reboot,請先移除光碟再重啟。
- 以 openjdk 為例,指令 apk search openjdk 搜尋沒有結果。
- vi /etc/apk/repositories 可看到先前實測過最快的鏡像站,並且預設只接受官方套件,在此試著修改以增加社群等其他來源,存檔。
- 執行 apk update,再次搜尋 openjdk 就有結果。
- 執行 apk add openjdk8-jre (不需完整套件名稱)即可安裝。
- 詳細列表可參考這裡,不過這裡的搜尋條件要用 openjdk* 的型式。
Jenkins farm on Docker
單獨一部 Docker based Jenkins 不稀奇:
接下來要準備讓 Slave 掛上來,首先在 Jenkins 管理介面建一個新 Node,假設取名為 slave1,並設定 Remote root directory 為 /var/opt/jenkins,存檔,再點進去,畫面會像這樣:
點選超連結下載 slave.jar 並移到新建的 ~/share 目錄,然後在 Terminal 下指令:
[2016/11/27]
補充不在 Docker 又限制 https,若憑證是自簽或沒有預設信任的狀況下,當然增加信任根憑證是治本之道,不過也可以應急:
- docker run -d --name jenkins -p 80:8080 jenkins
- docker inspect jenkins | grep IPAddress
- docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
接下來要準備讓 Slave 掛上來,首先在 Jenkins 管理介面建一個新 Node,假設取名為 slave1,並設定 Remote root directory 為 /var/opt/jenkins,存檔,再點進去,畫面會像這樣:
點選超連結下載 slave.jar 並移到新建的 ~/share 目錄,然後在 Terminal 下指令:
- docker run -d --name slave -v ~/share:/var/opt/jenkins:Z -w /var/opt/jenkins java:8-jre-alpine java -jar slave.jar -jnlpUrl http://172.17.0.2:8080/computer/slave1/slave-agent.jnlp -secret 1689af1c531a13800eff7b69113622c383d30b218cf7d28fea1322b3faf651b4
[2016/11/27]
補充不在 Docker 又限制 https,若憑證是自簽或沒有預設信任的狀況下,當然增加信任根憑證是治本之道,不過也可以應急:
- java -jar slave.jar -jnlpUrl https://172.17.0.2:8080/computer/slave1/slave-agent.jnlp -secret 1689af1c531a13800eff7b69113622c383d30b218cf7d28fea1322b3faf651b4 -noCertificateCheck
星期三, 11月 16, 2016
Building dynatrace easyTravel from Source
- 在 dynatrace 官網下載 easyTravel 的原始碼壓縮檔,假設解壓目錄名為 ~/Downloads/dynatrace-easytravel-src。
- 安裝 Java、Ant。
- 編輯 /etc/hosts,為本機增加一個名稱,例如 osboxes。
- 切換至 ~/Downloads/dynatrace-easytravel-src/Distribution 目錄,執行 ant 命令,將產生 dist 子目錄放置編譯結果。
- 編輯 dist/startDistribution.sh,找到一行「export WEBLAUNCHER=set-this-property」,改為「export WEBLAUNCHER=osboxes」,存檔並執行,即會出現 easyTravel 的網頁管理介面。
- 在管理介面關閉 Mobile 相關的前端,也不要自動產生模擬流量,以節省資源。
- 在管理介面啟動 Production -> Standard 模式,注意資料庫必須正常運作,否則請檢查紀錄並排除問題。
- Credit Card Auth. (C++) 啟動失敗可以忽略,另外兩項在啟動過程中逾時,事實上已在提供服務。若在意的話,停止再啟動應能成功,否則請檢查紀錄並排除問題。
- 透過瀏覽器登入,帳密可用 afrida / afrida,網頁應會回應「Hello Afrida Afwika!」。
星期三, 11月 02, 2016
SonarQube Time Zone
SonarQube 預設使用 UTC,對於不夠國際化的我們是有點不方便。要如何在地化?編輯 sonar.properties,應可找到以下不連續的三行:
[2016/12/15]
其實這個問題應該回歸到作業系統的時區設定才對,當初先這麼做但失敗了,後來細究原因,才發現可能是因為沒有依照這篇舊聞。因為我的 SonarQube 是一個 Docker Container,而底下的作業系統是 Debian,無意間又找到另一種做法,指令如下:
- #sonar.ce.javaAdditionalOpts=
- #sonar.search.javaAdditionalOpts=
- #sonar.web.javaAdditionalOpts=
- sonar.ce.javaAdditionalOpts=-Duser.timezone=Asia/Taipei
- sonar.search.javaAdditionalOpts=-Duser.timezone=Asia/Taipei
- sonar.web.javaAdditionalOpts=-Duser.timezone=Asia/Taipei
[2016/12/15]
其實這個問題應該回歸到作業系統的時區設定才對,當初先這麼做但失敗了,後來細究原因,才發現可能是因為沒有依照這篇舊聞。因為我的 SonarQube 是一個 Docker Container,而底下的作業系統是 Debian,無意間又找到另一種做法,指令如下:
- dpkg-reconfigure tzdata
星期二, 11月 01, 2016
Docker container crash?
我負責的許多 Application Server 逐漸移到 Docker 上,最近常遇到休個週末回來就不行了?原來是這些在 VM 裡的 Docker 為了節能減碳,公司的政策是預設每週會自動停機,當底下的 VM 重啟之後,可以檢查到 Application Server 即使是開著的,埠口是外露的,也都只能在 container 本機存取服務,外界一概連不進去。
如此一定先懷疑防火牆吧?怪的是又沒去改,為何上週可以而本週不行?而且即使是整個防火牆都關了,也只修好一半,由完全失聯到「准進不准出」,像是 Jenkins 連不到外面的 Plugin Update Center,或是 SonarQube 連不到認證的 LDAP Server 等等。
最後找到真正的解法是 Docker Service 必須重啟。
如此一定先懷疑防火牆吧?怪的是又沒去改,為何上週可以而本週不行?而且即使是整個防火牆都關了,也只修好一半,由完全失聯到「准進不准出」,像是 Jenkins 連不到外面的 Plugin Update Center,或是 SonarQube 連不到認證的 LDAP Server 等等。
最後找到真正的解法是 Docker Service 必須重啟。
訂閱:
文章 (Atom)