從零開始搭建Linux測試環境html
之java
jdk+apache+jboss +mod_jk+opensslnode
軟件介紹linux
1.JDK(JavaDevelopmentKit)。Java開發工具包。你們都知道Java程序能夠在絕大多數的機器上運行,不須要安裝任何額外的軟件,爲何咱們要安裝JDK呢?這是由於Java程序在開發過程當中,須要將源代碼轉換爲中間代碼形式,也即class文件。日常運行Java程序不須要安裝額外軟件是指對編譯好的Java程序中間代碼,通常操做系統和瀏覽器都安裝有JRE(JavaRuntimeEnvironment),而咱們的開發環境中,通常都須要安裝JDK來對源代碼進行編譯。說白了,安裝了JDK就表明能夠用JDK安裝目錄下bin目錄下的一系列在用Java進行程序開發時可能用到的命令:包括javac,jar,keytool,native2ascii.exe,javaw等。git
2.apache。apache是一個軟件基金會,有不少的著名開源軟件都是由這一基金會動做的。而咱們一般說的apache軟件,是指它的Web服務器,即用來解析靜態網頁的一個程序。有了apache,就能夠把靜態的html網頁放在咱們的電腦上,其它人能夠經過在瀏覽器中輸入咱們電腦ip地址的方式訪問咱們的網頁。要注意的是,如今的apache安裝程序名稱叫httpd。web
3.jboss。也是一個Web服務器,或叫應用服務器。它與apache的區別在於:apache的速度很快,但只能解析靜態網頁,而jboss則能夠解析動態網頁如jsp,其後臺還能夠與Java程序進行解析交互。固然,jboss還有不少強大的功能,但這裏只要瞭解它與apache的主要區別就行了,apache速度很快,但只能解析靜態網頁;jboss功能更強大,能解析動態頁面,但解析靜態頁面時速度不如前者快。算法
4.mod_jk。一般在搭一個服務器的時候,都會利用apache+jboss的方式,這樣便可利用apache處理靜態頁面的速度,又能利用到jboss處理動態頁面的功能。一個用戶瀏覽器的請求過來先通過apache,若是是靜態頁面,就由它進行解析並把結果返回給jboss,若是是動態的網頁,apache就會把這個請求轉發給jboss處理,jboss處理完了,再交給apache返回給用戶端。所以須要一個模塊可以將這兩個東西鏈接起來,進行通訊,同時須要決定哪些東西由apache本身處理,哪些東西轉發給jboss處理。這個東西就是mod_jk。apache
5.openssl。SSL協議即Secure socketlayer所採用的協議,是一種加密的方式,經過這種方式處理後用戶在訪問網站過程當中全部通訊數據就進行了加密,別人即便竊取了通訊的內容,也是加密後的內容,難以破解。對咱們訪問的人來講,就是表現爲網址以https://開頭的,你們注意一下支付寶的網址就是這樣。Openssl實現了SSL加密時須要的一系列加密算法,能夠用來生成密鑰等。生成的密鑰放在服務器的某個文件夾下,並進行必定的配置以後,用戶就能用https://開頭的網址來進行安全訪問了。windows
軟件下載瀏覽器
安裝好了Linux操做系統以後,就能夠進行軟件的安裝了。安裝以前須要下載上述的5個軟件,下載地址以下:
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Apache:http://httpd.apache.org/
Jboss:http://www.jboss.org/jbossas/downloads.html
mod_jk:http://apache.freelamp.com//tomcat/tomcat-connectors/jk/binaries/
openssl:http://www.openssl.org/
軟件安裝
1.JDK安裝
下載獲得JDK安裝文件以後,是一個xxxx.bin文件(其它熟悉Linux程序安裝的同窗也可採用任何其它方式安裝)。
第一步:修改安裝文件權限。用linux命令chmod+x修改bin文件的權限。
第二步:執行bin文件。執行bin文件,會生成一個文件夾,這即是解壓安裝好的JDK了。這個時候可使用該文件夾下的bin目錄下全部命令了。
第三步:拷貝至安裝目標目錄。一般,咱們會將linux系統下安裝好的程序放在某個地方,就如同c:/programfiles文件夾同樣。在linux中一般是/usr/local目錄。所以,將生成的JDK安裝文件夾拷至安裝目標目錄如:usr/local/下,就安裝好了JDK。
第四步:設置環境變量。雖然咱們可使用JDK安裝目錄下bin中的javac,javaw等命令了,但每次都要進入這個文件夾才能執行,爲了能在任何路徑下敲javac命令都會執行,咱們須要將這個bin目錄設置到系統的環境變量中。在Linux中有三個地方可進行環境變量的配置,三種配置方法的說明以下:
/etc/environment裏面定義的環境變量,是全局性的,就是該操做系統的全部用戶均可以訪問到這些環境變量。
/etc/profile裏面定義的環境變量也是全局性的,由全部的用戶共享。與environment不一樣的地方僅在於錄入格式的不一樣。environment中是以"X=y"的形式定義的,profile中要用腳本語句來定義,例如「export$X=y」
而~/.bashrc和~./profile裏面定義的環境變量,僅對當前用戶有效。
這裏在etc/profile中設置,在文件中加入以下內容:
JAVA_HOME=/usr/local/jdk1.6.0_21
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
添加完如上四行後。
第五步:使環境變量生效。執行source/etc/profile使環境變量生效。此時JDK的全部安裝與配置就都完成了。
2.Apache安裝
這裏先講普通安裝,若是Apache要支持ssl,須要先安裝ssl。所以在後面安裝完ssl以後,會再寫一下支持ssl的安裝方式。普通安裝:
第一步:解壓。將下載獲得的.tar.gz安裝包解壓。
第二步:安裝前配置。進行解壓後的目錄,運行./configure。這一步是對安裝以前的一些系統環境進行配置,能夠視爲windows安裝軟件時的一種準備工做。這種準備工做只針對源代碼包安裝時須要,若是是二進制代碼如前面講的jdk安裝,則不須要這一步。
第三步:編譯。在解壓後的目錄下運行make命令。這一步是將全部的源代碼進行編譯打包,生成二進制代碼。
第四步:安裝。仍在上述的目錄下運行makeinstall。這一步完成軟件的安裝。到目前爲止,Apache就已經在機器上安裝好了。
第五步:啓動Apache。進行Apache安裝後的目錄,一般是/usr/local/apache2,進行到bin目錄下,執行./apachectlstart命令,即啓動了Apache。此時在瀏覽器中輸入http://127.0.0.1便可看到Apache服務器啓動後的首頁。
3.Jboss安裝
Jboss是直接解壓便可用的。
第一步:解壓。把下載到的Jboss壓縮包解壓。
第二步:拷貝至安裝目標目錄。指解壓後獲得的目錄拷貝至/usr/local下即完成了jboss的安裝。
第三步:設置環境變量。設置了環境變量以後,可在任何地方運行run.sh命令啓動jboss。跟安裝JDK同樣,設置環境變量就是把Jboss下的bin目錄添加到PATH中去。
JBOSS_HOME=/usr/local/jboss-4.0.5.GA
PATH=$JBOSS_HOME/bin:$PATH
export JBOSS_HOME PATH
第五步:使環境變量生效。執行source/etc/profile使環境變量生效。此時Jboss的全部安裝與配置就都完成了。
4.mod_jk安裝
第一步:更名與拷貝。下載後的mod_jk文件(請下載時根據本身的apache版原本進行選擇)更名爲mod_jk.so,拷貝至apache安裝目錄的modules文件夾下。
第二步:在apache2/conf目錄下的httpd.conf配置文件末尾加入mod_jk的配置文件加載:
Includeconf/mod-jk.conf。mod-jk.conf文件將在第三步中新建。
第三步:新建文件conf/mod-jk.conf,並添加以下內容:
#加載的mod_jk.so文件路徑,這個路徑就是mod_jo.so文件的實際路徑
LoadModule jk_module modules/mod_jk.so
#工做配置文件,將在第四步新建,裏面配置了轉發的jboss結點服務器地址及端口號等。
JkWorkersFile conf/workers.properties
# 日誌記錄文件
JkLogFile logs/mod_jk.log
# 日誌級別
JkLogLevel info
# 日誌格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions 容許你設置一些轉發設置,如SSK KEY SIZE,是否對轉發請求的uri進行解析,是否設置轉發目錄等
JkOptions +ForwardKeySize +ForwardURICompatUnparsed
# 請求日誌格式
JkRequestLogFormat "%w %V %T"
#把全部應用下的內容轉發至loadbalancer去處理,一個loadbalancer可設置多個結點,loadbalancer在conf/workers.properties中配置。
JkMount /__application__/* loadbalancer
#轉發路徑詳細配置文件,這個文件將在第五步中建立並配置。
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties
# Add sharedmemory.設置共享內存,負載均衡的知識須要學習
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
# Note: Replaced JkShmFile logs/jk.shm due to SELinux issues.Refer to
#https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225452
JkShmFile run/jk.shm
# Add jkstatus for managing runtimedata運行時數據設置
<Location /jkstatus>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
第四步:新建conf/workers.properties並在其中輸入以下內容以定義一個轉發結點:
# for mapping requests
# The configuration directives are valid
# for the mod_jk version 1.2.18 and later
# 轉發列表
worker.list=loadbalancer,status
# Define Node1
# modify the host as your host IP or DNSname.端口,這個端口在jboss的server.xml文件中有配置
worker.node1.port=8009
worker.node1.host=127.0.0.1
worker.node1.type=ajp13
worker.node1.lbfactor=1
# worker.node1.connection_pool_size=10 (1)
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1
# Status worker for managing load balancer
worker.status.type=status
第五步:新建conf/uriworkermap.properties,在其中加入轉發路徑的配置
# Mount the Servlet context to the ajp13worker
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
第六步:啓動apache和jboss。在瀏覽器中輸入127.0.0.1可看到apache的頁面。路徑後面加入/web-console時,出現jboss服務的頁面。安裝成功!
請確認/usr/local/jboss-4.0.5.GA/server/default/deploy/jbossweb-tomcat55.sar目錄下的server.xml文件中以下內容沒有被註釋掉:
<!-- A AJP 1.3 Connector on port 8009-->
5.openssl安裝,並使apache能以https方式處理請求
採用https://開頭的網址服務器端與客戶端通訊會在第一次發起鏈接時,給客戶端幾個信息:
1).服務器端的證書籤名,通常經過第三方CA機構認識,名稱通常是域名或公司的名稱,所以若是兩者相同,則認爲該網站可靠。不然會彈出證書不安全的警告信息,如咱們本身測試時所採用的SSL證書是未經認證的,就會彈出這個窗口。
2).本次通訊採用的公開加密密鑰,用戶的瀏覽器發送信息時,以此公開密鑰加密發給服務器便可。
3).本次通訊採用的私有解密密鑰,用戶的瀏覽器收到服務器信息時,按此密鑰解密便可。
openssl是實現了SSL的一系列加密算法,可用來生成證書等。早期版本的apache服務器如1.3.x以前的版本要使用ssl須要用到mod_ssl.so模塊,如今都自帶了,不須要另做處理。
第一步:解壓#tar zxvf openssl-0.9.7g.tar.gz
第二步:編譯安裝openssl。這個軟件主要是用來生成證書:
#cd openssl-0.9.7g
#./config
#make
#make test
#make install
把openssl放進內核目錄下,使其在任何目錄下都能運行。
#cd /usr/local/bin
#ln -s /usr/local/ssl/bin/openssl openssl
第三步:編譯安裝apache。雖然咱們安裝教程的apache安裝放在前面,但支持ssl的apache安裝應該在openssl安裝完成以後再進行安裝。所以,原安裝的apache沒必要刪除,按以下方式再執行一次安裝命令便可,原有的配置文件並不會覆蓋。這個configure必定要記住,我安裝時先安裝的apache,沒用這些選項,結果運行起來沒反應。
#cd …… /httpd-2.0.54
#./configure --prefix="/opt/apache2" --enable-so --enable-ssl--with-ssl="/usr/local/ssl/bin"
#make
#make install
第四步:生成密鑰相關的文件。
#cd ../apache2/
#cd conf/
#mkdir ssl.key
##而後在該目錄下生成證書:
#cd ssl.key/
##生成服務器私鑰:
#openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.......................++++++
.................................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
##生成服務器證書請求,並按要求填些相關證書信息:
#openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will beincorporated
into your certificate request.
What you are about to enter is what is called a DistinguishedName or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:tyl
Organization Name (eg, company) [Internet Widgits PtyLtd]:tz
Organizational Unit Name (eg, section) []:tz
Common Name (eg, YOUR name) []:tyl
Email Address []:tangyl@ruyi.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# openssl x509 -req -days 700 -in server.csr -signkey server.key-out server.cert
Signature ok
subject=/C=AU/ST=Some-State/L=tyl/O=tz/OU=tz/CN=tyl/emailAddress=tangyl@ruyi.com
Getting Private key
Enter pass phrase for server.key:
爲了安全,而後咱們把這些文件的權限都設爲400
chmod 400 server.key
chmod 400 server.cert
第五步:配置apache,使之與生成的密鑰文件結合起來。
對apache2/conf/ssl.conf文件修改的地方以下幾處:
#SSLCertificateFile /opt/apache2/conf/ssl.crt/server.crt#108行
SSLCertificateFile /opt/apache2/conf/ssl.key/server.cert
#SSLCertificateFile /opt/apache2/conf/ssl.crt/server-dsa.crt
SSLCertificateKeyFile /opt/apache2/conf/ssl.key/server.key
#SSLCertificateKeyFile/opt/apache2/conf/ssl.key/server-dsa.key
第六步:這樣咱們就配好了ssl如今咱們來讓apache啓動ssl
……/apache2/bin/apachectl startssl
而後要求輸入證書密碼,正確輸入後ssl就連同apache一塊兒啓動
在瀏覽器中輸入:https://127.0.0.1
6.使Apache轉發的https請求由jboss處理
剛纔的https://127.0.0.1可以訪問apache的目錄,可是當加入jboss的地址以後(如前面配置的/jmx-console),不行的哦。此時,須要設置一下apache要遇到https時,哪些內容須要轉發到jboss去解析,所以須要增長以下這步。
設置apache中哪些url的https請求轉發到jboss處理。在ssl.conf的VirtualHost結點中加入:JkMount/jmx-console/* loadbalancer等url轉發配置。
此時在瀏覽器中輸入https://時,後面加入https://127.0.0.1/jmx-console也可訪問了,證實這些請求已經成功由apache轉發給了jboss處理。
至此,jboss+apache+mod_jk+openssl環境就搭建好了。