1. 程式人生 > >Linux下JDK、OpenSSL、Tomcat、ARP、Apache安裝整合手冊

Linux下JDK、OpenSSL、Tomcat、ARP、Apache安裝整合手冊

Linux環境:CentOS6.6

 

一、安裝前提準備

 

在終端下輸入命令將系統更新為最新。

 

[[email protected] ~]#yum -y update

 

1、首先確認是否安裝GCC編譯環境,如果沒有安裝,可以通過線上安裝的方式進行安裝,確保伺服器聯網。

 

[[email protected] ~]#yum -y install gcc

 

2、安裝apr

 

下載apr安裝包,上傳、解壓、開始安裝

 

[[email protected] download]#cd apr-1.4.5

[[email protected] apr-1.4.5]#./configure  --prefix=/usr/local/apr

 

[[email protected] apr-1.4.5]#make

[[email protected] apr-1.4.5]#make install

 

設定apr的環境變數,編輯/etc/profile檔案,在末尾新增

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

儲存後,應用,執行以下命令

[[email protected] download]#source /etc/profile

 

3、安裝apr-util

 

下載apr-util安裝包,上傳、解壓、開始安裝

 

[[email protected] download]#tar -vzxf apr-util-1.3.12.tar.gz

 

[[email protected] download]#cd  apr-util-1.3.12

 

[[email protected]

apr-util-1.3.12]#./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config

[[email protected] apr-util-1.3.12]#make

 

[[email protected] apr-util-1.3.12]#make install

 

4、安裝OpenSSL

 

到OpenSSL官網下載最新的OpenSSL安裝包,上傳到伺服器,依次執行以下命令

 

 --解壓

[[email protected] download]#tar -xvzf openssl-1.0.2a.tar.gz       

--進入原始檔目錄

[[email protected] download]#cd openssl-1.0.2a

--指定安裝路徑

[[email protected] openssl-1.0.2a]#./config  --prefix=/usr/local/openssl

[[email protected] openssl-1.0.2a]#./config -t

--編譯

[[email protected] openssl-1.0.2a]#make

--安裝

[[email protected] openssl-1.0.2a]#make install

 

二、JDK安裝

 

1、解除安裝系統自帶JDK

CentOS下預設自帶OpenJDK,建議更換

 

--檢視系統安裝了那些jdk,全部解除安裝

[[email protected] ~]#rpm -qa | grep java

--解除安裝 java-1.7.0-openjdk-1.7.0.75-2.5.4.0.el6_6.i686

