王龍軍
(成都工業(yè)學院,四川 成都 611730)
響應式圖書館平臺開發(fā)大致分為前端開發(fā)和后端開發(fā),前端開發(fā)主要采用Bootstrap技術,后端開發(fā)主要采用SSM框架技術,SSM框架包括Sping、Spring MVC、MyBatis3種框架。圖書館平臺開發(fā)主要采用開源操作系統(tǒng)和開源開發(fā)技術,開發(fā)平臺的搭建比較煩瑣,開發(fā)出的軟件部署也是一個難題,開發(fā)團隊一般是3~5人,開發(fā)周期要由開發(fā)項目的大小決定,一般是3個月到2年。本項目是在CentOS Linux平臺上進行開發(fā),采用Docker快速搭建開發(fā)和運行環(huán)境,并且Docker搭建好的環(huán)境可以直接傳遞給項目成員,這樣就解決了開發(fā)團隊成員多次搭建開發(fā)環(huán)境、開發(fā)環(huán)境不一樣等問題,利用Docker自動對開發(fā)的軟件進行打包和部署應用,這樣做的好處是可以把圖書館平臺輕松進行遷移和擴展,實現了一處構建、到處運行的目的。
Docker[1-2]是一個在Linux容器里運行應用的和基于C/S架構的容器引擎工具,Docker是一種輕量級的虛擬機,Docker是采用Go語言開發(fā)的開源容器項目,實現“Build,Ship and Run Any App,Anywhere”就是Docker設計目的,即通過對所開發(fā)應用的生命周期的封裝、發(fā)布、部署、運行等過程進行管理,這樣“一次封裝、到處運行”的理念就可以在應用組件中實現。Docker是一種輕量級的虛擬化容器技術,和傳統(tǒng)的虛擬機方式比較,Docker容器啟動和停止很快,一般是秒級,而傳統(tǒng)的虛擬機一般是分鐘級別,Docker就是將應用及其依賴打包成一個沙盒執(zhí)行環(huán)境,Docker每個應用相互隔離,可以將應用發(fā)布到任何流行的Linux或Windows服務器上。
Docker實現開發(fā)和運維一體化,通過Docker可以快速實現搭建好開發(fā)和運行環(huán)境,并且該環(huán)境可以直接傳遞給測試和運維人員,這樣他們可以使用完全相同的環(huán)境來測試和部署代碼,這是多少開發(fā)團隊夢寐以求的事情,這會節(jié)省大量的開發(fā)、測試、部署時間。Docker容器可以在服務器、云平臺、虛擬機等運行,支持Linux、Windows、Mac OS等操作系統(tǒng),這樣Docker可以在不同的平臺和操作系統(tǒng)上進行輕松遷移,Docker容器對系統(tǒng)資源需求很少,這樣一臺服務器上可以同時從上千到上萬個Docker容器,這在傳統(tǒng)的虛擬機上是不可想象的。
SSM框架指Spring+Spring MVC+MyBatis 3種框架組合,SSM是當前主流的企業(yè)級開發(fā)Web應用框架組合。Spring[3]框架的核心是“控制反轉(IoC)和面向切面編程(AOP)”,Spring將面向接口的編程理念貫穿于整個Spring系統(tǒng)之中,Spring要解決的是業(yè)務邏輯層與其他業(yè)務層的松耦合問題,同時Spring也是SSM框架組合的核心,Spring在表現層、業(yè)務層、持久層整合各個框架,Spring負責創(chuàng)建和管理對象之間的依賴關系。
MyBatis是Java EE應用開發(fā)的一個輕量級數據持久層(ORM)框架,Hibernate是一個全表映射的框架,而MyBatis是一個半自動映射的框架,Hibernate將Java對象與數據庫中數據表關聯(lián)起來,而MyBatis沒有實現Java對象和數據庫中數據表關聯(lián)起來,MyBatis是將Java方法與SQL語句進行關聯(lián),通過XML或注解進行配置和映射,MyBatis將基本數據類型、POJO、MAP接口映射到數據庫中數據記錄中。
Bootstrap[5]是Twitter公司開發(fā)的一個基于HTML5、CSS3和JavaScript的響應式Web前端開發(fā)框架,Bootstrap于2011年8月在GitHub上以開源的形式進行發(fā)布,Bootstrap發(fā)布后收到前端開發(fā)者的熱捧,一直是GitHub上的熱門開源項目。Bootstrap 3版本以后框架包含了貫穿于整個庫的移動設備優(yōu)先的樣式,Bootstrap 響應式布局設計,讓一個Web應用可以兼容不同分辨率的設備,比如PC電腦、平板電腦、手機等,響應式布局可以為不同終端的用戶提供更加舒適的界面和更好的用戶體驗,Bootstrap就是響應式布局最成功的實現,為了兼容不同的瀏覽器采用jQuery,為了適配不同的終端采用CSS3 Media Query(媒體查詢)。
響應式圖書館平臺的環(huán)境搭建和項目總體框架分為兩部分:Docker環(huán)境搭建和Docker軟件部署,Docker環(huán)境搭建主要是利用Docker安裝JDK、Tomcat等一系列軟件,從而建立圖書館平臺的開發(fā)環(huán)境;Docker軟件部署主要是利用Docker將SSM開發(fā)的響應式圖書館平臺軟件部署到服務器上,這樣用戶就可以訪問圖書館平臺。響應式圖書館平臺環(huán)境搭建和軟件部署總體結構如圖1所示。

