Linux下SVN+Apache+iF.svnadmin搭建

SVN:集中式版本控制工具

iF.svnadmin:版本控制SVN可视化管理工具,用来管理SVN用户、用户组以及权限分配。

环境:centos6.6

IP:192.168.31.10

首先:yum -y update  #更新全部软件包

yum -y install httpd   # 安装Apache

apachectl -v #查看Apache版本

yum -y install mod_dav_svn subversion   #安装SVN加载模块以及SVN

svn --version       #查看SVN版本

yum -y install php  # 安装PHP(iF.svnadmin是用PHP编写开发的工具)

php -v         #查看PHP版本

wget https://sourceforge.net/projects/ifsvnadmin/files/svnadmin-1.6.2.zip/download   #下载 iF.svnadmin压缩包

unzip download #解压压缩包

cp -r  iF.svnadmin.1.6.2/ /var/www/html/svnadmin  #把压缩包复制到http默认路径下

vi /etc/httpd/conf.d/subversion   #修改SVN模块配置文件

LoadModule dav_svn_module     modules/mod_dav_svn.so  

 LoadModule authz_svn_module   modules/mod_authz_svn.so    #这两行判断Apache是否加载了SVN模块

<Location /svn>        #标签

        DAV svn           #DAV加载SVN

        SVNParentPath /var/www/svn    #这是版本库的根目录,用户不允许访问

        AuthType Basic                        #访问方式为basic

        AuthName "please login"         #登录时的提示信息

        AuthUserFile /var/www/svn/passwd      #用户以及口令的配置文件

        AuthzSVNAcessFile /var/www/svn/authz  #保存用户权限的文件    

        Require valid-user                #允许用户访问

</Location>

#保存退出

vi /etc/httpd/conf/httpd.con

ServerName 192.168.31.10 #保存退出

iptables -I INPUT -p tcp --dport 80 -j ACCEPT   #设置防火墙

通过网页访问服务器Apache:http://192.168.31.10查看是否出现Apache页面

mkdir  /var/www/svn

touch /var/www/svn/authz

touch /var/www/svn/passwd

chown -R apache:apache /var/www/html/svnadmin/

chmod -R 777 /var/www/html/svnadmin/data

chown -R apache:apache /var/www/svn

cp /var/www/html/svnadmin/data/config.tpl.ini /var/www/html/svnadmin/data/config.ini        #将样例文件复制为配置文件

vi /var/www/html/svnadmin/data/config.ini

[Common]

FirstStart=1

BackupFolder=./data/backup/

[Translation]

Directory=./translations/

[Engine:Providers]

AuthenticationStatus=basic
UserViewProviderType=passwd

UserEditProviderType=passwd

GroupViewProviderType=svnauthfile

GroupEditProviderType=svnauthfile

AccessPathViewProviderType=svnauthfile

AccessPathEditProviderType=svnauthfile

RepositoryViewProviderType=svnclient

RepositoryEditProviderType=svnclient

[ACLManager]   #管理员用户配置文件

UserRoleAssignmentFile=./data/userroleassignments.ini   #配置文件路径

[Subversion]

SVNAuthFile=/var/www/svn/authz     #subversion用户权限文件路径

[Repositories:svnclient]

SVNParentPath=/var/www/svn     #版本库根目录,后面没有/符号

SvnExecutable=/usr/bin/svn      #SVN执行命令变量路径,可以在命令行通过whereis svn查看

SvnAdminExecutable=/usr/bin/svnadmin    #SVNadmin命令变量路径,同上

[Users:passwd]

SVNUserFile=/var/www/svn/passwd       #用户口令配置文件

[Users:digest]

SVNUserDigestFile=
SVNDigestRealm=SVN Privat

[Ldap]

HostAddress=ldap://192.168.136.130:389/

ProtocolVersion=3

BindDN=CN=Manuel Freiholz,CN=Users,DC=insanefactory,DC=com
BindPassword=root

CacheEnabled=false
CacheFile=./data/ldap.cache.json

[Users:ldap]

BaseDN=DC=insanefactory,DC=com
SearchFilter=(&(objectClass=person)(objectClass=user))
Attributes=sAMAccountName
[Groups:ldap]
BaseDN=DC=insanefactory,DC=com
SearchFilter=(objectClass=group)
Attributes=sAMAccountName

