Apache与Resin整合详细技术文档 (for Linux) 一、 版本信息 JDK:jdk-6u27-linux-i586-rpm Apache:httpd-2.4.9 Resin:resin-3.1.8 二、 系统环境 Linux:Red Had Linux5 服务器IP地址:192.168.1.206 三、 要求 搭建Apache与Resin整合的Web环境。要求静态页面由Apache处理,动态请求交由Resin处理。 四、 安装过程 JDK的安装步骤(略)。 Apache: 这里使用目前最新的2.49版Apache。首先将httpd-2.4.9.tar.gz包拷贝至/usr/ftp目录下; 使用tar –zxvf httpd-2.4.9.tar.gz解压,并在当前目录中生成httpd-2.4.9目录。 cd httpd-2.4.9 ./configure –-prefix=/opt/apache2 回车,报出了依赖关系:如图 这里需要安装APR,将apr-1.4.6.tar.gz放入/usr/ftp中,使用tar-zxvf apr-1.4.6.tar.gz解压,生成apr-1.4.6目录,并进入,执行 ./configure make make install 成功! 返回到Apache目录中:cd /usr/ftp/httpd-2.4.9 执行./configure --prefix=/opt/apache2 --with-apr=/usr/ftp/apr-1.4.6回车,报出另一个依赖关系:如图 这次需要Apr-Util,将apr-util-1.5.1.tar.gz放入/usr/ftp目录中,使用tar –zxvf apr-util-1.5.1.tar.gz解压,生成apr-util-1.5.1目录,进入,执行: ./configure --with-apr=/usr/ftp/apr-1.4.6 注意:这里要指定Apr的安装路径,不然会报出与Apr的依赖关系。 make make install 成功! 返回到Apache目录中:cd /usr/ftp/httpd-2.4.9 执行 ./configure --prefix=/opt/apache2 --with-apr=/usr/ftp/apr-1.4.6 --with-apr-util=/usr/ftp/apr-util-1.5.1 成功! 注意:prefix指Apache要安装到的路径,如果不设定这个参数,将会默认安装到/usr/local/apache2目录中;后面的两个with,指的是安装Apache所需要的两个依赖包(在纯净系统中,还需要一个pcre包,安装方法与Apr一样,只是在最后执行Apache的configure时,要多写一个 --with-pcre=……)。 下一步就是对Apache进行编译和安装,在/usr/ftp/httpd-2.4.9目录中执行: make make install 成功!在/opt 目录中会生成一个apache2的目录。 启动Apache:/opt /apache2/bin/apachectl start 回车。 在浏览器中输入服务器IP地址:http://192.168.1.206 出现以下界面: 说明启动成功! Resin: 将resin-3.1.8.tar.gz包拷入/opt目录下,使用tar –zxvf resin-3.1.8.tar.gz解压,生成resin-3.1.8目录,进入。 执行./configure --with-apxs=/opt/apache2/bin/apxs (这个参数的意思是,在/opt/apache/modules目录下生成一个与Resin整合时必要的文件mod_caucho.so) make 在编译过程中,报出如下错误: 意思是mod_caucho.c文件中有几个成员变量找不到,需要修改名称。 vi /opt/resin-3.1.8/modules/c/src/apache2/mod_caucho.c 打开mod_caucho.c文件,在命令模式下输入行号后按下G,跳转到该行。例如:588G,这时会定位到588行,按上面的错误提示,找到remote_ip,修改为client_ip,按照错误提示,依次修改完成。591行的remote_addr改为client_addr。修改完毕,保存退出。 进入/opt/resin-3.1.8目录,再次执行./configure --with-apxs=/opt/apache2/bin/apxs,成功! make make install 这时,在/opt/apache2/modules目录下会生成mod_caucho.so文件。 至此,Resin安装完毕。 注意:mod_caucho.so文件,理论上来讲是可以从别处拷贝过来直接用的,但这里受到几个条件限制:操作系统位宽和处理器(CPU)类型。比如,生成mod_caucho.so这个文件的机器使用的是Intel Xeon处理器,操作系统是64位Linux,我把这个文件拿到Intel Core处理器或者AMD处理的机器中,系统为32位Linux,这时再启动Apache时这个文件会报错。 控制台方式启动Resin执行:/opt/resin-3.1.8/bin/httpd.sh 回车 如图,启动成功! 浏览器中输入:http://192.168.1.206:8080 出现上面的界面,说明启动成功! 五、配置 首先,将一个Web项目放到/opt/resin-3.1.8/webapps目录下。 Resin配置 打开Resin配置文件 vi /opt/resin-3.1.8/conf/resin.conf 找到 <!-- The http port --> <http address="*" port="8080"/> 节点。 此处配置Resin的监听端口,默认为8080。访问时要在地址或域名后面加上:8080,否则访问不到;如果访问时不想输入端口号,那么这里要改成80;如果Resin与Apache同时启动,此处端口不能设为80。 找到<!-- define the servers in the cluster --> <server id="" address="127.0.0.1" port="6800"/> 这里是配置多个项目所用不同端口的地方,在这里,我们将端口6800改为6802,此处非必改项。 再往下,找到 <!-- - Sample database pool configuration - - The JDBC name is java:comp/env/jdbc/test <database> <jndi-name>jdbc/mysql</jndi-name> <driver type="org.gjt.mm.mysql.Driver"> <url>jdbc:mysql://localhost:3306/test</url> <user></user> <password></password> </driver> <prepared-statement-cache-size>8</prepared-statement-cache-size> <max-connections>20</max-connections> <max-idle-time>30s</max-idle-time> </database> --> 节点。这是一个配置数据库连接的例子,如果Web项目是通过Jndi的方式连接数据库,就可以依照例子配置一套完整的<database>标签中的内容。 例如:测试项目中的数据库连接配置如下 <database> <jndi-name>jdbc/cdi</jndi-name> <driver type="oracle.jdbc.driver.OracleDriver"> <url>jdbc.url=jdbc:oracle:thin:@192.168.1.72:1521:orcl</url> <user>cdi</user> <password>123</password> </driver> <prepared-statement-cache-size>8</prepared-statement-cache-size> <max-connections>100</max-connections> <max-idle-time>300s</max-idle-time> </database> 找到<!-- configures the default host, matching any host name --> <host id="" root-directory="."> 节点,补全host标签中的内容,例如: <host id="192.168.1.206" root-directory="."> 和下面的<web-app id="/" root-directory="webapps/ROOT"/>改为 <web-app id="/" root-directory="/opt/resin-3.1.8/webapps/cdi "/> Root-Directory指的就是项目所在位置。 至此,Resin配置完毕。 再次以控制台方式启动Resin。 /opt/resin-3.1.8/bin/httpd.sh 回车。通过http://192.168.1.206:8080,可以打开Web项目主页。 Apache配置 打开Apache配置文件:vi /opt/apache2/conf/httpd.conf 找到 DocumentRoot "/opt/apache2/htdocs" <Directory "/opt/apache2/htdocs"> 处,将其修改为: DocumentRoot "/opt/resin-3.1.8/webapps/cdi" <Directory "/opt/resin-3.1.8/webapps/cdi"> 也就是项目所在路径。 若不是系统自动生成mod_caucho.so,则手动添加在文件尾部加入 # # mod_caucho Resin Configuration # LoadModule caucho_module /opt/apache2/modules/mod_caucho.so 这步是Apache整合Resin的关键,必不可少。 #部分是说明,无意义。 下面加入虚拟主机的配置项: <VirtualHost *:80> CauchoHost localhost 6802 AddHandler caucho-request jsp SetHandler caucho-request ResinConfigServer localhost 6802 ServerName 192.168.1.206 # ServerAlias 211.88.20.161 ServerAdmin dql188@hotmail.com DocumentRoot /opt/resin-3.1.8/webapps/cdi <Directory /opt/resin-3.1.8/webapps/cdi> AddHandler caucho-request jsp #Disable to Execute CGI&shell script </Directory> Options +IncludesNOEXEC </VirtualHost> 这里面的CauchoHost localhost 6802,就是我们在Resin部分中配置多项目端口处设定的端口。 注意:Apache跟据虚拟机配置时,会先查找/etc/ hosts文件,如果Hosts文中没有Localhost的对应路由表,那么在访问项目时将会出现以下界面: |
|