圖1 響應式圖書館平臺環(huán)境搭建和軟件部署總體結構
Docker環(huán)境搭建主要是利用Docker建立圖書館平臺的開發(fā)環(huán)境,包括使用Docker安裝JDK、Tomcat、Nginx、MongoDB、Eclipse等軟件,然后使用Eclipse建立Java EE項目,添加Sping、Spring MVC、MyBatis 3種框架所需要的JAR包以及3種框架整合需要的JAR包,這樣就可以就搭建好整個項目的開發(fā)環(huán)境。
本平臺是在CentOS 7.2 Linux上進行開發(fā),開發(fā)所用到的軟件全部是開源軟件,主要是為了避免使用商業(yè)軟件導致版權糾紛的問題。首先是在CentOS上安裝Docker軟件,Docker要求CentOS 7及以后的版本,并且必須是64位的Linux系統(tǒng),Linux內核至少是3.10版。安裝的時候以超級管理員root身份安裝Docker,使用命令yum install docker安裝軟件,然后使用命令systemctl start docker啟動Docker服務,若要開機時自動引導Docker服務,使用命令systemctl enable docker,這樣就完成了Docker軟件的安裝和啟動。
Docker利用容器安裝軟件,一般分為兩步,第一步是去倉庫拉取所需要的鏡像,第二步是創(chuàng)建容器并運行,接下來本文重點以Docker安裝JDK、Tomcat、MongoDB為例進行講解,其他軟件的安裝如此類推,這里我們選擇直接使用命令的方式進行,沒有選擇使用Dockfile的方式創(chuàng)建鏡像。
焊膏印刷機常被用作印刷焊膏或貼片膠,其功能主要是將貼片膠或焊膏準確無誤的漏印到對應印制板的位置。影響焊膏印刷質量的因素非常多,最關鍵的要屬焊膏特性、印刷工藝參數設置和網版制作。
2.2.1 Docker安裝JDK。
筆者采用直接在Docker拉取鏡像,而不是通過下載JDK安裝包的形式,用超級管理員的身份登錄CentOS系統(tǒng)。
第一步 拉取鏡像,命令為#docker pull openjdk,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運行容器,命令為#docker run -t -i openjdk /bin/bash。
第三步 測試JDK是否安裝成功,命令為#java -version。
2.2.2 Docker安裝Tomcat。
第一步 拉取鏡像,命令為#docker pull tomcat,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運行容器,命令為#docker run -d -p 8080:8080 tomcat。
第三步 測試Tomcat是否安裝成功,打開瀏覽器輸入http://localhost:8080,如果看到Tomcat的主頁,證明Tomcat服務器成功啟動。
2.2.3 Docker安裝MongoDB。
第一步 拉取鏡像,命令為#docker pull mongo,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運行容器,命令為#docker run -itd --name mongo -p 27017:27017 mongo --auth。
第三步 測試MongoDB是否安裝成功,命令為#docker ps,查看運行的容器中是否有MongoDB容器。
第四步 為MongoDB數據庫添加用戶和設置密碼,先添加用戶,命令為#docker exec -it mongo mongo admin,再設置密碼,命令為>db.createUser({ user:′admin′,pwd:′admin′,roles:[ { role:′userAdminAnyDatabase′, db:′admin′},"readWriteAnyDatabase"]}),接下來就是用創(chuàng)建的用戶名和密碼來連接MongoDB,命令為>db.auth(′admin′,′admin′)。
響應式圖書館平臺軟件要發(fā)布到服務器上,這時服務器同樣存在需要搭建SSM的運行環(huán)境,比如需要JDK、Tomcat、Nginx等軟件,這時完全可以利用Docker把本機的開發(fā)軟件鏡像保存為本地文件,然后利用SSH軟件將文件上傳到服務器上,服務器將上傳的文件載入為鏡像文件,然后在Docker容器中啟動即可完成服務器運行環(huán)境的搭建工作。
服務器事先要安裝好CentOS 7.2,以JDK為例說明整個一個過程,步驟如下:
首先,使用命令yum install docker安裝軟件,然后使用命令systemctl start docker啟動Docker服務。
其次,保存本機JDK鏡像為本地文件,文件后綴名為.tar,命令為docker save -o java8.tar?java/java-8,將產生java8.tar文件。
然后,利用WinSCP軟件將java8.tar文件上傳到CentOS服務器上。
最后,從文件載入鏡像,命令為docker load < java8.tar,這樣就可以在服務器上得到JDK的鏡像,然后創(chuàng)建容器,把JDK鏡像載入并運行,命令為#docker run -t -i openjdk /bin/bash,這樣就搭建好Java運行環(huán)境,其他軟件環(huán)境搭建過程類似,就不再一一贅述。
在服務器上搭建好整個軟件環(huán)境后,我們還需要采用Eclipse將SSM項目導出為war包,將該war包上傳到服務器的tomcat的webapps目錄下,然后服務器利用Docker啟動所有的容器,這樣就完成了整個軟件的部署工作。
在CentOS Linux平臺下利用Docker容器化技術快速安裝JDK、Tomcat、Nginx、MongoDB、Eclipse等軟件,建立Java EE項目,添加Sping、Spring MVC、MyBatis 3種框架所需要的JAR包以及3種框架整合需要的JAR包,這樣就可以就搭建好開發(fā)環(huán)境,并且可以把這樣的開發(fā)環(huán)境直接傳遞給團隊成員,軟件開發(fā)好以后再利用Docker進行快速部署,以及開發(fā)出響應式圖書館平臺軟件后利用Docker進行測試、自動打包及快速部署,Docker縮短代碼從開發(fā)、測試到部署、上線運行的周期,讓你的應用程序具備可移植性,易于構建,并易于協(xié)作,總之Docker能為SSM開發(fā)帶來很大便利。