構建Linux下的Resin + Apache + jsp
構建Linux下的Resin + Apache + jsp
參考:http://blog.chinaunix.net/uid-29140694-id-4018236.html
如果你的網站是建立在apache下現在又想使用jsp,怎麼辦呢?你可以通過一些支援apache的jsp引擎(如resin,tomcat,jser等)來實現。這裡介紹怎麼配置apache+resin使apache支援jsp。
為什麼要整合resin和apache,已經整合的好處如下:
a.動靜分離
b.早起的resin、tomcat的http服務不太好
c.早期的resin、tomcat對rewrite和expire功能不太好
系統環境centos7.2
1、首先安裝apache
(1)下載apache,下載地址為:http://archive.apache.org/dist/httpd/
(2)tar zxvf httpd-2.2.26.tar.gz
(3)cd httpd-2.2.26
(4)./configure --prefix=/usr/local/httpd --enable-module=so
(5)make && make install
(6)apache安裝完成後,進入/usr/local/httpd/bin/目錄下,執行./apachecl start命令啟動apache
(7)訪問
如果安裝./configure中出現:
error: no acceptable C compiler found in $PATH
請先安裝gcc
yum install gcc
2、安裝Resin
(1)下載resin,下載地址為:http://www.caucho.com/download/resin-4.0.25.tar.gz
(2)tar zxvf resin-4.0.25.tar.gz
(3)cd resin-4.0.25
(4)./configure --prefix=/usr/local/resin --enable-64bit --with-apxs=/usr/local/httpd/bin/apxs (安裝resin需指明apache的安裝目錄)
(5)make && make install
(6)進入apache目錄 /usr/local/httpd/conf/目錄下,檢視httpd.conf檔案如果發現以下內容,則表示整合成功。
6800是resin預設的真正的埠號,如果resin修改了,這裡也得修改
LoadModule caucho_module /usr/local/httpd/modules/mod_caucho.so
ResinConfigServer localhost 6800
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
報錯一(我還沒安裝jdk)
configure: error:
*** Can't find JNI directory in JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin
*** JNI is expected in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/include/linux
報錯二(jdk配置不全,報的錯)
checking for JAVA_HOME... /usr/local/jdk1.8
configure: error: Can't find valid JAVA_HOME /usr/local/jdk1.8
解決(重新正確配置好即可)
https://blog.csdn.net/xiao__jia__jia/article/details/85079606
報錯
OPENSSL : No OpenSSL has been found
*** OpenSSL libraries cannot be compiled ***
先執行安裝
yum -y install openssl openssl-devel
3、apache與resin的配置
(1)修改apache配置檔案/usr/local/httpd/conf/httpd.conf修改其工程目錄:
DocumentRoot "/data/resin"
<Directory "/data/resin">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
修改完apache之後,同時修改resin的配置檔案/usr/local/resin/conf/resin.xml 將以下部分中的root-directory改為你的工程目錄與apache的工程目錄相同。
<host id="" root-directory=".">
<web-app id="/" root-directory="/data/resin"/>
<resin:if test="${resin_doc}">
<web-app id="/resin-doc" root-directory="${resin.root}/doc/resin-doc"/>
</resin:if>
</host>
4、服務測試
(1)將你的 index.jsp頁面 放到/data/resin/test目錄下。
(2)進入resin目錄/usr/local/resin/bin目錄下執行./resinctl restart命令重啟resin服務。
(3)訪問http://127.0.0.1:8080/index.jsp可訪問到index.jsp頁面,說明resin服務配置正常。
[[email protected] bin]# curl http://127.0.0.1:8080/test/index.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
hello world!Wanjia
</body>
</html>
(4)進入apache目錄/usr/local/httpd/bin目錄下執行./apachectl restart命令重啟apache服務。
(5)同樣訪問http://127.0.0.1/test/index.jsp ,此時的埠號為apache的埠號,發現apache也可以解析jsp檔案了,整合成功。
當一個靜態請求來了,apache自己就處理了,如果是動態頁面,就轉發給resin。
[[email protected] bin]# curl http://127.0.0.1/test/index.jsp
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /test/index.jsp
on this server.</p>
</body></html>
apache許可權不夠。
解決方法:
修改apache的httpd.conf
另外:可以通過修改apache的配置檔案httpd.conf中的DirectoryIndex,將index.jsp加入進去,則可通過訪問http://127.0.0.1/test/ 的方式訪問web工程了。