1. 程式人生 > >構建Linux下的Resin + Apache + jsp

構建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)訪問

http://127.0.0.1/頁面檢視apache服務是否安裝正常。

如果安裝./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工程了。