SVN、Apache和Tomcat 整合

 一. 安装 subversion 

   首先安装服务端程序svn-1.4.5-setup.exe 

    和客户端程序 TortoiseSVN-1.4.5.10425-win32-svn-1.4.5.msi (是两个网站)。subversion 

在服 务器端客户端都需要安装,TortoiseSVN 只要在客户端安装就行。TortoiseSVN 的语言 

包下载和TortoiseSVN 的下载都在其官网的 同一页 

如果使用了eclipse 并且用插件的话,则可以不用TortoiseSVN。 

二.建立Repository   (保存文档各个版本的数据库),必须建立在服务端 

1)在服务器端建立一个空目录,比如“d:\svn\project1”。 

2 )进入dos 

3)svnadmin create --fs-type bdb d:\svn\project1 

  // svnadmin 是exe 程序,安装时已经自动加到系统路径了。 

  // 这里选择了 Berkeley Database   (BDB )方式做为版本库的类型 

  // 也可用TortoiseSVN 这个客户端工具实现创建 

  // d:\svn 是版本库的位置,也可以取别的名字,别的路径,一个版本库可以包含多个项目 

  // project1 是某个项目名称, 

三.在服务端配置Repository,主要的目的是控制访问权限和添加用户。 

1)打开d:\svn\project1\conf\svnserve.conf 

2 )把以下行前的#去掉,保存 

  # anon-access = read 

  # auth-access = write 

  # password-db = passwd 

3)打开d:\svn\project1\conf\passwd 文件 

4 )末尾加一行 

  xy = 1 

  保存 

  // xy 是用户名,1 是密码,自行替换 

5)多个用户就加多行 

四.在服务端启动 subversion 服务器。 

1)进入dos 

2 )svnserve.exe -d -r d:\svn 

3)服务启动后,在服务器端的3690 端口监听客户端的连接请求。 

4 )参数的作用是:当在客户端用“svn://xxx/project1”(xxx  可以是服务器端主机名或 ip)访问 

服务器的Repository 时, 

  服务器会知道你要访问的Repository 路径是“d:\svn\project1”。 

5)如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 

 “d:\svn\Project2”,并在其中再建立一个Repository, 

  此时客户端就可以用“svn: //xxx/project2”访问“C:\SVNProjects\Project2”下的Repository。 

6)如果想要注册为window 服务, 

  进入dos, 

  sc  create  svnservice  binpath=  "D:\Program  Files\Subversion\bin\svnserve.exe  --service  -r 

d:\svn" displayname= "SVNService" depend= Tcpip 

  // 请务必在一行内输入 

  // SVNService 是服务名,也可以替换 

  // D:\Program Files\Subversion\ 是服务器安装svn 的路径,要替换 

7)如果想注销window 服务 

  进入dos 

  sc delete SVNService 

五、在客户端安装eclipse 的svn 插件,安装好后几乎无需任何配置 

   在线安装方式的url 是http://subclipse.tigris.org/update 

六、在客户端,首先确保服务打开,打开视图,window -> show view -> other -> svn -> svn 

资源库 

   右键单击,新建->资源库位置-> svn://localhost/project1,出现一个资源库, 

   右键单击,取出为->作为新项目取出,并用向导配置。选yes 

  java->java 项目,next->finish. 

七、在客户端在eclipse 的左边视图项目根目录下加文件夹,加文件,然后 

   在eclipse 的左边视图的文件夹或根路径下提交,更新。(右键单击) 

   所有的操作都在 eclipse 的界面内完成,工作效率极高。比TortoiseSVN 方便, 

   注意 eclipse 的配置文件不要提交上去,就是建立eclipse 项目时会自动建立在项目文件夹 

里的两三个文件。 

   因为是“作为新项目取出”。 

SVN 与Apache 整合(和上面的配置没关系) 

先安装apache_2.0.63-win32-x86-no_ssl.msi 

 打开http://loccalhost,如果能出现内容,那你的Apache就安装成功了。 

运行 Subversion 安装程序,如果安装程序能够识别你已经安装了 Apache,那么你的安装基 

本上就OK 了。如果它不能(我的机器未能识别),那么你需要做以下手工配置: 

   注:如果你先安装 Apache ,再安装 Subversion ,正常情况下下面的工作(2.3                        配置 

前)Subversion 安装程序已经帮你完成了使用资源管理器,进入 Sibversion 的安装目录(通常 

为 c:\program files\Subversion),找到文件httpd/mod_dav_svn.so 和 mod_authz_svn.so,将它 

们拷贝到Apache 的modules  目录(通常为c:\program files\apache group\apache2\modules)。 

