|
为什么要整合resin和apache,已经整合的好处如下:
a.动静分离
b.早起的resin、tomcat的http服务不太好
c.早期的resin、tomcat对rewrite和expire功能不太好
一、安装apache
[root@mylinux4 contrib]# yum -y install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel gcc gcc-devel gcc-c++ gcc-c++-devel
[root@mylinux4 contrib]# cd /opt/tools/
[root@mylinux4 tools]# tar -zxf httpd-2.2.23.tar.gz
[root@mylinux4 tools]# cd httpd-2.2.23
[root@mylinux4 httpd-2.2.23]# mkdir /usr/local/apache
[root@mylinux4 httpd-2.2.23]# ./configure --prefix=/usr/local/apache \
> --enable-deflate \
> --enable-headers \
> --enable-modules \
> --enable-so \
> --with-mpm=worker \
> --enable-rewrite
[root@mylinux4 httpd-2.2.23]# make && make install 二、为apache编译resin mod_caucho模块
[root@mylinux4 httpd-2.2.23]# cd /opt/tools/resin-3.1.13
[root@mylinux4 resin-3.1.13]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@mylinux4 resin-3.1.13]# cd modules/c/src/
[root@mylinux4 src]# make
[root@mylinux4 src]# make install
[root@mylinux4 src]# ll /usr/local/apache/modules/
total 180
-rw-r--r-- 1 root root 9084 Oct 2 23:42 httpd.exp
-rwxr-xr-x 1 root root 170931 Oct 2 23:51 mod_caucho.so
[root@mylinux4 src]# tail -9 /usr/local/apache/conf/httpd.conf
#
# mod_caucho Resin Configuration
#
LoadModule caucho_module /usr/local/apache/modules/mod_caucho.so
ResinConfigServer localhost 6800
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
# 上面的配置是编译后产生的
[root@mylinux4 src]# vi /usr/local/apache/conf/httpd.conf
[root@mylinux4 src]# tail -9 /usr/local/apache/conf/httpd.conf
#
# mod_caucho Resin Configuration
#
LoadModule caucho_module /usr/local/apache/modules/mod_caucho.so
ResinConfigServer 192.168.100.182 6911
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
# 修改一下resin的地址和端口 三、启动apache服务并测试
[root@mylinux4 src]# /usr/local/apache/bin/apachectl start
httpd: apr_sockaddr_info_get() failed for mylinux4.contoso.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[root@mylinux4 src]# netstat -lntup|egrep "6911|6921|8080"
tcp 0 0 :::8080 :::* LISTEN 54612/java
tcp 0 0 ::ffff:192.168.100.182:6911 :::* LISTEN 54612/java
tcp 0 0 ::ffff:127.0.0.1:6921 :::* LISTEN 54584/java
[root@mylinux4 src]# /etc/init.d/resin stop
Stopping resin: .
[root@mylinux4 src]# netstat -lntup|egrep "6911|6921|8080"
上面的测试结果说明,由apache进行静态内容的展示,而动态内容则交给resin进行解析并返回给apache.
为了更有力的证明这一点,再来做一个测试:
[root@mylinux4 ~]# cd /usr/local/apache/htdocs/
[root@mylinux4 htdocs]# echo "99+1=" >> test.jsp
[root@mylinux4 htdocs]# ll
total 8
-rw-r--r-- 1 apache apache 44 Nov 21 2004 index.html
-rw-r--r-- 1 apache apache 15 Oct 3 00:51 test.jsp
[root@mylinux4 ~]# cd /usr/local/resin/webapps/ROOT/
[root@mylinux4 ROOT]# echo "Hello,world." >> test.jsp
[root@mylinux4 ROOT]# ll
total 12
-rw-r--r-- 1 root root 1507 Nov 9 2012 index.jsp
-rw-r--r-- 1 root root 13 Oct 3 01:13 test.jsp
drwxr-xr-x 5 root root 4096 Oct 2 21:35 WEB-INF 在apache的根目录/usr/local/apache/htdocs中创建一个test.jsp,内容是“99+1=”,并在resin的web目录/usr/local/resin/webapps/ROOT也创建一个test.jsp,内容是“Hello,world.”,在浏览器中打开,看浏览器返回的内容:
返回的内容是resin的web目录中test.jsp中的内容,再一次证明动态内容交给resin进行处理。
四、配置动态和静态内容都交给resin进行处理
[root@mylinux4 src]# tail -9 /usr/local/apache/conf/httpd.conf
# mod_caucho Resin Configuration
#
LoadModule caucho_module /usr/local/apache/modules/mod_caucho.so
ResinConfigServer 192.168.100.182 6911
SetHandler caucho-request #添加这一行内容
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
[root@mylinux4 src]# /usr/local/apache/bin/apachectl graceful
浏览器访问测试:
可以看到,这是resin的web首页index.jsp的内容。
五、在apache中配置虚拟主机转发resin解析
1、在apache中创建一个虚拟主机
[root@mylinux4 src]# tail -21 /usr/local/apache/conf/extra/httpd-vhosts.conf
ServerAdmin admin@contoso.com
DocumentRoot "/var/www/html/mylinux4"
ServerName www.mylinux4.com
ServerAlias mylinux4.com
ErrorLog "logs/www.mylinux4.com-error_log"
CustomLog "logs/www.mylinux4.com-access_log" common
options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
#Resin configuration
ResinConfigServer 192.168.100.182 6911
SetHandler caucho-request #这里设置虚拟主机将所有请求都转给resin进行解析
2、创建站点目录和主页文件
[root@mylinux4 src]# mkdir /var/www/html/mylinux4
[root@mylinux4 src]# echo "mylinux4 from vhost in apache." >>/var/www/html/mylinux4/index.html
[root@mylinux4 src]# /usr/local/apache/bin/apachectl -t
Syntax OK
[root@mylinux4 src]# /usr/local/apache/bin/apachectl graceful
[root@mylinux4 src]#
3、修改hosts文件
在hosts文件中添加如下内容:
192.168.100.182 www.mylinux4.com
4、在浏览器中打开
同样的,在linux上curl一个不存在的页面,将返回如下内容:
[root@mylinux4 src]# curl http://www.mylinux4.com/a.html
404 Not Found
404 Not Found
/a.html was not found on this server.
Resin/3.1.13
上面的内容也说明,该请求是由resin进行处理的。
5、下面将转发给resin的设置注释掉,再进行测试。
ServerAdmin admin@contoso.com
DocumentRoot "/var/www/html/mylinux4"
ServerName www.mylinux4.com
ServerAlias mylinux4.com
ErrorLog "logs/www.mylinux4.com-error_log"
CustomLog "logs/www.mylinux4.com-access_log" common
options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
#Resin configuration
#ResinConfigServer 192.168.100.182 6911
#SetHandler caucho-request
[root@mylinux4 src]# /usr/local/apache/bin/apachectl graceful
同样的,curl一个不存在的页面,出现的结果如下:
[root@mylinux4 src]# curl http://www.mylinux4.com/a.html
404 Not Found
Not Found
The requested URL /a.html was not found on this server.
这里并没有转发给resin。
六、resin配置多个虚拟主机
-Xmx256m
-Xss1m
-Xdebug
-Dcom.sun.management.jmxremote
1M
256
65s
128
15s
-Xmx256m
-Xss1m
-Xdebug
-Dcom.sun.management.jmxremote
1M
256
65s
128
15s
七、配置resin多站点目录
把host-default 模块删除,添加下面的内容。在对应的位置添加
www.demo1.org
5
12000
/resin-status-www.demo1.com
utf-8
/*
www.demo2.com
5
12000
/resin-status-www.demo2.com
utf-8
/*
八、错误优雅显示
九、修改resin的默认日志配置
resin的默认日志设置格式为:
一般我们采用下面的方式记录日志(记录每一天的日志):
而resin日志内容的格式为:
我们也对此进行修改,示例如下:
|
|
|