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]
[[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效能優化技巧推薦》