从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules 目录。 

使 用 如 记 事 本 之 类 的 文 本 编 辑 器 编 辑 Apache                的 配 置 文 件 (  通 常 为 

c:\program files\apache group\apache2\conf\httd.conf),修改以下内容: 

去掉以下行的注释(将开头的#删除): 

#LoadModule dav_fs_module modules/mod_dav_fs.so 

#LoadModule dav_module modules/mod_dav.so 

在LoadModule节的最后添加以下两行: 

LoadModule dav_svn_module modules/mod_dav_svn.so 

LoadModule authz_svn_module modules/mod_authz_svn.so 

在配置文件的最后添加下面这些行: 

<Location /svn> 

DAV svn 

SVNParentPath D:\SVN 

AuthType Basic 

AuthName "Subversion repositories" 

AuthUserFile D:\passwd 

#AuthzSVNAccessFile D:\svnaccessfile 

Require valid-user 

</Location> 

配置表示:你所有的版本库将位于D:\SVN 目录下,要访问你的版本库可以使用这样的 

URL:http://YourIP/svn/,访问权限将由passwd文件中的用户名/密码来限制。 

详细说明如下: 

--------------------------------------------------------------------------- 

<Location /svn> 

意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库 

DAV svn 

告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块 

SVNListParentPath on 

在Subversion 1.3  及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目 

录下所有的版本库 

SVNParentPath D:\SVN 

告诉Subversion在目录D:\SVN下寻找版本库 #(修改成你自己的目录) 

AuthType Basic 

启用基本的验证,比如用户名/密码 

AuthName "Subversion repositories" 

当一个验证对话框弹出时,告诉用户这个验证是用来做什么的 

AuthUserFile D:\passwd     #(密码文件,不是文件夹哦) 

指定D:\passwd用为密码文件用来验证用户的用户名及密码 

AuthzSVNAccessFile D:\svnaccessfile 

指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限 

Require valid-user 

限定用户只有输入正确的用户名及密码后才能访问这个路径 

----------------------------------------------------------------------------- 

创建passwd文件 

打开命令行(DOS窗口CMD), 

将当前目录切换到apache2  目录(通常为c:\program files\apache group\apache2\bin), 

输入命令: 

htpasswd.exe -c passwd  username 

Automatically using MD5 format. 

New password: ******  (输入密码) 

Re-type new password: ****** 

Adding password for user  username 

copy passwd d:\   (Httpd.conf 中设定的是在D:) 

重启Apache服务。 

重启后打开http://YourIP/svn/ 输入密码后,还是出错(因为还没有建立版本库) 

Forbidden 

You don't have permission to access /svn on this server. 

-------------------------------------------------------------------------------- 

Apache/2.0.59 (Win32) SVN/1.4.2 DAV/2 Server at 192.168.18.8 Port 80 

 (3)TortoiseSVN 

 按提示安装完成,需重启电脑 

 3.SVN项目设置 

 (1).打开资源管理器,在D:\SVN 目录下新建WWW 目录 

 (2).在WWW文件夹上右击TortoiseSVN--->Create repository here... 

  (也可以通过命令的方式:到SVN的安装BIN 目录。运行:svnadmin create D:\svn\www 

  d:\svn 目录需先建好,要不会出错: 

 svnadmin: 档案库创建失败 

 svnadmin: 无法创建最上层目录 

 (3).然后选择Native filesystem(FSFS) 

 (4).到项目文件夹上,右击TortoiseSVN-->import... 

   在URL of repository:中输入http://YourIP/svn/www 

 (5).项目成员,可在自己机上新建一个空的项目文件夹.右击SVN checkout... 

  在提示的用户名和密码对话框中输入服务端配置的用户名和密码;然后点击OK;后面对 

话框中即会显示逐个加入的文件和目录信息,最后一条显示“Completed  At Version 1”。 

  如果成功,可以在本地目录下看到相应的代码文件。选中文件或目录,可以进行 

“SVN Update” (从服务器更新版本)和“Svn Commit”          (提交更改到服务器)操作。 

 Apache 与Tomcat 整合 

最近,需要用到apache 和tomcat 整合,以便可以通过apache web server 访问jsp 页面和servlet。 

照着网上很多网友的帖子都没有做出来,于是只好求助 apache  的官方网站了,按照相关文 

档的说明,自己琢磨着做出来了一个。 

一、系统环境: 

  Windows XP 2002 SP2 

二、所需软件: 

  apache_2.0.63-win32-x86-no_ssl.msi 

  mod_jk-1.2.27-httpd-2.0.63.so 

  apache-tomcat-6.0.23.exe 

  jdk-1_5_0-windows-i586.exe 。 

三、准备工作: 

  在系统上安装并配置好jdk 、apache 和tomcat          (此过程略)。 

四、整合步骤: 

  1、将mod_jk-1.2.27-httpd-2.0.63.so 改名为mod_jk.so,然后复制到/apache-directory/modules 

目录下。改名的原因不清楚,参照apache 官方文档做的。 

  2、在httpd.conf 文件的最后加上如下指令: 

    Include conf/jk.conf 

该指令用来把外部配置文件导入httpd.conf 中。 

  3、在/apache-directory/conf 中新建jk.conf 文件,并添加如下内容: 

    #加载mod_jk 模块,以便让 apache 支持 servlet/jsp 

    LoadModule jk_module modules/mod_jk.so 

    #定义workers,mod_jk 会在指定的路径下寻找workers.properties 文件 

     JkWorkersFile conf/workers.properties 

     #指定mod_jk  日志文件,这个文件由系统自动生成 

     JkLogFile logs/mod_jk.log 

    #指定日志级别为info,日志会包含标准mod_jk 行为(默认) 

     JkLogLevel info 

     #指定日志格式 

     JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 

     #下面这两行没弄清楚是什么作用,所以暂时先注释掉了 

     #jk1.2 Documentation  中也有说明 

     #JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 

     #JkRequestLogFormat "%w %V %T" 

    #下面两行指令用来指派URLs 到tomcat,下面还会有详细说明 

     JkMount /* ajp13 

     JkMount /*.jsp ajp13 

   4、在/apache-directory/conf 下新建workers.properties 文件,并添加如下内容: 

    workers.tomcat_home=C:\Tomcat #指定Tomcat 路径 

     workers.java_home=C:\Java\jdk1.5.0 #指定j2sdk  路径 

     ps=\ #这一行没弄清楚是什么作用 

     worker.list=ajp13 #worker 列表,一般用ajp13 

     worker.ajp13.port=8009 #端口,可以改成别的没被占用的端口 

     worker.ajp13.host=localhost #主机名 

     worker.ajp13.type=ajp13 #若使用ajp13,这两行 

     worker.ajp13.lbfactor=1 #都不用改 

   5、完成以上步骤后,启动 apache 和 tomcat 容器,就可以试验是否整合成功了,前提是 

jsp  工程要放在/tomcat-directory/webapps 下。如果想要把jsp  工程放在 apache 下,就要修改 

/tomcat-directory/conf/server.xml 文件,将<Host>元素的appBase 属性值改为和apache 配置文 

件中的documentRoot 一样就可以了。如果想要把jsp  工程放在apache 和tomcat 外部,就要 

同时修改两个配置文件apache 的httpd.conf 和tomcat 的server.xml。 

五、几点说明: 

  1、mod_jk 模块是 apache 出的一个工具,用来让apache web server 作为standalone server 

支持 servlet/jsp。 

  2、一个tomcat   worker 就是一个等待执行 servlet 的tomcat 实例。Apache   web   server 会将 

请求转发到worker 来运行。可以有多个worker,在workers.properties 文件中配置。 

  3、ajp13 不是随便起的worker 名,它是Apache JServ Protocol version1.3 的缩写。由于现 

在还没有关于这个协议如何工作的文档,所以也不好解释这个东西,只要知道 tomcat5.5 支 

持,而且可以作为tomcat worker 就行了。 

  4、再解释一下jk.conf 文件的最后两行。我们通常在tomcat 中运行一个jsp  文件,要在浏 

览器的地址栏中输入 

     http://localhost:8080/projectName/example.jsp 

JkMount /*.jsp ajp13 的作用就是指定访问apache web server 中的jsp  文件的URL 格式,相应 

的URL 为 

     http://localhost/projectName/example.jsp 

在tomcat 中运行一个servlet,要输入 

     http://localhost:8080/projectName/servletExample 

在apache 中相应的URL 就是 

     http://localhost/projectName/servletExample 

说到底,它和你的web 工程中的web.xml 中关于servlet URL 的设置是一样的。 

   5、显然,80 和 8080 端口已经做好了映射,apache 把 servlet/jsp 请求通过 8009 端口(在 

workers.properties 中配置)转给8009 对应的tomcat worker 处理。如果配置tomcat 集群的话, 

就要在workers.properties 中配置多个tomcat worker 了,每个worker 对应不同的端口,而且 

不能冲突,也不能被其它的服务占用。 


猜你喜欢

转载自lengjing.iteye.com/blog/1157293