GroupsToUserAttribute=member

GroupsToUserAttributeValue=distinguishedName

[Update:ldap]
AutoRemoveUsers=true
AutoRemoveGroups=true

[GUI]
RepositoryDeleteEnabled=false          #可以通过网页删除版本库,默认是禁止,如果允许,修改成true 即可
RepositoryDumpEnabled=false         #默认即可
AllowUpdateByGui=true                  #默认即可
#保存退出

 启动Apache:service httpd start

访问页面:http://192.168.31.10/svnadmin

点击左下角save configuration提交,之前在配置文件 /var/www/html/svnadmin/data/config.ini 设置过,默认即可

初始用户密码为admin,admin,登录进行操作即可

 可以选择中文语言,admin是初始系统管理员,修改密码,然后进行用户、用户组以及权限分配操作。

svn 访问路径需要管理员指定,才能进行登录访问。

此文章仅做个人笔记使用

将http协议改成HTTPS协议:

yum –y install mod_ssl openssl

cd /etc/pki/tls/private

openssl genrsa –out ca.key 1024

openssl req –new –key ca.key –out ca.csr

cd /etc/pki/tls/certs/

openssl x509 -req -days 365 -in /etc/pki/tls/private/ca.csr -signkey /etc/pki/tls/private/ca.key –out ca.crt

vi /etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/pki/tls/certs/ca.crt

SSLCertificateKeyFile /etc/pki/tls/private/ca.key

#保存退出

vi /etc/httpd/conf/httpd.conf

Listen 80

<VirtualHost _default_:80>

SSLEngine on

SSLCertificateFile /etc/pki/tls/certs/ca.crt

SSLCertificateKeyFile /etc/pki/tls/private/ca.key

SSLCertificateChainFile /etc/pki/tls/certs/ca.crt

</VirtualHost>

#保存退出

service httpd restart

通过https://192.168.31.20:80访问成功

当想要为服务器创建多个版本库的根路径时,需要在Apache的配置文件/etc/htttpd/conf.d/subversion.conf中添加多个location标签,其格式与第一个相同,

<Location /repo1>        #标签

        DAV svn           #DAV加载SVN

        SVNParentPath /var/www/svn/repo1    #这是版本库的根目录,用户不允许访问

        AuthType Basic                        #访问方式为basic

        AuthName "please login"         #登录时的提示信息

        AuthUserFile /var/www/svn/passwd      #用户以及口令的配置文件

        AuthzSVNAcessFile /var/www/svn/authz  #保存用户权限的文件    

        Require valid-user                #允许用户访问

</Location>

添加第二个根路径就可以在这之后添加代码:

<Location /repo2>        #标签

        DAV svn           #DAV加载SVN

        SVNParentPath /var/www/svn/repo2    #这是版本库的根目录,用户不允许访问

        AuthType Basic                        #访问方式为basic

        AuthName "please login"         #登录时的提示信息

        AuthUserFile /var/www/svn/passwd      #用户以及口令的配置文件

        AuthzSVNAcessFile /var/www/svn/authz  #保存用户权限的文件    

        Require valid-user                #允许用户访问

</Location>

保存退出,只是标红地方不同,其他不用更改。

还要修改iF.svnadmin管理里工具的配置文件,此文章中是在/var/www/html/svnadmin/data/conf.ini中

[Repositories:svnclient]

SVNParentPath=/var/www/svn/repo1     #版本库根目录,后面没有/符号

SvnExecutable=/usr/bin/svn      #SVN执行命令变量路径,可以在命令行通过whereis svn查看

SvnAdminExecutable=/usr/bin/svnadmin    #SVNadmin命令变量路径,同上

之后添加:

[Repositories:svnclient:1]

SVNParentPath=/var/www/svn/repo2     #版本库根目录,后面没有/符号

SvnExecutable=/usr/bin/svn      #SVN执行命令变量路径,可以在命令行通过whereis svn查看

SvnAdminExecutable=/usr/bin/svnadmin    #SVNadmin命令变量路径,同上

只是标红的地方不同,添加修改,保存退出。

重启Apache。

原文地址:https://www.cnblogs.com/xinxiao/p/7299309.html