整合整合Apache和Tomcat
- Apache是web伺服器,Tomcat是應用(java)伺服器,它只是一個servlet容器,是Apache的擴充套件。
- Apache和Tomcat都可以做為獨立的web伺服器來執行,但是Apache不能解釋java程式(jsp,serverlet)。
- Apache和Tomcat是獨立的,在同一臺伺服器上可以整合搜尋。
一、安裝Apache
Apache版本:httpd-2.4.33.tar.gz
安裝前準備:下載 httpd-2.4.33.tar.gz
apr-1.6.3.tar.gz
apr-util-1.6.1.tar.gz
expat-2.0.1.tar.gz
pcre-8.10.zip
步驟:
# tar xzvf httpd-2.4.33.tar.gz
# cd httpd-2.4.33
# ./configure --prefix=/usr/local/apache2 --enable-so (apache2看實際目錄名字)
# sudo make
# sudo make install
./configure --prefix=/usr/local/apahce --enable-so ,若提示以下錯誤:
error: APR not found. Please read the documentation
則安裝apr
# tar xzvf apr-1.6.3.tar.gz # cd apr-1.6.3 # ./configure --prefix=/usr/local/apr # sudo make # sudo make install
再次返回到httpd-2.4.33 目錄進行安裝,檢查編譯環境
若報錯:configure: error: APR-util not found. Please read the documentation
則安裝apr-util
# tar xzvf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# sudo make
# sudo make install
安裝apr-util包make時報錯:make: *** [all-recursive] Error 1
解決辦法:安裝Expat解析XML
# tar xzvf expat-2.0.1.tar.gz
# cd expat-2.0.1
# ./configure
# sudo make
# sudo make install
安裝完成後重新返回apr-util-1.6.1目錄執行
# sudo make
# sudo make install
再次返回到httpd-2.4.33 目錄進行安裝,檢查編譯環境,執行
./configure --prefix=/usr/local/apache --enable-so 仍提示APR-util not found增加--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
即
./configure --prefix=/usr/local/apache --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
執行後出現
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
#./configure –help | grep pcre
--with-pcre=PATH Use external PCRE library
則安裝pcre-8.10.zip
#unzip -o pcre-8.10.zip
#cd pcre-8.10
#./configure --prefix=/usr/local/pcre
#sudo make
#sudo make install
最後安裝apahce:(安裝httpd服務需要指定apr apr-util pcre這三個目錄才能正常安裝)
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
#sudo make
#sudo make install
httpd服務安裝完成
二、啟動Apache並訪問驗證
1.預設的web根目錄為:htddocs
預設埠為:80
為避免衝突可將埠號修改為8088
# vi /usr/local/apache/conf/httpd.conf
找到 listen 80 修改為 8088儲存退出
2.啟動Apache伺服器
# /usr/local/apache/bin/apachectl -k start
進入安裝目錄
# cd /usr/local/apache/bin/
# ./apachectl –k start|stop|restart 分別為啟動 停止 重啟
netstat -ltnp 檢查網路埠 驗證剛才我們的埠號是否打開了
# netstat –ltnp
這時檢視我們的埠號是否打開了 結果:8088打開了
開啟瀏覽器 輸入 http://IP地址:8088
出現 it works 表示連線已經正常
到此安裝完畢
3.配置rc.local檔案將Apache的服務加入到開機自動啟動(這步未使用網上看到的寫出來預防萬一)
# echo '/usr/local/apache2/bin/apachectl -k start' >> /etc/rc.d/rc.local
如果安裝完成之後,發現還報錯,可以將apr,apr-util的解壓包拷貝至http解壓包的srclib/目錄下,然後重新安裝
三、tomcat已安裝
四、編譯生成mod_jk
1、下載 tomcat-connectors-1.2.43-src.tar.gz
2、下載後,首先把tomcat-connectors-1.2.43-src.tar.gz複製到/usr/local
# cp tomcat-connectors-1.2.43-src.tar.gz /usr/local
解壓
# tar xzvf tomcat-connectors-1.2.43-src.tar.gz
解壓後,進入native資料夾
# cd tomcat-connectors-1.2.43-src/native
# ./configure --with-apxs=/usr/local/apache/bin/apxs (此處可根據apxs實際地址修改)
# make
完成編譯後,在/usr/local/tomcat-connectors-1.2.43-src/native/apache-2.0資料夾下可以找到mod_jk.so檔案
# cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/
編譯完成
3、問題:在編譯mod_jk.so檔案的時候,我遇到了找不到apxs檔案,所以編譯不了,apxs是一個為Apache HTTP伺服器編譯和安裝擴充套件模組的工具,用於編譯一個或多個源程式或目的碼檔案為動態共享物件,使之可以用由mod_so提供的LoadModule指令在執行時載入到Apache伺服器中。
正常按順序安裝後apxs就已存在,若沒有有可能是查詢路徑有問題
我的是在/usr/local/apache/bin/apxs路徑下
五、整合Apache和Tomcat
1、建立配置檔案
在/usr/local/apache/conf/下面建立兩個配置檔案mod_jk.conf和workers.properties
mod_jk.conf 內容如下:
#LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /*/servlet/* worker1
JkMount /*.jsp worker1
JkMount /application/* worker1
JkMount /*.do worker1
JkMount /*.class worker1
JkMount /*.jar worker1
- 其中,前兩個引數(JkWorkersFile和JkLogFile)具體的值會因為apache安裝路徑的不同而不同,此處需寫入自己的apache伺服器的路徑。
- 檔案末尾的幾行JkMount意思是將符合條件的檔案交給Tomcat處理。
- 中間則是一些常規引數的設定。
workers.properties內容如下
# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost (因安裝在遠端伺服器上故我設定為ip)
worker.worker1.port=8009 (此處是tomcat的埠)
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
接著是對/conf資料夾下自帶的httpd.conf檔案加入如下內容:
LoadModule jk_module modules/mod_jk.so
Include /etc/httpd/conf/mod_jk.conf
<VirtualHost *:80>
DocumentRoot "/usr/local/apache-tomcat-7.0.81/webapps/test" (此處為tomcat新建測試test專案目錄,根據實際情況修改)
JkMount /* worker1
</VirtualHost>
儲存之後重啟Apache和Tomcat。
新建index.jsp頁面放於tomcat目錄webapps/test/index.jsp
<html>
<head><title>Hello</title></head>
<body>
<%
java.util.Date currentTime = new java.util.Date();
%>
<%=currentTime%>
</body>
</html>
訪問http://ip:8088/test/index.jsp
若頁面正常載入顯示當前系統時間,則說明整合成功
但我目前訪問時報502錯誤,原因未知,不知道是不是配置檔案存在問題,若後續解決會更新文章
----------------------------------------------------------------------------------------------------------------
過程中遇到的問題:
一、xxx is not in the sudoers file.This incident will be reported.的解決方法
1.切換到root使用者下
su - root
2.新增sudo檔案的寫許可權,命令是:
chmod u+w /etc/sudoers
3.編輯sudoers檔案
vi /etc/sudoers
找到這行 root ALL=(ALL) ALL,在他下面新增xxx ALL=(ALL) ALL (這裡的xxx是你的使用者名稱)
ps:這裡說下你可以sudoers新增下面四行中任意一條
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允許使用者youuser執行sudo命令(需要輸入密碼).
第二行:允許使用者組youuser裡面的使用者執行sudo命令(需要輸入密碼).
第三行:允許使用者youuser執行sudo命令,並且在執行的時候不輸入密碼.
第四行:允許使用者組youuser裡面的使用者執行sudo命令,並且在執行的時候不輸入密碼.
4.撤銷sudoers檔案寫許可權,命令:
chmod u-w /etc/sudoers
這樣普通使用者就可以使用sudo了.
二、Linux檢視tomcat版本
先進到tomcat的bin目錄下(cd /tomcat目錄/bin),在執行./version.sh
三、vim 命令
https://blog.csdn.net/feosun/article/details/73196299