设为首页 收藏本站
查看: 701|回复: 0

[经验分享] redhat下svn服务器搭建

[复制链接]

尚未签到

发表于 2018-5-13 09:11:01 | 显示全部楼层 |阅读模式
  环境
  Linux version 2.6.9-89.ELlargesmp  (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Mon Apr 20 10:43:12 EDT 2009

  
安装篇

一、安装Apache

安装脚本如下:

mkdir /usr/svn/ && cd /usr/svn/

下载 httpd-2.2.17.tar.gz

tar xvzf httpd-2.2.17.tar.gz  &&  cd httpd-2.2.17

安装 apr

现在在httpd-2.2.17目录下。

cd srclib/apr

./configure -prefix=/usr/local/apr

make

make install

安装 apr-util

cd srclib/apr-util

./configure -prefix=/usr/local/apr-util -with-apr=/usr/local/apr

make

make install

回到httpd-2.2.17目录下

./configure  -enable-dav -enable-so --prefix=/usr/local/apache2/ -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

make

make install


说明:

其中--enable-dav允许Apache提供DAV协议支持,--enable-so允许运行时加载DSO模块,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。这里我们使用最简的安装模式.      

启动:/usr/local/apache2/bin/apachectl  start


二、安装SVN

下载 sqllite

tar xvzf sqlite-amalgamation-3.6.13.tar.gz  &&  cd sqlite-3.6.13

./configure --prefix=/usr/local/sqlite

make

make install

下载 subversion-1.6.15.tar.gz  

tar xvzf subversion-1.6.15.tar.gz  &&  cd subversion-1.6.15



./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl  --enable-maintainer-mode --with-sqlite=/usr/local/sqlite

make

make install

说明:

其中,--with-apxs 用于生成apache httpd的mod_dav_svn和mod_authz_svn模块

三、创建 repository

假设我们把版本库建立在/home目录下,那么执行mkdir repository新建版本库文件夹,通过svnadmin create repository/test命令可创建名为test的版本库。若创建成功,则subversion的安装便已成功完成。


具体操作步骤:

groupadd svnroot


useradd -g svnroot svnroot           (红色表示用户组,黑色表示用户名)   
passwd svnroot (键入svnroot的口令)

# cd /home && mkdir svnroot && cd svnroot

# mkdir repository

# /usr/local/subversion/bin/svnadmin create repository/test         

发现就会自动生成如下的几个文件:

conf  dav  db  format  hooks  locks  README.txt


四、导入源代码

现在我们有了自已的一个版本库了。现在就可以导入源代码进来

目前我的目录是:/home/svnroot/repository  

# ls

Test     

在这里面我们再运行:mkdir -p import/{trunk,branches,tags} 此命令

就可以创建新的文件目录层次出来即import目录下面再包含三个子目录出来!

下面的语句:

/usr/local/subversion/bin/svn import /home/svnroot/repository/import file:///home/svnroot/repository/test/ -m "Init repository"

这条语句将把路径/home/svnroot/repository/import下的目录和文件导入到你创建的Subversion 仓库中去,

运行此语句之后的输出:

新增           /root/repository/import/trunk

新增           /root/repository/import/branches

新增           /root/repository/import/tags


提交后的版本为 1。


五、版本库所有者与权限修改

目前,repository目录依然为root用户所有,默认权限为755,为了让用户能够通过apache正常读写该目录,我们需要先将该目录以及该目录的上层目录svnroot的所有权交给svnroot用户,然后为了安全起见,将repository和svnroot目录的权限都改为700。


操作步骤:

第一步:打开apache配置文件/usr/local/apache2/conf/httpd.conf,确保将User和Group 设置为

User svnroot

Group svnroot   

在最后新加

<Location /svn>

DAV svn

SVNParentPath /home/svnroot/repository/

AuthType Basic                                                               

AuthName &quot;Subversion Repository&quot;

AuthUserFile /home/svnroot/repository/pwdfile

AuthzSVNAccessFile /home/svnroot/repository/authz

Satisfy Any                                                                  

Require valid-user                                                            

</Location>

其中/svn表示一个url的模式,匹配形如http://host/svn的url;SVNParentPath 指定的目录下的所有项目都被subversion 认为是合法的版本库;AuthzSVNAccessFile为授权文件;AuthType 则制定了客户端身份认证机制,Basic表示http基本认证机制;AuthUserFile就是先前创建的密码文件;Satisfy Any 和Require valid-user告诉apache所有用户先使用匿名方式访问版本库,只有当访问控制策略要求一个真实的用户名时,apache才会对客户端进行身份验证,这是使用得最多的一种授权方式。


      

第二步:进入/home目录,修改svn仓库的所有者

chown -R svnroot:svnroot svnroot

chmod 700 root

chmod 700 svnroot/repository


六、生成身份认证文件

身份认证文件保存用户的用户名和密码,用于确定用户身份。

命令: /usr/local/apache2/bin/htpasswd -cm /home/svnroot/repository/pwdfile test

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile daiyanfei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile guolei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhouwenming

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile daishuwei

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhangwu

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile zhangyueshan

/usr/local/apache2/bin/htpasswd -m /home/svnroot/repository/pwdfile yuhaidong


说明: 其中-c表示创建身份认证文件,-m则表示密码使用md5加密。

这样就可以创建了一个用户test

最后将pwdfile文件的所有者改为svnroot并将其权限设置为700

chown -R svnroot: svnrootpwdfile         

chmod 700 pwdfile               


七、创建授权文件

其中,trunk表示主干,branches则为项目的分支,tags存放某个版本的快照。习惯上来说,大多数开发人的本地拷贝都来自truck目录,所以每个开发人员都应有trunk目录的读写权限,这样他们才能正常的进行日常的开发;而分支目录一般在,如某些开发人员需要大幅修改代码以增加新功能,或者代码进入较为稳定的阶段,开始bug去处工作等情况下使用,尽管这意味着这些代码总是有固定的一个或几个开发人员维护,但是基于“源代码共同拥有”的原则,我们还是可以将其设置为所有用户具有读写权限;tags目录则一般用于某个版本的发布,比如当项目到达版本1834时,release1已经完成,那么就可以将它复制到tags目录,作为一个快照存放,取一个好记得多的名字,比如release1(似乎应该只让某些人有写入权限,这样可以防止快照被破坏,可是即使被破坏了又怎么样呢,不要忘了我们在使用一个版本管理软件&#61514;)。

根据authz文件的语法,我么可以把上述的设置表达成这样:(注意每个有效配置行的前面都不能有空格)

vi /home/svnroot/repository/authz 把下面内容贴进去 (去掉//和注释)

   [groups]                                          //群组设置

   g_pm = micheal                                    //某群组里的成员

   g_dev = harry,sally


   [test:/]                             //仓库test的根目录的访问权限

   @g_pm = r                            //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = r                               //g_dev用户具有读写权限


   [test:/trunk]                       //仓库test的trunk目录的访问权限

   @g_pm = rw                       //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                       //g_dev用户具有读写权限


   [test:/branches]               //仓库test的branches目录下的访问权限

   @g_pm = rw                   //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                 //g_dev用户具有读写权限


   [test:/tags]                  //仓库test的tags目录下的访问权限

   @g_pm = rw                   //g_pm组用户具有读和写权限,’@’开头的表示群组设置

   @g_dev = rw                  //g_dev用户具有读写权限



如果需要对某个用户授权,可以这么写:

   [test:/branches]               //仓库test的branches目录下的访问权限

   sally = r                       //sally用户具有读权限


编辑完成之后将此文件的权限变更过来

不要忘记将authz文件的所有者改为svnroot,并且将其权限设为700。


八、修改Apache配置文件

vi /usr/local/apache2/conf/httpd.conf

确保以下两行已被subversion正确添加

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so



最后,使用如下命令重启apache httpd,打开浏览器访问http://localhost/svn/test/这个URL便可访问版本库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限的目录。


安装配置过程中常见的BUG:

添加一个我们的权限控制配置文件进来。这样的话就可以限制哪个账号对哪些目录具备了什么样的操作权限了。非常方便哦!到时我们可以给一个开发的账号与一个其上管理员的账号信息出来!


在安装软件时,可能出现各种库文件找不到的情况。。

如果是内部错误 vi /usr/local/apache2/logs/error_log 看看是否这里不对

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459368-1-1.html 上篇帖子: Redhat Linux下Sendmail配置(二) 下篇帖子: Dell1850上安装Redhat7.2操作系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表