您的位置:首页 > 运维架构 > Apache

[经验总结]源代码管理=Ubuntu+Apache+SVN

2014-03-16 22:54 183 查看
http://blog.csdn.net/thinkhy/article/details/4598630

最近公司的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>

D*** 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>

#http://localhost:8086/svn/
<Location /svn/>
D*** 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/>
D*** 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>

===============================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: