最近公司的Windows服务器中毒了,同事决定改用Linux。听说我以前弄过Linux,且还比较闲,于是被拉过去装服务器。
以前实验室的SVN服务器是加老板配的,这次只能自己硬着头皮上了。
Google搜到下面这篇文章http://writeblog.csdn.net/PostEditPlain.aspx) :
=========================================
一、安装Apache2.2服务器(如果你安装了这个步骤就可以省略了)
#sudo apt-get install apache2
#sudo apt-get install apache2-common
#sudo apt-get install apache2-mpm-prefork
#sudo apt-get install apache2-utils
#sudo apt-get install libapache2-svn
#sudo apt-get install libapache2-mod-auth-pam(可选,用于PAM)
#sudo apt-get install libapache2-mod-auth-sys-group(可选,用于PAM)
#sudo apt-get install subversion
#sudo apt-get install subversion-tools
二 SVN配置
1.创建SVN的版本仓库(将定我把我的库名字叫svn,项目名称叫myproject 我的用户名石tokyo2006)
#sudo mkdir /home/svn
#sudo mkdir /home/svn/myproject
2.创建一个用户组来拥有文件仓库所在的目录 (如果你不想通过组来分配权限,也可以单独用用户分配权限)
#sudo vi /etc/group
# cat /etc/group|grep subversion subversion:x:1001:www-data,tokyo2006
创建组的权限
#/home/svn# sudo chown -R root:subversion myproject
#/home/svn# sudo chmod -R g+rws myproject
单独给用户创建权限
# sudo chown -R www-data:www-data /home/svn/myproject
创建文件仓库
#sudo svnadmin create /home/svn/myproject
三 Apache配置
#sudo gedit /etc/apache2/mods-available/dav_svn.conf
在文件中添加以下内容
<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>(如果想每次登陆都输入密码请把这个引掉)
Require valid-user
</LimitExcept>
</Location>
添加好上述内容后保存退出,然后重启Apache
#sudo /etc/init.d/apache2 restart
接下来,创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。
#sudo htpasswd -c /etc/subversion/passwd 要创建的用户名
它会提示您输入密码,当您输入了密码,该用户就建立了。
在浏览器里面输入 http://localhost/svn/myproject 你就可以看见你的版本了
我们来提交一个文件做测试,在/home/tokyo2006/truck里面有文件我们提交,用如下命令
#svn -import -m “操作注释” /home/tokyo2006/truck http://localhost/svn/myproject
在浏览器中浏览一下是不是发现变成版本一了,好了,我们来checkout一下,呵呵
#svn checkout http://localhost/svn/myproject /home/tokyo2006/test
看看test文件夹里面是不是有文件了?
就这么多了,笔记MARK
在网上找了个更详细的MRAK http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/
=================================================
上面的步骤比较清晰,但还有以下三点值得注意 :
1. 新建组和为用户添加组时,需要重新登录Shell才能生效,感谢水木社区LinuxApp版的网友提示。
2. 一个新的版本库就被创建出来之后,用svn import 命令导入代码的过程中,出现了Permission denied的错误,这时需要在库目录下sudo chmod -R o+wxr添加其他用户的全部权限,这样可能不安全,但还没找到解决办法。
3. 有关Ubuntu的,apache2-common和 apache2-utils改名了,不需要单独安装; libapache2-mod-auth-pam和libapache2-mod-auth-sys-group这两个包在新立德源里找不到。
4 一般要用SVN管理 多个项目,所以配置文件要加上以下两行:
SVNListParentPath on # 访问父目录
SVNParent /svn # 父目录指向位置
注意Windows和Unix平台中配置文件不同: windows 配置文件: apache/conf/httpd.conf Unix/Linux 配置文件:/etc/apache2/mods-available/dav_svn.conf
=================================================
最后秀一下我的配置文件:
-----------------------------------------------------------
Windows 下 apache/conf/httpd.conf:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath E:/Apache_Svn/_svn_root
AuthName "PAM's SVN"
# 基本验证模式
AuthType Basic
AuthUserFile E:/Apache_Svn/Apache2.2/conf/svn-passwd
AuthzSVNAccessFile E:/Apache_Svn/Apache2.2/conf/svn-access
Require valid-user
</Location>
--------------------------------------------------------
--------------------------------------------------------
Linux 下 /etc/apache2/mods-available/dav_svn.conf :
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath /svn
AuthType Basic
#Satisfy Any
Require valid-user
#Require valid-group
Options Indexes MultiViews
AuthName "PAM subversion repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
#Require valid-user
#Satisfy Any
#</LimitExcept>
</Location>
===============================================================