王龍軍
(成都工業(yè)學(xué)院,四川 成都 611730)
響應(yīng)式圖書館平臺(tái)開發(fā)大致分為前端開發(fā)和后端開發(fā),前端開發(fā)主要采用Bootstrap技術(shù),后端開發(fā)主要采用SSM框架技術(shù),SSM框架包括Sping、Spring MVC、MyBatis3種框架。圖書館平臺(tái)開發(fā)主要采用開源操作系統(tǒng)和開源開發(fā)技術(shù),開發(fā)平臺(tái)的搭建比較煩瑣,開發(fā)出的軟件部署也是一個(gè)難題,開發(fā)團(tuán)隊(duì)一般是3~5人,開發(fā)周期要由開發(fā)項(xiàng)目的大小決定,一般是3個(gè)月到2年。本項(xiàng)目是在CentOS Linux平臺(tái)上進(jìn)行開發(fā),采用Docker快速搭建開發(fā)和運(yùn)行環(huán)境,并且Docker搭建好的環(huán)境可以直接傳遞給項(xiàng)目成員,這樣就解決了開發(fā)團(tuán)隊(duì)成員多次搭建開發(fā)環(huán)境、開發(fā)環(huán)境不一樣等問題,利用Docker自動(dòng)對(duì)開發(fā)的軟件進(jìn)行打包和部署應(yīng)用,這樣做的好處是可以把圖書館平臺(tái)輕松進(jìn)行遷移和擴(kuò)展,實(shí)現(xiàn)了一處構(gòu)建、到處運(yùn)行的目的。
Docker[1-2]是一個(gè)在Linux容器里運(yùn)行應(yīng)用的和基于C/S架構(gòu)的容器引擎工具,Docker是一種輕量級(jí)的虛擬機(jī),Docker是采用Go語言開發(fā)的開源容器項(xiàng)目,實(shí)現(xiàn)“Build,Ship and Run Any App,Anywhere”就是Docker設(shè)計(jì)目的,即通過對(duì)所開發(fā)應(yīng)用的生命周期的封裝、發(fā)布、部署、運(yùn)行等過程進(jìn)行管理,這樣“一次封裝、到處運(yùn)行”的理念就可以在應(yīng)用組件中實(shí)現(xiàn)。Docker是一種輕量級(jí)的虛擬化容器技術(shù),和傳統(tǒng)的虛擬機(jī)方式比較,Docker容器啟動(dòng)和停止很快,一般是秒級(jí),而傳統(tǒng)的虛擬機(jī)一般是分鐘級(jí)別,Docker就是將應(yīng)用及其依賴打包成一個(gè)沙盒執(zhí)行環(huán)境,Docker每個(gè)應(yīng)用相互隔離,可以將應(yīng)用發(fā)布到任何流行的Linux或Windows服務(wù)器上。
Docker實(shí)現(xiàn)開發(fā)和運(yùn)維一體化,通過Docker可以快速實(shí)現(xiàn)搭建好開發(fā)和運(yùn)行環(huán)境,并且該環(huán)境可以直接傳遞給測(cè)試和運(yùn)維人員,這樣他們可以使用完全相同的環(huán)境來測(cè)試和部署代碼,這是多少開發(fā)團(tuán)隊(duì)夢(mèng)寐以求的事情,這會(huì)節(jié)省大量的開發(fā)、測(cè)試、部署時(shí)間。Docker容器可以在服務(wù)器、云平臺(tái)、虛擬機(jī)等運(yùn)行,支持Linux、Windows、Mac OS等操作系統(tǒng),這樣Docker可以在不同的平臺(tái)和操作系統(tǒng)上進(jìn)行輕松遷移,Docker容器對(duì)系統(tǒng)資源需求很少,這樣一臺(tái)服務(wù)器上可以同時(shí)從上千到上萬個(gè)Docker容器,這在傳統(tǒng)的虛擬機(jī)上是不可想象的。
SSM框架指Spring+Spring MVC+MyBatis 3種框架組合,SSM是當(dāng)前主流的企業(yè)級(jí)開發(fā)Web應(yīng)用框架組合。Spring[3]框架的核心是“控制反轉(zhuǎn)(IoC)和面向切面編程(AOP)”,Spring將面向接口的編程理念貫穿于整個(gè)Spring系統(tǒng)之中,Spring要解決的是業(yè)務(wù)邏輯層與其他業(yè)務(wù)層的松耦合問題,同時(shí)Spring也是SSM框架組合的核心,Spring在表現(xiàn)層、業(yè)務(wù)層、持久層整合各個(gè)框架,Spring負(fù)責(zé)創(chuàng)建和管理對(duì)象之間的依賴關(guān)系。
MyBatis是Java EE應(yīng)用開發(fā)的一個(gè)輕量級(jí)數(shù)據(jù)持久層(ORM)框架,Hibernate是一個(gè)全表映射的框架,而MyBatis是一個(gè)半自動(dòng)映射的框架,Hibernate將Java對(duì)象與數(shù)據(jù)庫中數(shù)據(jù)表關(guān)聯(lián)起來,而MyBatis沒有實(shí)現(xiàn)Java對(duì)象和數(shù)據(jù)庫中數(shù)據(jù)表關(guān)聯(lián)起來,MyBatis是將Java方法與SQL語句進(jìn)行關(guān)聯(lián),通過XML或注解進(jìn)行配置和映射,MyBatis將基本數(shù)據(jù)類型、POJO、MAP接口映射到數(shù)據(jù)庫中數(shù)據(jù)記錄中。
Bootstrap[5]是Twitter公司開發(fā)的一個(gè)基于HTML5、CSS3和JavaScript的響應(yīng)式Web前端開發(fā)框架,Bootstrap于2011年8月在GitHub上以開源的形式進(jìn)行發(fā)布,Bootstrap發(fā)布后收到前端開發(fā)者的熱捧,一直是GitHub上的熱門開源項(xiàng)目。Bootstrap 3版本以后框架包含了貫穿于整個(gè)庫的移動(dòng)設(shè)備優(yōu)先的樣式,Bootstrap 響應(yīng)式布局設(shè)計(jì),讓一個(gè)Web應(yīng)用可以兼容不同分辨率的設(shè)備,比如PC電腦、平板電腦、手機(jī)等,響應(yīng)式布局可以為不同終端的用戶提供更加舒適的界面和更好的用戶體驗(yàn),Bootstrap就是響應(yīng)式布局最成功的實(shí)現(xiàn),為了兼容不同的瀏覽器采用jQuery,為了適配不同的終端采用CSS3 Media Query(媒體查詢)。
響應(yīng)式圖書館平臺(tái)的環(huán)境搭建和項(xiàng)目總體框架分為兩部分:Docker環(huán)境搭建和Docker軟件部署,Docker環(huán)境搭建主要是利用Docker安裝JDK、Tomcat等一系列軟件,從而建立圖書館平臺(tái)的開發(fā)環(huán)境;Docker軟件部署主要是利用Docker將SSM開發(fā)的響應(yīng)式圖書館平臺(tái)軟件部署到服務(wù)器上,這樣用戶就可以訪問圖書館平臺(tái)。響應(yīng)式圖書館平臺(tái)環(huán)境搭建和軟件部署總體結(jié)構(gòu)如圖1所示。
圖1 響應(yīng)式圖書館平臺(tái)環(huán)境搭建和軟件部署總體結(jié)構(gòu)
Docker環(huán)境搭建主要是利用Docker建立圖書館平臺(tái)的開發(fā)環(huán)境,包括使用Docker安裝JDK、Tomcat、Nginx、MongoDB、Eclipse等軟件,然后使用Eclipse建立Java EE項(xiàng)目,添加Sping、Spring MVC、MyBatis 3種框架所需要的JAR包以及3種框架整合需要的JAR包,這樣就可以就搭建好整個(gè)項(xiàng)目的開發(fā)環(huán)境。
本平臺(tái)是在CentOS 7.2 Linux上進(jìn)行開發(fā),開發(fā)所用到的軟件全部是開源軟件,主要是為了避免使用商業(yè)軟件導(dǎo)致版權(quán)糾紛的問題。首先是在CentOS上安裝Docker軟件,Docker要求CentOS 7及以后的版本,并且必須是64位的Linux系統(tǒng),Linux內(nèi)核至少是3.10版。安裝的時(shí)候以超級(jí)管理員root身份安裝Docker,使用命令yum install docker安裝軟件,然后使用命令systemctl start docker啟動(dòng)Docker服務(wù),若要開機(jī)時(shí)自動(dòng)引導(dǎo)Docker服務(wù),使用命令systemctl enable docker,這樣就完成了Docker軟件的安裝和啟動(dòng)。
Docker利用容器安裝軟件,一般分為兩步,第一步是去倉庫拉取所需要的鏡像,第二步是創(chuàng)建容器并運(yùn)行,接下來本文重點(diǎn)以Docker安裝JDK、Tomcat、MongoDB為例進(jìn)行講解,其他軟件的安裝如此類推,這里我們選擇直接使用命令的方式進(jìn)行,沒有選擇使用Dockfile的方式創(chuàng)建鏡像。
焊膏印刷機(jī)常被用作印刷焊膏或貼片膠,其功能主要是將貼片膠或焊膏準(zhǔn)確無誤的漏印到對(duì)應(yīng)印制板的位置。影響焊膏印刷質(zhì)量的因素非常多,最關(guān)鍵的要屬焊膏特性、印刷工藝參數(shù)設(shè)置和網(wǎng)版制作。
2.2.1 Docker安裝JDK。
筆者采用直接在Docker拉取鏡像,而不是通過下載JDK安裝包的形式,用超級(jí)管理員的身份登錄CentOS系統(tǒng)。
第一步 拉取鏡像,命令為#docker pull openjdk,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運(yùn)行容器,命令為#docker run -t -i openjdk /bin/bash。
第三步 測(cè)試JDK是否安裝成功,命令為#java -version。
2.2.2 Docker安裝Tomcat。
第一步 拉取鏡像,命令為#docker pull tomcat,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運(yùn)行容器,命令為#docker run -d -p 8080:8080 tomcat。
第三步 測(cè)試Tomcat是否安裝成功,打開瀏覽器輸入http://localhost:8080,如果看到Tomcat的主頁,證明Tomcat服務(wù)器成功啟動(dòng)。
2.2.3 Docker安裝MongoDB。
第一步 拉取鏡像,命令為#docker pull mongo,查看鏡像#docker images。
第二步 創(chuàng)建容器,并運(yùn)行容器,命令為#docker run -itd --name mongo -p 27017:27017 mongo --auth。
第三步 測(cè)試MongoDB是否安裝成功,命令為#docker ps,查看運(yùn)行的容器中是否有MongoDB容器。
第四步 為MongoDB數(shù)據(jù)庫添加用戶和設(shè)置密碼,先添加用戶,命令為#docker exec -it mongo mongo admin,再設(shè)置密碼,命令為>db.createUser({ user:′admin′,pwd:′admin′,roles:[ { role:′userAdminAnyDatabase′, db:′admin′},"readWriteAnyDatabase"]}),接下來就是用創(chuàng)建的用戶名和密碼來連接MongoDB,命令為>db.auth(′admin′,′admin′)。
響應(yīng)式圖書館平臺(tái)軟件要發(fā)布到服務(wù)器上,這時(shí)服務(wù)器同樣存在需要搭建SSM的運(yùn)行環(huán)境,比如需要JDK、Tomcat、Nginx等軟件,這時(shí)完全可以利用Docker把本機(jī)的開發(fā)軟件鏡像保存為本地文件,然后利用SSH軟件將文件上傳到服務(wù)器上,服務(wù)器將上傳的文件載入為鏡像文件,然后在Docker容器中啟動(dòng)即可完成服務(wù)器運(yùn)行環(huán)境的搭建工作。
服務(wù)器事先要安裝好CentOS 7.2,以JDK為例說明整個(gè)一個(gè)過程,步驟如下:
首先,使用命令yum install docker安裝軟件,然后使用命令systemctl start docker啟動(dòng)Docker服務(wù)。
其次,保存本機(jī)JDK鏡像為本地文件,文件后綴名為.tar,命令為docker save -o java8.tar?java/java-8,將產(chǎn)生java8.tar文件。
然后,利用WinSCP軟件將java8.tar文件上傳到CentOS服務(wù)器上。
最后,從文件載入鏡像,命令為docker load < java8.tar,這樣就可以在服務(wù)器上得到JDK的鏡像,然后創(chuàng)建容器,把JDK鏡像載入并運(yùn)行,命令為#docker run -t -i openjdk /bin/bash,這樣就搭建好Java運(yùn)行環(huán)境,其他軟件環(huán)境搭建過程類似,就不再一一贅述。
在服務(wù)器上搭建好整個(gè)軟件環(huán)境后,我們還需要采用Eclipse將SSM項(xiàng)目導(dǎo)出為war包,將該war包上傳到服務(wù)器的tomcat的webapps目錄下,然后服務(wù)器利用Docker啟動(dòng)所有的容器,這樣就完成了整個(gè)軟件的部署工作。
在CentOS Linux平臺(tái)下利用Docker容器化技術(shù)快速安裝JDK、Tomcat、Nginx、MongoDB、Eclipse等軟件,建立Java EE項(xiàng)目,添加Sping、Spring MVC、MyBatis 3種框架所需要的JAR包以及3種框架整合需要的JAR包,這樣就可以就搭建好開發(fā)環(huán)境,并且可以把這樣的開發(fā)環(huán)境直接傳遞給團(tuán)隊(duì)成員,軟件開發(fā)好以后再利用Docker進(jìn)行快速部署,以及開發(fā)出響應(yīng)式圖書館平臺(tái)軟件后利用Docker進(jìn)行測(cè)試、自動(dòng)打包及快速部署,Docker縮短代碼從開發(fā)、測(cè)試到部署、上線運(yùn)行的周期,讓你的應(yīng)用程序具備可移植性,易于構(gòu)建,并易于協(xié)作,總之Docker能為SSM開發(fā)帶來很大便利。