zoukankan      html  css  js  c++  java
  • Centos6.8下搭建SVN服务器

    svn支持https访问,所以至少,你需要安装的有三个模块:

    (安装SVN就只支持SVN server访问,安装httpd就可以配置支持http server访问,安装openSSL就可以配置支持https server访问)

    1. svn                     yum  install  mod_dav_svn subversion
    2. httpd                yum  install httpd httpd_devel
    3. openssl               yum  install mod_ssl openssl

    首先安装svn:

    使用root账号去登录之后,直接输入命令就行了:yum  install  mod_dav_svn subversion

    正常情况下,系统会自动的去下载所需要的数据包,然后活提示你是否立即安装,确认安装就是了

    下面开始配置svn,让服务器可以通过svn://的访问方式

    1.创建svn服务器根文件夹:

    #mkdir  /opt/svn/repos

    那么以后我的每个项目,如果需要提交到svn服务器上,我都应该放到这个路径下面去了

    2.创建一个版本库

    现在需要创建一个版本库,名字随便吧,尽量自己看懂哈!

    #svnadmin  create  /opt/svn/repos/test

    然后开始配置svn服务器

    在这里,需要注意的是,如果svn下面将来会有很多个项目的时候,我的建议是,专门建立一个统一的用户文件和权限文件,我也是这么做的!并且我都是放在svn根目录下,即: /opt/svn/repos

    其实在/opt/svn/repos/test/conf/路径下已经有了一个名叫passwd的文件了,这个就是一个用户文件,但是我不用他,我单独建立了一个统一管理用户的文件:

    新建用户文件:(用vi/vim编辑器就可以)

    # vim  /opt/svn/repos/svn_passwd

    :wq!

    对用户文件的内容可以是:(键值对的方式:用户名 = 密码)

    [users]

    admin = admin

    接下来需要配置用户的读写权限,同样的,单独新建一个文件,来管理所有的项目

    # vim  /opt/svn/repos/svn_authz

     :wq!

    文件的内容一般有这样几个部分:

    [aliases]

    [groups]                        svn的用户组

    admins = admin             admins用户组下目前只有admin一个用户,多个用英文逗号隔开

    [test:/]                      test版本库的根目录

    @admins =  rw              用户组前面需要加上@符号,rw表示读、写权限

    * =                                  其他一切用户连读都不让读

    好了,这样单独的用户与权限文件也就建立好了,我们需要在test版本库里面去配置让其生效,编辑 /opt/svn/repos/test/conf/svnserve.conf

    [general]

    anon-access  =  none                  

    auth-access  =  write

    password-db  =  /opt/svn/repos/svn_passwd                 建立的统一用户文件

    authz-db  =  /opt/svn/repos/svn_authz                            建立的统一的权限文件

    3.启动服务

    现在启动svn服务,就可以用svn://的方式访问了,建议是直接用下面的方式去启动

    #svnserve  -d  -r  /opt/svn/repos

    然后测试一下:

    #svn  co  svn://localhost/test

    会提示你输入用户名,密码,就和远程用putty连接远程主机很类似,登录进去就可以看到有关路径和文件信息了,

    我之前用的  /etc/init.d/svnserve   restart方式启动,就碰到实际上并没有启动成功的现象,控制台是显示启动ok了,但是运行身份不是root,也导致无法用svn://的方式去访问,出现的错误是:

    No repository found in 'svn://localhost/test'

    这个错误,首先要保证上述的权限文件配置对了,也就是[test:/]这个地方

    然后就是服务确实启动了,我用第一种方法启动就正常,第二种就出现这个错误了

    但是现在还是不能够通过浏览器用http://的访问方式去访问,需要安装httpd

    4.安装httpd支持

    #yum  install httpd httpd_devel

    同样,一般都是下载,然后提示是否立即安装,安装即可,

    5.这时候也是需要配置的:

    第一步是新曾一个httpd的用户(不是svn用户,他们对用户验证是独立的)

    #htpasswd   -c   /opt/svn/repos/svn_http_passwd   admin

    根据提示,输入密码即可

    #删除用户  

    htpasswd -D /opt/svn/repos/svn_http_passwd username  

    #修改用户密码  

    htpasswd /opt/svn/repos/svn_http_passwd username 

    给httpd添加用户,必须是htpasswd命令,第一次添加需要新建文件,带上 -c参数,以后就不需要了

    第二步需要修改一下这个文件/etc/httpd/conf.d/subversion.conf添加如下信息

    <Location  /svn>

    DAV  svn

    #SVNPath   /opt/svn/repos/test             //如果你只有一个版本库可以用它

    SVNParentPath  /opt/svn/repos                 //多个版本库用它,配合SVNListParentPath

    SVNListParentPath   on                         //多个版本库的时候可以用他,配合SVNParentPath

    AuthType  Basic

    AuthName   "Authorization Realm"

    AuthUserFile  /opt/svn/repos/svn_http_passwd      //不可与svn的用户公用一个文件

    AuthzSVNAccessFile          /opt/svn/repos/svn_authz     //这个可以与之前的那个权限文件公用

    Require   valid-user                                  //需要验证用户

    </Location>

    上述需要注意的是:/opt/svn/repos/svn_http_passwd不应该与svn共同使用一个用户文件,原因是httpd与svn用户都是单独的,前者会对用户文件中的密码进行加密,后者则不会加密,我之前用的就是公用的,然后导致用svn://访问,密码始终都是错误的

    <Location  /svn>,那么访问的时候,访问方式就变成了..../svn/test了

    6.启动httpd服务

    service  httpd  restart

    然后用浏览器就可以访问了,比如:http://23.22.22.22/repos/test

    输入用户名和密码即可

    现在还不能支持https://的访问方式呢,eclipse里面好像是必须为https://

    下面继续吧!

    7.安装openssl

    # yum  install mod_ssl openssl

    还是一样,先自动下载,然后提示是不是安装,安装即可

    下面的这些操作,表示我不很明白,我是按照小伙伴们的指示,这么做的:

    #cd  /etc/pki/tls/private  
    #openssl  genrsa  -out  my.key  1024    
    #openssl  req  -new  -key  my.key  -out  my.csr  
    #cd  /etc/pki/tls/certs  
    #openssl  x509  -req  -days  365  -in  /etc/pki/tls/private/my.csr  -signkey  /etc/pki/tls/private/my.key  -out  my.crt

    到这一步的时候,会让你输入很多东西

    下面openssl会要求为证书输入一些相关信息:
    Country Name (2 letter code) [XX]:CH
    State or Province Name (full name) []:SHENZHEN
    Locality Name (eg, city) [Default City]:SHENZHEN
    Organization Name (eg, company) [Default Company Ltd]:YUX
    Organizational Unit Name (eg, section) []:YUX
    Common Name (eg, your name or your server's hostname) []:ADMIN
    Email Address []:888888@qq.com

    然后还是要你输入信息,不过这时候enter可以结束输入了,没必要的就不输入了哈!

    这时,在目录/usr/local/apache2/conf/下生成了两个文件:server.key,server.crt

    8.修改/etc/httpd/conf.d/ssl.conf文件

    SSLCertificateFile /etc/pki/tls/certs/my.crt  
    SSLCertificateKeyFile /etc/pki/tls/private/my.key

    9.修改/etc/httpd/conf/httpd.conf文件

    如果是修改的/etc/httpd/conf/httpd.conf文件的话,localhost可能就没法访问了.

    <Directory />  
        Options FollowSymLinks  
        AllowOverride None  
        SSLRequireSSL                                     //添加此行  
    </Directory>

    可以修改/etc/httpd/conf.d/subversion.conf

    <Location  /svn>

    DAV  svn

    #SVNPath   /opt/svn/repos/test            

    SVNParentPath   /opt/svn/repos             

    SVNListParentPath   on                  

    AuthType  Basic

    AuthName   "Authorization Realm"

    AuthUserFile  /opt/svn/repos/svn_http_passwd    

    AuthzSVNAccessFile          /opt/svn/repos/svn_authz   

    Require   valid-user                

    SSLRequireSSL           //在这里添加加密访问配置

    </Location>

    这样就可以了

    10.重启httpd

    service  httpd  restart

    好了,现在可以去eclipse,把工程share了,前提是eclipse有svn插件哈!然后提交到svn服务器上去了

    到了这,我还是遇到问题了,eclipse下提交的时候出现的:

    Can't open file '/home/svnroot/repository/test/db/txn-current-lock': Permission denied

    我这里出现这个原因是:之前创建使用root创建的,用admin登录,目录权限不太一样,所以修改了一下权限就可以了:

    #修改/opt/svn/repos权限  

    chown apache.apache /opt/svn/repos -R  

    chmod 777 /opt/svn/repos -R  

    #关闭SELinux  

    setenforce 0  

    #重启apache服务  

    service httpd restart

    值得注意的几个问题:

    问题1:

    后期添加新的版本库操作

    svnadmin create /opt/svn/repos/newSubversionName

    配置新建立的版本库,为其配置用户文件信息与权限文件信息(在这里我使用的是统一的管理文件,每个版本库中都会在conf文件夹下自带一个passwd用户文件和authz权限文件,而我使用的是自行建立的一个统一管理用户与权限的文件,在svn根目录/opt/svn/repos路径下:svn_http_passwd、svn_authz、svn_passwd)

    修改新建版本库路径下的svnserver.conf,

    修改的内容参考上述配置内容

    如果需要添加新的用户:

    htpasswd  -c  /opt/svn/repos/svn_http_passwd  userName

    如果这个http的用户文件已经存在了,那么就可以不加参数-c了

    根据提示输入两次密码即可

    如果需要修改权限,直接编辑svn_authz即可

     

    然后最好是重启httpd服务和svnserver

    /etc/init.d/httpd   stop

    /etc/init.d/svnserver  stop 

    /etc/init.d/httpd   start

    /etc/init.d/svnserver start

    (似乎是可以直接用restart代替哈)

    问题2

    相关容易混淆的信息

    权限文件:这里其实有两种,分别是svn版本库本身的和httpd服务的,但是可以使用同一个

    用户文件:这里也是两种,一个是svn本身的,密码是明文,如admin=admin,一个是httpd的,但是密码是加密的,所以就不能使用相同的一个文件了

  • 相关阅读:
    Python学习笔记009_构造与析构
    Python学习笔记008_类_对象_继承_组合_类相关的BIF
    Python学习笔记007_图形用户界面[EasyGui][Tkinter]
    Python学习笔记006_异常_else_with
    Python学习笔记005_文件_OS_模块_pickle
    Python学习笔记004_字典_集合
    小甲鱼:Python学习笔记003_函数
    小甲鱼:Python学习笔记002_数组_元组_字符串
    Java数据库连接泄漏应对办法-基于Weblogic服务器
    java单点登录
  • 原文地址:https://www.cnblogs.com/LvLoveYuForever/p/6410109.html
Copyright © 2011-2022 走看看