前言
    本文介绍了融JSP、PHP和JAVA于一炉的开发环境的建立,为了适合大多数初学者的需求,很多步骤都是采用比较方便的办法,力求简单明了。一般来说,没有特别需求的软件,我都是采用RPM的方式安装。如果你有优化配置、安全考虑等特殊需求,请参考相关的文章进行配置。
    在本文中,Apache以DSO模式安装,PHP实现了JAVA组件的支持,使得我们在进行大型项目开发的时候,可以选择PHP作为前端脚本语言,调用JAVA组件实现底层和企业级的应用。

一.系统环境
    1.初始安装
    防火墙开放接口:21,22,80,2401,8009,10000,eth0
    Redhat Linux 9.0
    Development Tools
    Network Servers
    VSFtp
    CVS-1.11.2-10
    MySQL 3.23.54
    2.包安装
    JDK 1.4.2_04
    下载地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm
    Tomcat 5.0.19
    下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz
    3.脚本安装
    Webmin 1.110
    下载地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz
    ZendOptimizer 2.5.1
    下载地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz
    4.手工编译
    Apache 2.0.49
    下载地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz
    PHP 4.3.5
    下载地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
    JK 2-2.0.4
    下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz
    5.客户机环境
    Windows XP Professional
    Absolute Telnet 3.0
    Zend Encoder
    Macromedia Dreamweaver MX 2004
    Borland JBuilder 9 Enterprise
    WinCVS 1.3
    下载地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip

二.系统安装
    启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。

三.安装webmin1.110
    用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。
    代码:

# cd webmin*
  # ./setup.sh
四.安装JDK1.4.2
    1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。

/etc/profile 

JAVA_HOME=/usr/java/j2sdk1.4.2_04 

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 

CVSROOT=/usr/local/cvsroot 

PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export JAVA_HOME CLASSPATH CVSROOT PATH 

/etc/ld.so.conf 

/usr/java/j2sdk1.4.2_04/jre/lib/i386 

/usr/java/j2sdk1.4.2_04/jre/lib/i386/server 

HelloWorld.java 

class HelloWorld { 

public static void main(String[] args){ 

//本文件测试Java环境是否安装成功。 

System.out.println(“Hello World!”); 


}

    2.执行以下命令:

# rpm -ivh j2sdk*.rpm //安装JDK包。 

# source /etc/profile //重载profile环境。 

# ldconfig //创建动态链接库缓存文件。 

# javac -d . HelloWorld.java //编译测试文件。 

# java HelloWorld //运行程序测试安装是否成功。

 五.安装Apache
    代码:

# tar xvzf httpd* //解压源码包。 

# cd httpd* //进入安装目录。 

# ./configure –prefix=/usr/local/apache –enable-so –enable-mods-shared=most –enable-rewrite 

# make;make install //编译并安装。

    说明:
    –enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为        –enable-module=so。
    –enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为–enable-shared=max就可以。
    –enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为–enable-module=rewrite。

六.编译安装PHP
    1.执行命令
    代码:

#cd php* //进入PHP安装命令 

#./configure –prefix=/usr/local/php –with-mysql –with-apxs2=/usr/local/apache/bin/apxs –with-java=/usr/java/j2sdk1.4.2_04 

#make;make install //编译并安装 

#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件 

#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录 

#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦 

#cd Zend* //进入ZendOptimizer目录 

#./install //安装PHP加速器

说明:
    –with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用–with-apxs=/usr/local/apache/bin/apxs。
  

  2.编辑下面三个文件

/usr/local/apache/conf/httpd.conf 

LoadModule php4_module modules/libphp4.so 

AddType application/x-httpd-php .php 

AddType application/x-httpd-php-source .phps 

AddDefaultCharset gb2312 

/usr/local/apache/htdocs/test.php 

//本程序测试PHP的JAVA环境是否可用,代码是从http://www.php.net/manual/en/ref.java.php摘录下来的。 

// get instance of Java class java.lang.System in PHP 

$system = new Java(‘java.lang.System’); 

// demonstrate property access 

echo ‘Java version=’ . $system->getProperty(‘java.version’) . ”; 

echo ‘Java vendor=’ . $system->getProperty(‘java.vendor’) . ”; 

echo ‘OS=’ . $system->getProperty(‘os.name’) . ‘ ‘ . 

$system->getProperty(‘os.version’) . ‘ on ‘ . 

$system->getProperty(‘os.arch’) . ‘ ‘; 

// java.util.Date example 

$formatter = new Java(‘java.text.SimpleDateFormat’,”EEEE, MMMM dd, yyyy ‘at’ h:mm:ss a zzzz”); 

echo $formatter->format(new Java(‘java.util.Date’)); 

/usr/local/php/lib/php.ini 

register_globals=On 

[Java] 

java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass 

java.home=/usr/java/j2sdk1.4.2_04 

java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so 

java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 

extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 

extension=libphp_java.so

