自己装jdk,resin和nginx以及nginx需要的pcre和jvm
mkdir java
ls
cd local
ls
sudo cp jdk-6u26-linux-i586.bin /usr/java
cd ../java
ls
chmod +x jdk-6u26-linux-i586.bin
./jdk-6u26-linux-i586.bin
ls
cd jdk1.6.0_26/
ls
cd ..
ls
java -version
cat /etc/profile
vi /etc/profile
tar zxvf resin-pro-3.0.25.tar.gz
ls
cd resin-pro-3.0.25
ls
./configure --prefix=/usr/local/resin
ls
make
make install
tar zxvf pcre-8.10.tar.gz
cd pcre-8.10/
./configure
make && make install
然后解压nginx-upstream-jvm-route
unzip 1036375_1271836572.zip
解压nginx
tar zxvf nginx-0.7.67.tar.gz
ls
cd nginx-0.7.67
ls
patch -p0 < /usr/local/nginx-upstream-jvm-route/nginx_upstream_jvm_route/jvm_route.patch
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx-upstream-jvm-route/nginx_upstream_jvm_route/
make
make install
安装ant:
47 tar -xvf apache-ant-1.7.1.tar
48 ls
49 cd apache-ant-1.7.1
50 ls
直接解压缩就行,然后配置环境变量
export ANT_HOME=/usr/local/apache-ant-1.7.1
export JAVA_HOME=/usr/java/jdk1.6.0_26
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:.
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$ANT_HOME/bin
再打开新的shh连接执行ant -version看是否安装上。
build.xml
<?xml version="1.0" encoding="GBK"?>
<!-- SIP项目build文件1.0 -->
<!-- RICHARDZHAO 2008-03-25-->
<project name="Pickoo" default="help" basedir=".">
<property name="deploy" location="./bin/deploy.sh"/>
<!-- 加载SVN配置属性 -->
<property file="conf/svn.properties"/>
<!-- 加载服务器配置属性 -->
<property file="conf/server_node1.properties"/>
<property file="conf/server_node2.properties"/>
<property file="conf/server_node3.properties"/>
<!-- 项目信息 -->
<property name="projectname" value="Pickoo" />
<property name="version" value="1.0" />
<property name="peak-jar" value="${projectname}-${version}.jar"/>
<property name="peak-test-jar" value="${projectname}-test-${version}.jar"/>
<property name="peak-client-jar" value="${projectname}-client-${version}.jar"/>
<!-- 源文件属性定义 -->
<property name="src" value="src" />
<property name="testsrc" value="testSrc" />
<property name="test_src" value="test_src" />
<property name="conf" value="conf" />
<property name="war" value="WebRoot" />
<property name="war.lib" value="${war}/WEB-INF/lib" />
<property name="depend-libs" value="WebRoot/WEB-INF/lib" />
<property name="release" value="release" />
<property name="webclasses" value="WebRoot/WEB-INF/classes"/>
<property name="webinfo" value="WebRoot/WEB-INF"/>
<!-- Build属性定义 -->
<property name="build" value="ant/build"/>
<property name="tmpclasses" value="build/classes"/>
<property name="tmptestclasses" value="build/testclasses"/>
<property name="clientclasses" value="build/clientclasses"/>
<!--svn本身需要的运行库 -->
<path id="svnant.lib">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
<!-- load the svn task -->
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />
<!--svn 下载整个模块-->
<target name="svn-checkout-module">
<input message="请输入版本号:" addproperty="ver" />
<svn username="{username}" password="${password}" javahl="false">
<checkout url="${svnroot}" destPath="${ver}/${svnmoduleName}" />
</svn>
</target>
<!-- #################################### -->
<!-- 创建Build时候需要的临时目录,拷贝 -->
<!-- 源代码、配置、页面文件到临时目录备用 -->
<!-- #################################### -->
<target name="prepare" description="prepare">
<mkdir dir="${ver}/${svnmodule}/${tmpclasses}"/>
<mkdir dir="${ver}/${svnmodule}/${webclasses}"/>
<mkdir dir="${ver}/${svnmodule}/${tmptestclasses}"/>
<mkdir dir="${ver}/${svnmodule}/${clientclasses}"/>
<mkdir dir="${ver}/${svnmodule}/${release}"/>
</target>
<!-- #################################### -->
<!-- 编译源代码类文件 -->
<!-- #################################### -->
<target name="compile" description="compile" >
<input message="请输入版本号:" addproperty="ver" />
<antcall target="prepare">
<param name="ver" value="${ver}"/>
</antcall>
<mkdir dir="${ver}/${svnmodule}/${webclasses}"/>
<javac srcdir="${ver}/${svnmodule}/${src}" destdir="${ver}/${svnmodule}/${webclasses}" source="1.5" target="1.5" encoding="GBK" debug="on">
<classpath>
<fileset dir="${ver}/${svnmodule}/${depend-libs}" includes="*.jar"/>
<fileset dir="${ver}/${svnmodule}/${depend-libs}" includes="*.zip"/>
</classpath>
<include name="**/*.java" />
</javac>
<copy todir="${ver}/${svnmodule}/${webclasses}">
<fileset dir="${ver}/${svnmodule}/${src}">
<include name="com/**/*.xml"/>
</fileset>
<fileset dir="${ver}/${svnmodule}/conf">
<include name="*.xml"/>
</fileset>
<fileset dir="${ver}/${svnmodule}/conf">
<include name="*.properties"/>
</fileset>
</copy>
</target>
<!-- #################################### -->
<!-- 更新并编译源代码类文件 -->
<!-- #################################### -->
<target name="update-compile" description="update-compile" >
<input message="请输入版本号:" addproperty="ver" />
<antcall target="prepare">
<param name="ver" value="${ver}"/>
</antcall>
<antcall target="svnupdate-src">
<param name="ver" value="${ver}"/>
</antcall>
<mkdir dir="${ver}/${svnmodule}/${webclasses}"/>
<javac srcdir="${ver}/${svnmodule}/${src}" destdir="${ver}/${svnmodule}/${webclasses}" source="1.5" target="1.5" encoding="GBK" debug="on">
<classpath>
<fileset dir="${ver}/${svnmodule}/${depend-libs}" includes="*.jar"/>
<fileset dir="${ver}/${svnmodule}/${depend-libs}" includes="*.zip"/>
</classpath>
<include name="**/*.java" />
</javac>
<copy todir="${ver}/${svnmodule}/${webclasses}">
<fileset dir="${ver}/${svnmodule}/${src}">
<include name="com/**/*.xml"/>
</fileset>
<fileset dir="${ver}/${svnmodule}/conf">
<include name="**/*.xml"/>
</fileset>
<fileset dir="${ver}/${svnmodule}/conf">
<include name="**/*.properties"/>
</fileset>
</copy>
</target>
<!-- #################################### -->
<!-- 更新properties文件 -->
<!-- #################################### -->
<target name="properties" description="properties" >
<copy todir="${ver}/${svnmodule}/${webclasses}">
<fileset dir="${ver}/${svnmodule}/conf">
<include name="*.properties"/>
</fileset>
</copy>
</target>
<!-- ###################################### -->
<!-- 部署war下的单个页面文件到服务器node2 -->
<!-- ###################################### -->
<target name="update-file" description="deploy project file to server ." >
<input message="请输入版本号:" addproperty="ver" />
<input message="请输入要部署的目录:" addproperty="dir" />
<input message="请输入要部署的文件:" addproperty="file" />
<echo message=" dir=${dir} ver=${war}/${dir}/${file}"/>
<svn username="{username}" password="${password}" javahl="false">
<update file="${ver}/${svnmodule}/${war}/${dir}/${file}"/>
</svn>
</target>
<!-- ###################################### -->
<!-- 部署src下的单个页面文件到服务器node2 -->
<!-- ###################################### -->
<target name="update-src" description="deploy project src file to server ." >
<input message="请输入版本号:" addproperty="ver" />
<input message="请输入要部署的目录:" addproperty="dir" />
<input message="请输入要部署的文件:" addproperty="file" />
<echo message=" dir=${dir} ver=${src}/${dir}/${file}"/>
<svn username="{username}" password="${password}" javahl="false">
<update file="${ver}/${svnmodule}/${src}/${dir}/${file}"/>
</svn>
</target>
<!-- ####################################### -->
<!-- 部署conf下的单个页面文件到服务器node2 -->
<!-- ####################################### -->
<target name="update-conf" description="deploy project conf file to server ." >
<input message="请输入版本号:" addproperty="ver" />
<input message="请输入要部署的目录:" addproperty="dir" />
<input message="请输入要部署的文件:" addproperty="file" />
<echo message=" dir=${dir} ver=${conf}/${dir}/${file}"/>
<svn username="{username}" password="${password}" javahl="false">
<update file="${ver}/${svnmodule}/${conf}/${dir}/${file}"/>
</svn>
</target>
<!-- #################################### -->
<!-- SVN更新:Java源代码 -->
<!-- #################################### -->
<target name="svnupdate-src" >
<input message="请输入版本号:" addproperty="ver" />
<antcall target="svnupdate-dir">
<param name="ver" value="${ver}"/>
<param name="dir" value="${src}"/>
</antcall>
</target>
<!-- #################################### -->
<!-- SVN更新:webapp -->
<!-- #################################### -->
<target name="svnupdate-war">
<input message="请输入版本号:" addproperty="ver" />
<antcall target="svnupdate-dir">
<param name="ver" value="${ver}"/>
<param name="dir" value="${war}"/>
</antcall>
</target>
<!-- #################################### -->
<!-- SVN更新:conf -->
<!-- #################################### -->
<target name="svnupdate-conf">
<input message="请输入版本号:" addproperty="ver" />
<antcall target="svnupdate-dir">
<param name="ver" value="${ver}"/>
<param name="dir" value="${conf}"/>
</antcall>
</target>
<!-- #################################### -->
<!-- SVN更新:指定目录 -->
<!-- #################################### -->
<target name="svnupdate-dir" id="svnupdate-dir">
<input message="请输入要更新的目录:" addproperty="dir" />
<input message="请输入版本号:" addproperty="ver" />
<echo message=" dir=${dir} ver=${ver}"/>
<echo message=" dir=${dir} ver=${ver}/${svnmodule}/${dir}"/>
<svn username="{username}" password="${password}" javahl="false">
<update dir="${ver}/${svnmodule}/${dir}" />
</svn>
</target>
<target name="updateSVN" >
<input message="请输入要更新的目录:" addproperty="dir" />
<input message="请输入版本号:" addproperty="ver" />
<svn username="${username}" password="${password}" javahl="true">
<update dir="${ver}/${svnmodule}/${dir}" />
</svn>
<svn javahl="true">
<log destfile="revision.log"
path="${ver}/${svnmodule}/${dir}"
asXml="false"
startRevision="HEAD"
stopRevision="PREV" />
</svn>
<echo message="Update finished successfully, please see attached for version information!" />
</target>
<target name="updateReversion" >
<input message="请输入要更新的目录:" addproperty="dir" />
<input message="请输入版本号:" addproperty="ver" />
<input message="请输入更新的svn版本:" addproperty="reversion" />
<svn username="${username}" password="${password}" javahl="true">
<update dir="${ver}/${svnmodule}/${dir}" revision="${reversion}"/>
</svn>
<svn javahl="true">
<log destfile="revision.log"
path="${ver}/${svnmodule}/${dir}"
asXml="false"
startRevision="HEAD"
stopRevision="PREV" />
</svn>
<echo message="Update finished successfully, please see attached for version information!" />
</target>
<target name="help" description="Project building help.">
<echo message="Pickoo项目管理使用说明"/>
<echo message="------------------------------------------------------"/>
<echo message="ant help 使用说明"/>
<echo message=""/>
<echo message="第一步、选择下列方式,从SVN更新"/>
<echo message=""/>
<echo message="ant svn-checkout-module -Dver=HEAD 更新整个模块"/>
<echo message="ant svnupdate-war -Dver=HEAD 更新war全部文件"/>
<echo message="ant svnupdate-src -Dver=HEAD 更新src全部"/>
<echo message="ant svnupdate-conf -Dver=HEAD 更新conf全部"/>
<echo message="ant properties -Dver=HEAD 更新properties文件"/>
<echo message="ant update-file -Dver=HEAD -Ddir=dir -Dfile=file 部署war下的单个文件到目标服务器node"/>
<echo message="ant update-src -Dver=HEAD -Ddir=dir -Dfile=file 部署src下的单个文件到目标服务器node"/>
<echo message="ant update-conf -Dver=HEAD -Ddir=dir -Dfile=file 部署conf下的单个文件到目标服务器node"/>
<echo message=""/>
<echo message="第二步、编译代码"/>
<echo message="ant compile -Dver=HEAD 编译Java类源文件"/>
<echo message="ant update-compile -Dver=HEAD 更新并编译Java类源文件"/>
<echo message="ant updateSVN -Dver=HEAD -Ddir=dir 编译log"/>
<echo message="ant updateReversion -Dver=HEAD -Ddir=dir -Dreversion=PREV 更新PREV版本"/>
</target>
<target name="clean" description="clean...">
<delete dir="${build}"/>
</target>
</project>
///////////////////////////////////////////////////////////////
nginx安装第三方模块 :
nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。
安装方法(进入Nginx源码目录):
#patch -p0 < /path/to/this/directory/jvm_route.patch
# ./configure --prefix=/usr/nginx-0.8.1 --with-http_stub_status_module --add-module=/path/to/this/directory/
#make
#make install
例如以下配置:
1. Resin:
upstream backend {
server 192.168.0.100 srun_id=a;
server 192.168.0.101 srun_id=b;
server 192.168.0.102 srun_id=c;
server 192.168.0.103 srun_id=d;
jvm_route $cookie_JSESSIONID;
}
2. Tomcat:
upstream backend {
server 192.168.0.100 srun_id=a;
server 192.168.0.101 srun_id=b;
server 192.168.0.102 srun_id=c;
server 192.168.0.103 srun_id=d;
jvm_route $cookie_JSESSIONID reverse;
}