趙正旭,白英杰,吳曉進(jìn)
(1. 石家莊鐵道大學(xué) 復(fù)雜網(wǎng)絡(luò)與可視化研究所,河北 石家莊 050043;2. 北京航天飛行控制中心 軟件室,北京 100000)
操作系統(tǒng)是計(jì)算機(jī)應(yīng)用程序運(yùn)行的基石,是信息安全的保障。而我國(guó)計(jì)算機(jī)系統(tǒng)依然依賴(lài)于國(guó)外。近年來(lái),由于外部壓力和國(guó)內(nèi)政策的雙重刺激,國(guó)產(chǎn)操作系統(tǒng)迎來(lái)了短暫的發(fā)展,并取得了一定的成就。但公開(kāi)發(fā)布的國(guó)產(chǎn)操作系統(tǒng)多基于著名 Linux內(nèi)核改造和開(kāi)發(fā)的,實(shí)際上,真正完全自主開(kāi)發(fā)的操作系統(tǒng)并不存在;而國(guó)產(chǎn)操作系統(tǒng)的數(shù)量和使用范圍相對(duì)較小,未能形成完善的軟件生態(tài)系統(tǒng)。所以,國(guó)產(chǎn)操作系統(tǒng)還有相當(dāng)長(zhǎng)的路要走。
如今,網(wǎng)絡(luò)技術(shù)不斷提高并日趨成熟。越來(lái)越多的企業(yè)選擇建立基于互聯(lián)網(wǎng)的Web應(yīng)用系統(tǒng)進(jìn)行辦公,網(wǎng)絡(luò)的巨大優(yōu)勢(shì)越來(lái)越凸顯。主要提出了基于國(guó)產(chǎn)操作系統(tǒng)JSP服務(wù)器的部署和實(shí)現(xiàn)方案,以及相關(guān)技術(shù)的介紹,為國(guó)產(chǎn)操作系統(tǒng)取代現(xiàn)行操作系統(tǒng)提供部署web服務(wù)的理論依據(jù)和實(shí)踐參考。
Web一般指提供網(wǎng)絡(luò)服務(wù)的計(jì)算機(jī)網(wǎng)站程序,它駐留于連接在互聯(lián)網(wǎng)上的某種服務(wù)器上,客戶(hù)端通過(guò)瀏覽器發(fā)出請(qǐng)求,服務(wù)器響應(yīng)并為客戶(hù)端提供服務(wù),實(shí)現(xiàn)資源共享[1]。目前,比較流行的Web服務(wù)器主要有三個(gè):Apache、IIS和Nginx[2]。
Apache是一款開(kāi)源的Web應(yīng)用程序軟件,它跨平臺(tái)性良好,在所有的平臺(tái)上幾乎都可以運(yùn)行,它具有速度快、可靠性高和拓展性良好等特點(diǎn),是目前因特網(wǎng)上使用率最高的Web服務(wù)器軟件[3]。
IIS即“互聯(lián)網(wǎng)信息服務(wù)(Internet Information Server)”的縮寫(xiě),是Microsoft公司設(shè)計(jì)、提供的一種與Windows NT系統(tǒng)集成的網(wǎng)絡(luò)服務(wù)。由于IIS能夠很好的與Windows NT系統(tǒng)產(chǎn)品集成在一起,并且提供快速可拓展的Internet服務(wù),具有支持多腳本語(yǔ)言、簡(jiǎn)單易用等特點(diǎn),所以大多數(shù)中小型規(guī)模的Web網(wǎng)站服務(wù)均采用IIS架構(gòu)。IIS功能強(qiáng)大,但只能運(yùn)行在微軟的操作系統(tǒng)平臺(tái)上[4],[5]。
Nginx(engine x)是一款由俄羅斯設(shè)計(jì)輕量級(jí)、高性能的Web服務(wù)器/反向代理服務(wù)器,同時(shí)也是一個(gè)電子郵件(IMAP/POP3)代理服務(wù)器,運(yùn)行在BSD-like協(xié)議下。服務(wù)器占用內(nèi)存少,并發(fā)能力強(qiáng),根據(jù)實(shí)際測(cè)試可以承受3萬(wàn)以上的并發(fā)連接數(shù)[6]。
Tomcat是 Apache公司一個(gè)開(kāi)源的項(xiàng)目,實(shí)質(zhì)上是一個(gè)免費(fèi)JSP引擎。Tomcat是一個(gè)在SUN公司的JSWDK的基礎(chǔ)上發(fā)展而來(lái)的優(yōu)秀的Java Web容器,是SUN公司推薦的Servlet/JSP容器。目前,Tomcat可以和絕大多數(shù)主流 HTTP服務(wù)器(如 IIS和Apache服務(wù)器)一起工作,而且運(yùn)行穩(wěn)定、可靠、效率高。Servlet/JSP網(wǎng)絡(luò)拓?fù)鋱D如圖1所示。
Tomcat安裝完成后,主要有七個(gè)目錄,不同的目錄分管著不同的任務(wù),其部分主要目錄結(jié)構(gòu)和相關(guān)配置說(shuō)明如圖2所示。
靜態(tài)網(wǎng)頁(yè)是指網(wǎng)頁(yè)制作完成后,就不能隨意更改,用戶(hù)只能瀏覽,不能與服務(wù)器進(jìn)行交互操作;動(dòng)態(tài)網(wǎng)頁(yè)是相對(duì)于靜態(tài)網(wǎng)頁(yè)而言的,即網(wǎng)頁(yè)的URL不固定,能夠通過(guò)后臺(tái)與用戶(hù)進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)用戶(hù)查詢(xún)等動(dòng)作。動(dòng)態(tài)網(wǎng)頁(yè)與靜態(tài)網(wǎng)頁(yè)相比較具有明顯的優(yōu)勢(shì)。當(dāng)前,比較流行的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)主要有ASP、PHP和JSP。
圖1 Servlet/JSP網(wǎng)絡(luò)拓?fù)鋱DFig.1 The Network Topology of Servlet/JSP
圖2 Tomcat主要目錄結(jié)構(gòu)及相關(guān)配置說(shuō)明Fig.2 The primary directory structure and related configuration instructions for the Tomcat
JSP是Java Server Pages(JAVA服務(wù)器頁(yè)面)的縮寫(xiě),是由Sun公司倡導(dǎo)、推出的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)實(shí)質(zhì)上是服務(wù)器端的腳本語(yǔ)言,是一種動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù),底層實(shí)現(xiàn)是Java Servlet。JSP頁(yè)面由HTML代碼和Java代碼組成;基于Java Servlet以及整個(gè)Java體系,具有強(qiáng)大的跨平臺(tái)性;先編譯后運(yùn)行等方式極大的提高了執(zhí)行的效率[7]。逐漸成為網(wǎng)站開(kāi)發(fā)的主流技術(shù)。JSP的運(yùn)行原理如圖3所示。
當(dāng)服務(wù)器收到客戶(hù)端請(qǐng)求后,JSP Parser將其編譯成Servlet程序,調(diào)用JSDK將Servlet程序進(jìn)行編譯,并加載的內(nèi)存中執(zhí)行,把結(jié)果響應(yīng)給客戶(hù)端。執(zhí)行過(guò)程如圖4所示。
圖3 JSP運(yùn)行原理Fig.3 The operation principle of JSP
圖4 JSP執(zhí)行過(guò)程Fig.4 The Executing processes of JSP
JSP服務(wù)器部署主要為四個(gè)部分:Java環(huán)境配置、Tomcat服務(wù)器搭建、開(kāi)發(fā)環(huán)境以及所依賴(lài)數(shù)據(jù)庫(kù)的配置。其中,java環(huán)境選擇 JDK-1.8;Tomcat服務(wù)器選擇 Tomcat-8.0;數(shù)據(jù)庫(kù)選擇 MySQL-5.5;開(kāi)發(fā)環(huán)境選擇MyEclipse 2014。采用本地安裝的策略,在中標(biāo)麒麟6.0系統(tǒng)上進(jìn)行安裝部署[8],具體過(guò)程和實(shí)現(xiàn)方案如下。
Java環(huán)境是 Tomcat運(yùn)行的基礎(chǔ)。JDK(Java Development Kit)是Java的軟件開(kāi)發(fā)工具包(SDK),是整個(gè)Java開(kāi)發(fā)的核心[9]。其配置主要過(guò)程如下。
卸載系統(tǒng)JDK:安裝之前先查看系統(tǒng)的JDK版本,如果存在則建議先將其卸載,防止安裝配置JDK是發(fā)生錯(cuò)誤,卸載命令為# yum remove java java-1.7.0openjdk-devel.i686。此命令為卸載JDK及其依賴(lài)的安裝包。其中,java-1.7.0openjdk-devel.i686是查看獲取的JDK版本。
安裝新版本JDK:卸載完成后,到官方網(wǎng)站下載源碼jdk-8u11-linux-x64.tar.gz,將其解壓,其命令為# tar –zxvf jdk-8u11-linux-x64.tar.gz -C/usr/local/。-C/usr/local/表示解壓到指定的目錄。
配置JDK環(huán)境變量:JDK解壓好后要對(duì)其進(jìn)行環(huán)境變量的配置,JDK環(huán)境變量文件的存放的位置為/etc/profile。
在profile文件末尾加入如下配置信息。
export JAVA_HOME=/usr/local/jdk1.8.0_11 export JRE_HOME=/usr/local/jdk1.8.0_11/jre export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/dt.jar
其中,JAVA_HOME指向的是JDK的安裝位置;JRE_HOME的位置為jre的安裝位置;PATH指向的是JDK的bin和jre的bin目錄;CLASSPATH指向的是bin目錄下的tools和jre/lib目錄下的dt.jar。注意在:之前需加., 否則會(huì)出現(xiàn)錯(cuò)誤。
測(cè)試:命令為java -version或javac,其中java-version的測(cè)試結(jié)果如下。
# java –version //查看 JDK 版本信息,以下為輸出內(nèi)容。
java version “1.8.0_11”
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
tomcat依賴(lài)于java語(yǔ)言,其功能優(yōu)越,性能良好,具有強(qiáng)大的跨平臺(tái)性。安裝配置過(guò)程方便快捷。官網(wǎng)下載安裝包apache-tomcat-8.0.30.tar.gz,解壓安裝到/usr/local目錄下,其命令為:# tar –zxvf apachetomcat-8.0.30.tar.gz -C/usr/local/。完成后需要配置環(huán)境變量,其配置方法和過(guò)程如下。
打開(kāi)配置文件所在目錄,位置是Tomcat安裝目錄的 bin文件夾下,修改文件夾下的 startup.sh和shutdown.sh文件,加入以下配置信息。
JAVA_HOME=/usr/local/jdk1.8.0_11
JRE_HOME=/usr/local/jdk1.8.0_11/jre
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bi n:$PATH
CLASSPATH=.;$JAVA_HOME/lib/tools.jar:$JAV A_HOME/jre/lib/dt.jar
TOMCAT_HOME=/usr/local/apache-tomcat-8.0.30
其中,JAVA_HOME和JRE_HOME是已經(jīng)配置好的JDK和JRE目錄;TOMCAT_HOME為當(dāng)前的Apache-Tomcat-8.0目錄;conf目錄下為服務(wù)器的配置文件;bin下存放啟動(dòng)和關(guān)閉服務(wù)器的文件。
測(cè)試:在bin目錄下文件startup.sh為開(kāi)啟服務(wù)器,shutdown.sh為關(guān)閉服務(wù)器。測(cè)試過(guò)程和結(jié)果如下(以測(cè)啟動(dòng)服務(wù)器為例)。
# ./startup.sh //啟動(dòng)Tomcat服務(wù)器。
Using CATALINA_BASE:/usr/local/apachetomcat-8.0.30
Using CATALINA_HOME: /usr/local/apachetomcat-8.0.30
Using CATALINA_TMPDIR: /usr/local/apachetomcat-8.0.30/temp
Using JRE_HOME:/usr/local/jdk1.8.0_11
Using CLASSPATH: /usr/local/apachetomcat-8.0.30/bin/bootstrap.jar:、/usr/local/apache-tomcat-8.0.30/bin/tomcat-juli.jar
Tomcat started.
此為啟動(dòng)成功;測(cè)試結(jié)果如圖5所示。
圖5 Tomcat服務(wù)器測(cè)試結(jié)果Fig.5 The results of Tomcat server test
MySQL是一個(gè)開(kāi)源的輕量級(jí)的數(shù)據(jù)庫(kù)系統(tǒng),成本低;在對(duì)資源占用率不高的情況下,運(yùn)行速度快,因此被廣泛應(yīng)用于中小型網(wǎng)站中。其安裝配置過(guò)程如下。
新建 mysql組用戶(hù):用于啟動(dòng) MySQL服務(wù)。相關(guān)命令為。
# groupadd mysql //新建 mysql用戶(hù)組。
# useradd –g mysql mysql//向 mysql用戶(hù)組中添加mysql用戶(hù)[10]。
安裝MySQL服務(wù):下載軟件安裝包MySQL-5.5.55-1.linux2.6.x86_64.rpm-bundle.tar,里面有七個(gè).rpm 文件,選擇安裝服務(wù)器和客戶(hù)端[11]。
MySQL-server-5.5.55-1.linux2.6.x86_64.rpm
MySQL-client-5.5.55-1.linux2.6.x86_64.rpm
采用rpm本地安裝方式,其安裝命令如下(以安裝server為例)。
# rpm –ivh MySQL-Server-5.5.55-1.linux2.6.x86_64.rpm
啟動(dòng)與測(cè)試:由于Linux安全機(jī)制問(wèn)題,此時(shí),任何一個(gè)用戶(hù)都無(wú)法啟動(dòng) mysql服務(wù),需要進(jìn)入目錄/var/lib/mysql賦予權(quán)限才可以啟動(dòng)服務(wù),其過(guò)程的相關(guān)命令如下。
# cd /var/lib/mysql//進(jìn)入到目錄/var/lib/mysql下。
# chown –R mysql:mysql .//將當(dāng)前目錄所有權(quán)修改為mysql組用戶(hù)的mysql用戶(hù)。
賦予權(quán)限后切換mysql用戶(hù)后啟動(dòng)服務(wù),命令為。
$ service mysql start
Starting MySQL..[ 確定 ]
即啟動(dòng)完成。
登陸mysql進(jìn)行測(cè)試,相關(guān)命令和過(guò)程如下。
# mysql -uroot -p//連接本地?cái)?shù)據(jù)庫(kù)。
Enter password:
Welcome to the MySQL monitor. Commands end with ;or g.
......
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>
即成功地登陸了本地MySQL服務(wù)器。
java的開(kāi)發(fā)環(huán)境有很多,以 MyEclipse2014為例,采用本地安裝的方式進(jìn)行部署。下載軟件包myeclipse-pro-2014-GA-offline-installer-linux.run,通過(guò)chmod命令修改權(quán)限后,進(jìn)行安裝,其主要過(guò)程和相關(guān)命令如下。
# chmod 777 myeclipse-pro-2014-GA-offlineinstaller-linux.run
777為-r-w-x的數(shù)字表示方法,表示可讀寫(xiě)和執(zhí)行的權(quán)限。修改后可通過(guò)命令進(jìn)行查看,未修改前為紅色,修改之后為綠色。之后輸入命令進(jìn)行安裝。
# ./myeclipse-pro-2014-GA-offline-installer-linu x.run
Starting installer - please wait...
- Preparing install engine
- Extracted install engine
- Detected JVM architecture: 64 bit
- Launching install engine: waiting for completion
執(zhí)行到此后會(huì)彈出圖形界面,其安裝配置與Windows相同。
創(chuàng)建數(shù)據(jù)庫(kù),編寫(xiě)讀取數(shù)據(jù)庫(kù)測(cè)試文件,其JSP頁(yè)面部分代碼內(nèi)容如下。
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager. getConnection
("jdbc:mysql://localhost:3306/test","root","root");
Statement state=con.createStatement();
String sql2="select * from test";
ResultSet rs=state.executeQuery(sql2);
while(rs.next()){
String uID=rs.getString("id");
String uName=rs.getString("name");out.println(" ID : "+
uID +" "+" ;Name :  "+uName+"
");
}
out.println(" Operator success..."+"
");
state.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
將編寫(xiě)好的 JSP文件放入到 Tomcat/webapps/ROOT目錄下進(jìn)行測(cè)試,其測(cè)試結(jié)果如圖6所示。其中,前兩行為數(shù)據(jù)庫(kù)中讀出的內(nèi)容,最后一行為提示信息。
圖6 Tomcat測(cè)試結(jié)果Fig.6 The results of Tomcat test
中標(biāo)麒麟作為國(guó)產(chǎn)操作系統(tǒng)的領(lǐng)導(dǎo)者,采用強(qiáng)大的Linux作為內(nèi)核,其安全機(jī)制優(yōu)于Windows;性能穩(wěn)定,極少出現(xiàn)宕機(jī)的現(xiàn)象;與現(xiàn)行操作系統(tǒng)相比具有巨大的優(yōu)勢(shì)。對(duì)Tomcat服務(wù)器和JSP技術(shù)進(jìn)行了簡(jiǎn)單的介紹,設(shè)計(jì)了基于中標(biāo)麒麟 6.0系統(tǒng)的服務(wù)器搭建方案并對(duì)其進(jìn)行了驗(yàn)證。結(jié)果表明,基于java的網(wǎng)站構(gòu)建方案在國(guó)產(chǎn)操作系統(tǒng)上切實(shí)可行,對(duì)下一步推廣使用國(guó)產(chǎn)操作系統(tǒng)打下了堅(jiān)實(shí)的基礎(chǔ),也為國(guó)產(chǎn)操作系統(tǒng)網(wǎng)站構(gòu)建提供了技術(shù)方案和實(shí)驗(yàn)支持。
致謝:本文的工作是在石家莊鐵道大學(xué)復(fù)雜網(wǎng)絡(luò)與可視化研究所中進(jìn)行的,研究部分由國(guó)家科學(xué)、技術(shù)和工業(yè)管理局資助,在民用和軍用合并方案下進(jìn)行,受到河北省“河北省國(guó)家重大國(guó)防可視化系列系統(tǒng)及軟件產(chǎn)品的研發(fā)與實(shí)際推廣應(yīng)用”(資金編號(hào)Z66906)項(xiàng)目和河北省第三批創(chuàng)新團(tuán)隊(duì)及領(lǐng)軍人才"巨人計(jì)劃"(冀辦字[2018]33號(hào))的資助與支持。