星期六, 1月 19, 2019
星期五, 1月 11, 2019
Docker & Docker Compose on CentOS
- Docker
- sudo yum install yum-utils
- sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- sudo yum install docker-ce
- sudo systemctl start docker
- (optional) sudo systemctl enable docker
- sudo usermod -aG docker `whoami`
- (logout, then login again)
- (optional) docker ps
- Docker Compose
- (docker installed)
- (check latest version of Docker Compose from here, ex: 1.23.2)
- sudo curl -L “https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- (optional) docker-compose --version
星期二, 1月 01, 2019
Java Restful WebServices
為了想在最少的準備之下開發 Java Restful WebServices,研究了以下的做法:
- 參考這篇與這篇所述,在 Docker 已安裝的前提下,藉由 Maven webapp plugin,不依賴任何 IDE,建立專案的目錄結構。需要在一個空的目錄下這命令(請自行替換適合的 groupId):
docker run -it --rm -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.acme -DartifactId=my-webapp - 將這群目錄、檔案的擁有權取回:
sudo chown -R `whoami`. my-webapp - 進入 my-webapp 子目錄,補上 src/main/java/com/acme/TestService.java,內容可參考這篇(如果用複製的話,要注意雙引號可能需要替換)。
- 續上,增加 servlet 與 servlet-mapping 補足 src/main/webapp/WEB-INF/web.xml 的內容,尤其要注意 param-value 與程式中所述的套件、所在路徑一致。
- 續上,增加三個 dependency 補足 pom.xml 的內容。若在意未來的路徑名稱,也可以增設 build/finalName。
- 再用 Maven 於 target 目錄產出 war 檔:
docker run -it --rm -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven mvn package
- 將 Tomcat 預設埠 8080 8443 都對應好:
docker run -d --name tomcat -p 8080:8080 -p 8443:8443 tomcat - 先確認瀏覽器訪問 8080 沒問題,再設法讓 Manager App 開起來,首先是修改 /usr/local/tomcat/conf/tomcat-users.xml 增加 manager-gui 角色的帳密;若要遠端訪問還有 /usr/local/tomcat/webapps/manager/META-INF/context.xml 要放寬 RemoteAddrValve。
- 登入 Manager App 之後,部署 war 上去,不論 http://localhost:8080/my-webapp 或 http://localhost:8080/my-webapp/rest/testservice 都應能得到正確內容。
- 準備 https 憑證與金鑰檔,放到 Docker Container 內,並參考這篇的說明修改 /usr/local/tomcat/conf/server.xml,對應的必要屬性至少有 certificateFile、certificateKeyFile 兩個,就可改由 https 8443 訪問取得結果。
星期三, 11月 21, 2018
Jenkins HTTPS
依過去官網的說明,啟動 Jenkins 時可透過兩個參數指定憑證檔與金鑰檔的路徑,即可支援 https。由於我們用的是付費憑證,瀏覽器一直也用得沒什麼問題,但在 Jenkins Node 連回主節點時,總是抱怨憑證鍊問題,不得已總是要多加 -noCertificateCheck 來避免,今天總算是找到答案了:指定憑證即使是完整的憑證鍊,Jenkins 也是忽略不管,只能放 Java KeyStore 才算數;而且官網不久前也因此更新這篇說明,以後改給專屬的 JKS 以及保護密碼即可。
星期二, 11月 06, 2018
Most light-weight http(s) server
原本以為 Nginx 夠輕量了,但在考慮還要額外安裝的前提下,似乎就輸給 CentOS 上兩種預先備妥的方案:
- openssl s_server -accept 443 -www
- python -m SimpleHTTPServer
python 要搭配 https 其實也不麻煩,執行一個固定內容的檔案即可:
- import BaseHTTPServer, SimpleHTTPServer
- import ssl
- httpd = BaseHTTPServer.HTTPServer(('', 443), SimpleHTTPServer.SimpleHTTPRequestHandler)
- httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', keyfile='./server.key', server_side=True)
- httpd.serve_forever()
星期三, 9月 26, 2018
Simple and Free SSL
現在這時代處處要求安全,網站若還是走 http:// 已經跟不上潮流了,但我們非得繳這些「安全稅」來維持門面嗎?假設網域的名稱解析、防火牆開 80 埠這些事都已準備好,以下我們就來看看最近的做法:
- CentOS 7
- 「不必」準備 Web Server,如果有也請先關掉
- sudo yum install epel-release 安裝企業版套件庫
- sudo yum install certbot 這次的主角
- sudo certbot certonly -n -d acme.com -m abc@acme.com --standalone --agree-tos
- 如果一切順利,就會在 /etc/letsencrypt/live 目錄下看到新的憑證、金鑰等檔案。
- sudo certbot renew 就能更新憑證,而且若在未到期前執行,雖然不會生效,但也不會破壞什麼,彌補了免費憑證效期較短,經常需要更新的疑慮。
- Windows
- 請先裝好 IIS
- 到這裡下載、解壓縮,不需安裝,執行 letsencrypt.exe,這是一個文字介面互動式程式,可以選擇各種憑證相關工作,像「申請」、「定期更新」都有,而且這是綁 IIS 的,因此憑證檔該放什麼位置,都不需再操心。
星期二, 9月 04, 2018
IIS Manager Import / Export Application
很好奇為什麼有些人能有這樣的截圖(注意右下角):
但我沒有?比較新的版本普遍有類似的問題,但也不是一定要回到舊版。首先把 Web Platform Installer 裝好,再如下找到 Web Deployment Tool 2.1 裝起來:
重啟 IIS Manager 就可以了。
這種工作當然也要有指令版,大致像是:
- MSDeploy.exe -verb:sync -source:package=WebSite.zip -dest:auto
訂閱:
文章 (Atom)