    注意:
    (1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。
    (2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。

七.安装Tomcat
    1.执行以下命令
    代码:

#cd *jk2*/jk/native2 //进入连接器编译目录 

#./buildconf.sh //运行配置脚本 

#./configure –with-apxs2=/usr/local/apache/bin/apxs –enable-jni –enable-EAPI 

#make //编译模块 

#cd ~jim/src/*jk2*/jk/build/jk2/apache2 //进入编译好模块的目录 

#cp *.so /usr/local/apache/modules/ //将模块拷贝到Apache目录 

#cp -R jakarta-tomcat-5.0.19 /usr/local/tomcat //安装Tomcat 

#touch /usr/local/apache/logs/shm.file //建立共享内存文件

    我刚开始安装Tomcat的时候,总是不成功,后来我跑到Apache的网站,看了一份只有两页的英文说明,很快就把它配好了。我发现国内的作者总是喜欢故弄玄虚,把本来很简单的东西搞得很复杂,让人家看不懂,以显示自己高明。

    2.编辑以下文件

/usr/local/apache/conf/httpd.conf 

LoadModule jk2_module modules/mod_jk2.so 

JkSet config.file /usr/local/apache/conf/workers2.properties 

DocumentRoot “/usr/local/tomcat/webapps”

/usr/local/tomcat/webapps/jsp-examples/for.jsp 

<% 

int i; 

for(i=1;i<100;i++){ 

out.println(“Hello World!”); 

%> 

/usr/local/tomcat/conf/jk2.propertie 

handler.list=request,container,channelSocket 

channelSocket.port=8009 

channelSocket.address=127.0.0.1 

channelSocket.maxPort=port+10 

/usr/local/apache/conf/workers2.properties 

[shm] 

file=/usr/local/apache/logs/shm.file 

size=1048576 

[workerEnv:] 

info=Global server options 

timing=1 

debug=0 

[channel.socket:localhost:8009] 

port=8009 

host=127.0.0.1 

[ajp13:localhost:8009] 

channel=channel.socket:localhost:8009 

[uri:/*.jsp] 

worker=ajp13:localhost:8009 

/etc/rc.d/init.d/httpd 

#!/bin/sh 

# chkconfig:2345 92 12 

# description:Starting Apache and Tomcat Server 

LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_04/jre/lib/i386:/usr/java/j2sdk1.4.2_04/jre/lib/i386/server 

export LD_LIBRARY_PATH 

CATALINA_BASE=/usr/local/tomcat 

export CATALINA_BASE 

CATALINA_HOME=/usr/local/tomcat 

export CATALINA_HOME 

APACHE_HOME=/usr/local/apache 

export APACHE_HOME 

JAVA_HOME=/usr/java/j2sdk1.4.2_04 

export JAVA_HOME 

PROFILEDIR=/var/run 

case “$1” in 

start) 

if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then 

echo “Running Tomcat5_Apache2”

else

if [ -f $CATALINA_HOME/bin/startup.sh ]; then 

if [ -f $APACHE_HOME/bin/apachectl ]; then 

“$CATALINA_HOME/bin/startup.sh”

echo “Startting Tomcat5”

sleep 3 

echo “Startting Apache2”

$APACHE_HOME/bin/apachectl start 

echo “.”

touch $PROFILEDIR/Tomcat5_Apache2 

else

echo “Apache File Not Founds”

fi 

else

echo “Tomcat File Not Founds”

fi 

fi 

;; 

stop) 

if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then 

if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then 

if [ -f $APACHE_HOME/bin/apachectl ]; then 

“$CATALINA_HOME/bin/shutdown.sh”

echo “Stopping Tomcat5”

sleep 3 

echo “Stopping Apache2”

$APACHE_HOME/bin/apachectl stop 

rm $PROFILEDIR/Tomcat5_Apache2 

else

echo “Apache File Not Founds”

fi 

else

echo “Tomcat File Not Founds”

fi 

else

echo “Not Running Tomcat5_Apache2”

fi 

;; 

*) 

echo “Usage; `basename $0` {start|stop}” 1>&2 

exit 1 

;; 

esac 

exit 0

    说明:
    CVS的密码问题,以前众说纷纭,有的是编一段程序来生成密码,有的则用所谓的土方法去拷贝shadow密码。其实我可以告诉初学者一个最简单方便的方法,就是采用Webmin添加CVS用户,它自己就会帮你生成密码。

    3.编辑以下文件

/usr/local/cvsroot/CVSROOT/passwd 

test1:NXWxabrVe7z/w:cvspub 

test2:FZTxeAWW.ySIA:cvspub 

    //说明: 主要是在最后加上用户名cvspub,让系统用户cvspub代替 test1和test2去读写CVS仓库。 

/usr/local/cvsroot/CVSROOT/readers 

test1 

/usr/local/cvsroot/CVSROOT/writers 

cvs 

test2

    结 语
    至此,整个系统配置完成。在本系统配置过程中,出现过很多错误,可惜都是通过英文站点找到解决的方法,真希望我们国内站点的技术水平可以尽快提高起来。本文虽然力求简洁明了,但由于时间所限,好多地方未必都能尽如人意,如您有不明白的地方,请与我联系,我会采纳各位的意见,将晦涩难懂的地方修改过来。在配置过程中,参考了很多优秀的文章,在这里谢谢各位作者!最后我想说明以下,这个系统本来是要建立在FreeBSD平台之上,但是,由于FreeBSD平台上的JAVA环境尚未完善,最后我不得不惋惜地放弃了这个INTEL平台上最优秀的操作系统,选择了性能和稳定性都一般的RedHat Linux。