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 对应不同的端口,而且?
不能冲突,也不能被其它的服务占用。?
?