[[email protected] ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.75-2.5.4.0.el6_6.i686   

 

2、確認Linux版本

--檢視安裝的Linux版本

[[email protected] ~]#file /sbin/init

注意:

     JDK版本要與作業系統一致,32位只能裝32位,64位下最好裝64位。

     確認Linux版本後到Oracle官網下載相應版本的安裝包,建議下載rpm安裝包。

 

3、安裝JDK並配置相應環境變數

手動安裝JDK命令

[[email protected] download]#rpm -ivh jdk-7u79-linux-i586.rpm

 

預設安裝位置為/usr/java/

配置JAVA環境變數,編輯/etc/profile檔案,在檔案末尾加入以下三行

export JAVA_HOME=/usr/java/jdk1.7.0_79

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/bin

 

儲存後,應用,執行以下命令

[[email protected] ~]#source /etc/profile

 

--檢查JDK安裝情況

[[email protected] ~]#java -version

 

三、Tomcat設定

 

Tomcat下載後上傳,解壓即可,核心是開啟apr,需要native的編譯和安裝。

 

Tomcat可以使用APR來提供超強的可伸縮性和效能,更好地整合本地伺服器技術。

 

APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x的核心。

 

APR有很多用途,包括訪問高階IO功能(例如sendfile,epoll和OpenSSL),OS級別功能(隨機數生成,系統狀態等等),本地程序管理(共享記憶體,NT管道和UNIX sockets)。這些功能可以使Tomcat作為一個通常的前臺WEB伺服器,能更好地和其它本地web技術整合,總體上讓Java更有效率作為一個高效能web伺服器平臺而不是簡單作為後臺容器。

 

在產品環境中,特別是直接使用Tomcat做WEB伺服器的時候,應該使用Tomcat Native來提高其效能。

Tomcat的SSL配置分為兩種情況:使用APR、不使用APR

 

證書整合採用APR模式:

native編譯,native無需下載,在tomcat的bin目錄下有,解壓後進入tomcat-7.0.27/bin/tomcat-native-1.1.23-src/jni/native/目錄

[[email protected] native]# ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl

[[email protected] native]#make

 

[[email protected] native]#make install

 

配置SSL(如果採用Apache直接整合SSL證書的方式,該步驟可以略過)

配置Tomcat,遮蔽8080,私鑰的保護密碼為空時可以去掉SSLPassword配置項。

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" SSLCertificateFile="D:\tomcat-7.0.27-ssl\conf\2_gtgymap.com.crt" SSLCertificateKeyFile="D:\tomcat-7.0.27-ssl\conf\3_gtgymap.com.key" SSLPassword="Dsp21stccomcn" clientAuth="optional" sslProtocol="TLS" />

 

四、Apache的安裝和優化

 

1、檢查系統是否按照 Apache服務

[[email protected] ~]#chkconfig  --list httpd

如果已安裝了Apache服務,則將Apache服務關閉ba

[[email protected] ~]#chkconfig httpd off

 

2、下載Apache原始檔;

 

3、將安裝包上傳到伺服器/opt/目錄下,並解壓。

解壓命令

[[email protected] download]#tar -xvzf httpd-2.4.12.tar.gz

 

4、定位到httpd-2.4.12目錄下

[[email protected] download]#cd httpd-2.4.12

 

5、配置Apache編譯路徑和相關引數,並編譯、安裝: 依次執行

[[email protected] httpd-2.4.12]# ./configure  --prefix=/usr/local/apache  --enable-so --enable-mods-shared=all -with-apr=/usr/local/apr -with-apr-util=/usr/local/apr-util

[[email protected] httpd-2.4.12]#make

[[email protected] httpd-2.4.12]#make install

執行完成後Apache的安裝路徑為 /usr/local/apache

進入Apache安裝目錄檢查相關模組是否編譯安裝成功,重點是modules下的各個模組。

 

6、進入Apache安裝目錄,啟動Apache服務

[[email protected] httpd-2.4.12]#cd /usr/local/apache/bin

[[email protected] bin]#./apachectl -k start

 

7、通過瀏覽器訪問,確認Apache是否安裝成功,如果無法訪問,首先確認是否作業系統防火牆遮蔽了80埠,可以用如下命令停止作業系統的防火牆

 

[[email protected] ~]#service iptables stop

 

關閉防火牆後,如果可以在瀏覽器看到It’s work!,那麼請將埠新增到防火牆例外中:

編輯/etc/sysconfig/iptables檔案,在22埠這條規則的下面新增要開放的埠

 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

 

重啟防火牆,驗證規則是否生效。

 

8、配置Apache,請在Apache下按以下步驟進行配置配置。

 

(1)基本配置

 

配置服務根目錄,這樣所有涉及該目錄皆可使用變數形式作為引數配置

Define SRVROOT “usr/local/apache2.4"

ServerRoot "${SRVROOT}"

 

確認埠是否為80埠

Listen 80

 

確認ServerName(如果沒有域名,使用IP即可)

ServerName www.21at.net

 

配置DocumentRoot(可用於index.html跳轉)

DocumentRoot "${SRVROOT}/htdocs"

 

配置錯誤404等跳轉

ErrorDocument 500 "The server made a boo boo."

ErrorDocument 500 "/index.html"

ErrorDocument 404 "/index.html"

ErrorDocument 402 "/index.html"

具體說明請參見《Apache配置404錯誤頁面》

 

(2)Apache效能優化。

 

判斷httpd的工作模式,進入到Apache的bin目錄下,輸入命令:

[[email protected] bin]#httpd -l

 

如果是worker模式,配置以下內容:

<IfModule mpm_worker_module>

    StartServers 20

    MaxClients 2000

    ServerLimit 100

    MinSpareThreads    50

    MaxSpareThreads    200

    ThreadLimit 200

    ThreadsPerChild    100

    MaxRequestsPerChild    0

</IfModule>

如果是prefork模式,配置以下內容:

<IfModule mpm_prefork_module>

    ServerLimit 2000

    StartServers 50

    MinSpareServers 20

    MaxSpareServers 50

    MaxClients 2000

    MaxRequestsPerChild 0

</IfModule>

 

具體說明請參見《Apache的工作方式及效能優化》

 

(2)配置Apache的日誌按天生成

利用Apache自帶的rotatelogs工具,以下是配置項

注意的問題:rotatelogs工具必須是全路徑

ErrorLog "|/usr/local/apache/bin/rotatelogs -l logs/access-%Y-%m-%d.log 86400"

CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/access-%Y-%m-%d.log 86400" combined

 

(3)多虛擬主機配置

在虛擬主機配置時,目前已見到兩種場景,第一種為市政管委網站,一個Apache伺服器搭建兩個虛擬主機,採用兩個域名分別訪問不同主機;第二種為公司即時服務門戶,一個Apache伺服器搭建一個虛擬機器主機,採用一個域名兩個虛擬目錄分別訪問不同主機。

 

在配置時,可以直接在httpd.conf下直接配置,也可以

 

市政管委網站相關配置段如下,以下配置了兩個虛擬主機 www.bjmac.gov.cn和www.gcz.gov.cn,在各自虛擬主機內部配置了反向代理,通過不同的域名訪問不同的主機

 

<VirtualHost *:80>

ServerName www.bjmac.gov.cn

DocumentRoot "/usr/local/apache/htdocs"

<Directory "/usr/local/apache/htdocs">

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted

</Directory>

ProxyRequests Off     

ProxyPreserveHost On

ProxyPass /pub http://172.24.3.32:3008/pub/

ProxyPassReverse /pub http://172.24.3.32:3008/pub/

ProxyPass /template http://172.24.3.32:3008/template/

ProxyPassReverse /template http://172.24.3.32:3008/template/

ProxyPass /gwweb2011 http://172.24.3.32:3008/gwweb2011/

ProxyPassReverse /gwweb2011 http://172.24.3.32:3008/gwweb2011/

</VirtualHost>

 

<VirtualHost *:80>

ServerName www.gcz.gov.cn

DocumentRoot "/usr/local/apache/htdocs2"

<Directory "/usr/local/apache/htdocs2">

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted

</Directory>

ProxyRequests Off

ProxyPreserveHost On

ProxyPass /worklog http://172.172.5.202/worklog/

ProxyPassReverse /worklog http://172.172.5.202/worklog/

</VirtualHost>

 

公司即時服務門戶相關配置段如下,以下配置了一個虛擬主機 www.21at.net,在虛擬主機內部配置了兩個虛擬目錄,訪問不同的主機。

 

<VirtualHost _default_:80>

 

    ServerName www.21at.net

    ServerAlias 21at.net

 

    DocumentRoot "${SRVROOT}/htdocs"

 

    #服務門戶

    Alias /portal  "${SRVROOT}/htdocs/"

    <Directory "${SRVROOT}/htdocs">

        Options Indexes FollowSymLinks

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

 

    #服務中心

    Alias /center  "${SRVROOT}/htdocs2/"

    <Directory "${SRVROOT}/htdocs2">

        Options Indexes FollowSymLinks

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

 

    #資源目錄

    Alias /atp "/sdata/catalog"

    <Directory "/sdata/catalog">

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

    </Directory>

 

    #資料目錄

    Alias /source "/sdata/source"

    <Directory "/sdata/source">

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

    </Directory>

 

    ProxyRequests Off

    ProxyPreserveHost On

 

    ProxyPass /geoserver http://192.168.204.30:8888/geoserver

    ProxyPassReverse /geoserver http://192.168.204.30:8888/geoserver

</VirtualHost>

 

具體說明請參見《Apache下一個站點繫結多個域名》

 

10、SSL配置及代理相關配置

 

如果網站(例如公司即時服務門戶https://www.21at.net)採用了SSL證書加密,則需要開啟SSL相關模組。

 

(1)載入SSL相關模組

LoadModule ssl_module modules/mod_ssl.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

(2)載入代理相關模組

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_express_module modules/mod_proxy_express.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

 

以上模組,在Apache的Windows版本中,直接放開#即可,在Linux版本下,可能需要自行填寫,因為現場部署環境下曾經遇到過雖然modules資料夾內有該模組,但是httpd.conf中卻沒有load。

 

(3)配置SSL

 

在httpd.conf檔案中找到

<IfModule ssl_module>

加入Include conf/extra/httpd-ahssl.conf,用於載入與SSL相關配置

 

httpd-ahssl.conf虛擬主機配置樣例

 

<VirtualHost *:443>

  SSLEngine on

  ServerName www.21at.net:443

  SSLCertificateFile "${SRVROOT}/private/21at.net_crt.txt"

  SSLCertificateKeyFile "${SRVROOT}/private/21at.net_key.txt"

  #配置根證書連線檔案,無根證書連線檔案可以去到該配置項

  SSLCertificateChainFile "${SRVROOT}/private/21at.net_INTERMEDIATE_CA.txt"

  SSLProxyEngine On

  SSLProxyCheckPeerCN On

  SSLProxyCheckPeerExpire On

 

  #以下配置SSL反向代理

  ProxyPass /ATPortal http://192.168.204.30:8080/ATPortal

  ProxyPassReverse /ATPortal http://192.168.204.30:8080/ATPortal

 

  ProxyPass /ATCenter http://192.168.204.31:8080/ATCenter

  ProxyPassReverse /ATCenter http://192.168.204.31:8080/ATCenter

 

</VirtualHost>

 

樣例檔案:httpd-ahssl.conf

 

(4)開啟Gzip壓縮

#Gzip壓縮

<IfModule mod_deflate.c>

    #壓縮率, 6是建議值.

    DeflateCompressionLevel 6

    SetOutputFilter DEFLATE

    #設定不對字尾gif,jpg,jpeg,png的圖片檔案進行壓縮

    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

    #同上,就是設定不對exe,tgz,gz。。。的檔案進行壓縮

    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary

    SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

 

    #設定對檔案是文字的內容進行壓縮,例如text/html  text/css  text/plain等

    AddOutputFilterByType DEFLATE text/*

    #這段程式碼你只需要瞭解application/javascript application/x-javascript這段就可以了,這段的意思是對javascript檔案進行壓縮

    AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript

    #這段是告訴apache對php型別的檔案進行壓縮

    AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp

 

    # Netscape 4.x 有一些問題,所以只壓縮檔案型別是text/html的

    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 有更多的問題,所以不開啟壓縮

    BrowserMatch ^Mozilla/4.0[678] no-gzip

    # IE瀏覽器會偽裝成 Netscape ,但是事實上它沒有問題

    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

</具體說明請參見《Apache開啟Gzip壓縮》

 

(5)防盜鏈配置

# 防盜鏈配置 

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://21at.net/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://21at.net$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.21at.net/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.21at.net$ [NC]

RewriteRule .*\.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://www.21at.net/index.html [R,NC]

 

具體說明請參見《Apache實現圖片防盜鏈》

 

(6)自動跳轉配置

# 自動跳轉配置

#RewriteCond %{HTTP_HOST} ^21at.net/ [NC]

#RewriteRule ^(.*)$ http://www.21at.net/$1 [L,R=301]

 

(7)隱藏Apache版本號及敏感資訊

 

修改httpd.conf檔案的下面配置為:

ServerTokens ProductOnly

ServerSignature Off

 

重啟Apache,現在 http 頭裡面只看到:

Server: Apache

 

具體說明請參見《隱藏Apache的版本號及其它敏感資訊》

 

(8)關閉TraceEnable

 

黑客攻擊網站前一般會蒐集網站的相關資訊,以查找出系統可能存在的漏洞,比如系統版本和名稱,網站伺服器版本和名稱,對外開放埠,確認網址IP地址和DNS資訊,WEB資料收集等。

而TraceEnable選項是預設開啟,用途是除錯,在網站漏洞檢測中是一個警告漏洞,建議關閉。

2.0.55以上版本的Apache伺服器,可以在httpd.conf的尾部新增:

    

TraceEnable off

 

如果你使用的是Apache,確認rewrite模組啟用(httpd.conf,下面一行前面沒有#):

 

LoadModule rewrite_module modules/mod_rewrite.so

- 在各虛擬主機的配置檔案裡新增如下語句:

RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^TRACE

RewriteRule .* - [F]

注:可以在httpd.conf裡搜尋VirtualHost確定虛擬主機的配置檔案。

 

 

其他資料:

《Apache下.htaccess檔案的常用配置》

《25個Apache效能優化技巧推薦》