5/16/2005
Note:整个安装是在5.3-RELEASE下完成的。但应该也适用于其他unix like平台。
一、准备工作:
1、最好先更新port,#cvsup -g -L 2 your-ports-supfile。
2、安装JDK。最好用JDK1.5,有些jsp/servlet container在低版本的JDK下不能运行,比如Tomcat5.5.x版本。
(1)、Compat方式:
#Cd /usr/ports/java/linux-sun-jdk15 & make install
(2)、或者Native方式:
#cd /usr/ports/java/jdk15
#Make install
#Make package//生成freebsd tgz格式发行包文件
#make clean //清除make时的临时文件
安装完成Jdk后,设置环境变量JAVA_HOME。验证JDK是否安装正确,然后执行java –version,会有
java version "1.5.0-p1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-p1-root_14_may_2005_00_39)
Java HotSpot(TM) Client VM (build 1.5.0-p1-root_14_may_2005_00_39, mixed mode)
二、安装Tomcat:
Freebsd port里的tomcat还是5.0.x版本的,太老了。从http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi下载安装tomcat5.5.9。5.5.x版本的Tomcat支持Servlet2.4/JSP2.0规范。
#Tar zxvf jakarta-tomcat-5.5.9.tar.gz即可。
#Ln –s /usr/local/ jakarta-tomcat-5.5.9 /usr/local/tomcat,做个连接方便使用。
验证是否安装正确,#/usr/local/tomcat/bin/startup.sh启动Tomcat。#Lynx http://localhost:8180,应该会出来tomcat的welcome页了。
三、安装Apache:
直接从port安装即可。
Cd /usr/ports//www/apache2
Make install clean
编辑/etc/rc.conf ,增加apache2_enable="YES",Enable apache。/usr/local/etc/rc.d/apache2.sh start。#lynx localhost ,应该可以看到apache2的welcome页面了。
四、安装Php:
从port安装
Cd /usr/ports/lang/php5
Make install
Make clean
默认的所选模块基本够用了。如果自己选的模块编译通过不了,make config把相应的失败模块去掉,或者根据需要安装相应的包。
安装完成后,修改/usr/local/etc/apache2/httpd.conf的两处地方。
1、修改index 页的类型列表,增加index.php,
2、增加下列file extensions类型
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
验证安装是否正确。
Vi /my_www/index.php
<?
phpinfo();
?>
Lynx localhost。
五、安装tomcat-connectors,这是apache与tomcat的连接桥。
Cd /usr/ports/www/mod_jk2
Make install
Make clean
五、配置apache、tomcat以使他们协同工作,用到的配置文件有2个。jk2.properties,默认要放在InstalledPathOfTomcat/conf中;workers2.properties默认要放在InstalledPathOfApache/conf中。另外还需要修改http.conf文件。
1、修改http.conf
查找LoadModule部分,加入:LoadModule jk2_module modules/mod_jk2.so。激活加载mod_jk2默组。
2、增加workers2.properties文件:
# ------- start ---------
[shm]
file=/var/log/jk2.shm #共享内存文件的位置
size=1048576
[channel.socket:localhost:8009] #mod_jk2的监听端口,可通过修改tomcat server.xml修改
tomcatId=localhost:8009
#webappliction 映射
[uri: /jsp-examples/*]#tomcat自带的examples,用来测试安装是否成功。 [uri:/mywebapplication1/*]
[uri:/ mywebapplication2/*]
[uri:/ mywebapplication3/*]//an so on
# --------end ------------
workers2.properties的参数很多,可以看jk2的文档。
说明:tomcat下的webapplication如果想通过apache与mod_jk2来提供服务的,只需增加一个[uri:]的映射。这样当浏览器访问此映射下的uri时,apache会自动交给mod_jk2桥接给tomcat处理。本机,即localhost、real_hostname,会自动做URI映射。无需手工设定。
3.修改tomcat conf目录下的jk2.properties文件,enable
handler.list=apr,request,channelJni
shm.file=/var/log/jk2.shm
apr.jniModeSo= /usr/local/libexec/apache2/mod_jk2.so
apr.jniModeSo=inprocess
这几行。
3、最后还需要设置一下http.conf
在global里面加入以下行,
<Directory "/*/WEB-INF/*">
Order allow,deny
Deny from all
</Directory>
<Location ~ "/*.jsp|/*/servlet/*|*.do">
JkUriSet worker ajp13:localhost:8009
</Location>
说明:
Directory的设置是为了阻止对/WEB-INF的访问。
JkUriSet部分的设置。是把*.jsp、servlet做映射,这样apache才知道把jsp、servlet通过mod_jk2“桥接”给tomcat解析,而不是直接显示出来。*.do 是struts的默认后缀。如果你在tomcat里指定了其他后缀格式,也必须在JkUriSet处添加。
以上为global设置,可以只在相应的虚拟主机中设置。
六、安装完成,测试。
启动apache、tomcat,tail –f /log/apache_error_log文件,看是否有mod_jk2成功加载的信息。Lynx localhost/jsp-examples。如果成功打开了tomcat自带的jsp-examples,则说明安装成功了。如果没有,查看apache error log文件,tomcat的日志文件,查找问题所在。
Tips:
如果example不能访问,则先看看直接访问方式能否正确访问,http://localhost:8180/ jsp-examples。如果可以则说明tomcat的webapplication正常。问题应该在mod_jk2的URI映射上。
七、虚拟主机设置
虚拟主机的情况,更接近于real word的情况。
以下设置两个虚拟主机指向同一个目录。设置如下:
1、设置tomcat虚拟主机。增加以下host定义:
<!-- This Host is the first "Virtual Host": http://www.example.com/ -->
<Host name="www.example.com" appBase="/home/www"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/home/www" debug="0"
reloadable="true" crossContext="true">
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="www.example.com_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
测试:lynx http://www.example.com:8180。
2、设置apache虚拟主机。增加以下虚拟主机设置:
<VirtualHost server_real_ip>
ServerAdmin server_admin_email
ServerName www.example.com
<Directory ~ "/WEB-INF/">
Order allow,deny
Deny from all
</Directory>
<Location ~ "/*.jsp|/*/servlet/*|/*.do">
JkUriSet worker ajp13:localhost:8009
</Location>
ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"
<Directory "/home/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /home/www
<Directory "/home/www">
Order allow,deny
Allow from all
AllowOverride All
Options +Includes
</Directory>
ErrorLog /var/log/www.myweb.com-error_log
CustomLog /var/log/www.myweb.com-access_log common
</VirtualHost>
测试:
在/home/www建立index.php、index.jsp,lynx www.example.com/index.jsp、lynx www.example.com/index.php应该都可以正常工作了。lynx www.example.com/mywebapplication1 。
全部安装完成。
八、jk2的未来:
以下摘自http://jakarta.apache.org/tomcat
JK2 has been put in maintainer mode and no further development will take place. The reason for shutting down JK2 development was the lack of developers interest. Other reason was lack of users interest in adopting JK2, caused by configuration complexity when compared to JK.
JK2 will have it's successor within core Apache2.1/2.2 distribution. We have developed new proxy_ajp that is an addition to the mod_proxy and uses Tomcat's AJP protocol stack. It is developped in httpd-2.1 and integrated in it. We have also developed a new proxy_balancer module for load balancing http and ajp protocol stacks.
JK will be fully supported for all other web servers. The next JK release is planned for the end of November. Lots of code from JK2 has been ported to JK