• centos7.2+mysql5.6.35+subversion1.9.7+apache+https+php5.6.20+manmanager1.10(二)


    三、安装subversion

    centos7默认安装的svn版本是1.7.14,但这个版本中有个关于UTF8的bug,这个bug一直到1.8版本后期才修复,所以需要装完后升级到新版本,切记不能直接安装新版本,否则会有权限问题。

    安装subversion

    yum install subversion mod_dav_svn mod_ssl openssl httpd*  -y

    确认版本

    svn --version

    创建库

    mkdir -p  /data/svndata
    svnadmin create --fs-type fsfs /data/svndata/testrepo(注:默认存储方式为bdb,不过使用fsfs存储方式更有效)
    cd /data/svndata/testrepo/conf
    vim svnserve.conf 
        [general]  
        anon-access = none  
        auth-access = write  
        password-db = /etc/access/passwd  #httpd鉴权使用  
        authz-db = /etc/access/authz      #svn版本库权限文件  
        realm =   testrepo                #版本库  
     
    
    mkdir  /etc/access    //创建权限文件
    touch /etc/access/passwd  //文件加密
    htpasswd -c /etc/access/passwd admin #添加第二个用户的时候,不要-c,否则会被覆盖  
    
    cp /data/svndata/testrepo/conf/authz /etc/access/authz
    # vim /etc/access/authz
        [groups]  
        admin= admin       
        [testrepo:/]  
        @admin=rw 
        [/]
         *  = r
    vim /etc/httpd/conf.d/subversion.conf 
    <Location /svn/>                                                                                                                                                                      
    DAV svn                                                                                                                                                                                
    SVNParentPath /data/svndata/                                                                                                                                                          
    AuthType Basic                                                                                                                                                                        
    AuthName "svn Repository"                                                                                                                                                              
    AuthUserFile /etc/access/passwd                                                                                                                                                        
    Require valid-user                                                                                                                                                                    
    AuthzSVNAccessFile /etc/access/authz                                                                                                                                                  
    SSLRequireSSL                                                                                                                                                                          
    </Location> 
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    配置https,生成证书

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

    配置apache ssl

    vim /etc/httpd/conf.d/ssl.conf  
      SSLCertificateFile /etc/pki/tls/certs/svn_server.crt  
      SSLCertificateKeyFile /etc/pki/tls/private/svn_server.key  
    vim /etc/httpd/conf/httpd.conf 
       <IfModule dir_module>中添加
      Index.cgi index.php
      最下面加2行  
        LoadModule php5_module modules/libphp5.so
        AddType application/x-httpd-php .php
    //libphp5.so是php安装后才会有

    修改/etc/access访问权限

    chown -R apache:apache /etc/access/
    chmod -R a+x /etc/access/

    修改/svndata及库访问权限

    chown -R apache:apache /data/svndata/
    chmod -R a+x /data/svndata/

    重启apache,svnserve

    systemctl restart httpd.service
    pkill svnserve
    svnserve -d -r /data/svndata/testrepo
    //权限控制:允许httpd访问svn库
    chcon -R -h -t httpd_sys_content_t /data/svndata

    强制输入提交备注(以下内容需要带空格)

    在conf下的hooks中新建pre-commit文件,文件内容如下

    #!/bin/sh
                                                                                                                                                
    REPOS="$1"                                                                                                                                                               
    
    TXN="$2"                                                                                                                                                                     
    
    SVNLOOK=/usr/bin/svnlook                                                                                                                                       
    
    LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" |wc -c`                                                           
    
    if [ "$LOGMSG" -lt 15 ];                                                                                                                                               
    
    then                                                                                                                                                                              
    
       echo "提交失败【提交代码必须有注释,不可少于15个字符!】." 1>&2                                                                     
    
       exit 1                                                                                                                                                                           
    
    fi

    对于UTF-8字符集的修复

    //创建一个新的YUM库文件 /etc/yum.repos.d/wandisco-svn.repo
    vim /etc/yum.repos.d/wandisco-svn.repo
    //内容如下
    [WandiscoSVN]
    name=Wandisco SVN Repo
    baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.9/RPMS/$basearch/
    enabled=1
    gpgcheck=0
    //安装最新版本SVN
    yum remove subversion -y 
    yum install subversion mod_dav_svn -y
    确认版本
    #svn --version
    vim /etc/httpd/conf/httpd.conf
    //增加
    <IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
    SVNUseUTF8 On
    </IfModule>

    权限设置

    chown apache:apache pre-commit
    chmod 777 pre-commit
    systemctl restart httpd.service

    四、配置php

    因为yum缺省安装的是PHP5.4,所以先要添加yum库

    [root@svnhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    [root@svnhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    安装PHP5.6.20

    [root@svnhost ~]# yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
    [root@svnhost log]# yum install php-pear        //安装SVNMANAGER需要的包
    [root@svnhost ~]# yum install php-mysqli        //安装svnmanage需要的包

    配置PHP

    vim /etc/php.ini
    date.timezone = PRC //把前面的分号去掉,改为date.timezone = PRC
    expose_php = Off //禁止显示php版本的信息
    short_open_tag = ON //支持php短标签,一定要打开,否则不能解析PHP文件
    //测试PHP安装是否成功
    #systemctl restart httpd.service
    #systemctl start mysqld.service
    
    vim /var/www/html/index.php
    <?php
    phpinfo();
    ?>

    从客户端访问http://ip, 显示PHP版本信息,说明PHP安装成功。

    测试php连接mysql是否成功

    <?php                                                                                                                                                                                  
    $connect=mysqli_connect("127.0.0.1","admin","admin");                                                                                                                               
    if(!$connect) echo "Mysql Connect Error";                                                                                                                                              
    else echo "Mysql Connect Success";                                                                                                                                                     
    mysqli_close();                                                                                                                                                                        
    ?>

    从客户端访问http://ip/test.php, 显示"Mysql Connect Success",说明连接mysql成功。

    五、SVNmanager安装

    cd  /usr/local
    wget -c https://sourceforge.net/projects/svnmanager/files/svnmanager/1.10/svnmanager-1.10.tar.gz
    wget -c http://download.pear.php.net/package/VersionControl_SVN-0.5.2.tgz

    将svnmanager解压至/var/www/html下

    tar zxvf  svnmanager-1.10.tar.gz
    mv svnmanager-1.10    svnmanager
    cp -R svnmanager /var/www/html/
    //pear安装VersionControl_SVN-0.5.2 (与之前的版本不同,不需要再安装XML_Parser包)
    pear install VersionControl_SVN-0.5.2.tgz

    配置svnmanager中的config.php文件

    svnmanager的配置文件在/var/www/html/svnmanager目录下,有一个config.php.linux和config.php.win,分别针对Linux和Windows操作系统下的配置模板.Copy config.php.linux 到config.php

    $htpassword_cmd = "/usr/bin/htpasswd";
    $svn_cmd = "/usr/bin/svn";
    $svnadmin_cmd = "/usr/bin/svnadmin";
    $svn_config_dir    = “/etc/access/";
    $svn_repos_loc = "/data/svndata/";
    $svn_passwd_file = " /etc/access/passwd";
    $svn_access_file = " /etc/access/authz";
    $smtp_server = "smtp.domain.org";
    $dsn = "mysqli://admin:admin@127.0.0.1/svnmanager";               (请注意这里使用的是mysqli)
    //Administrator account
    $admin_name = "admin";
    $admin_temp_password = "admin”;

    配置访问权限

    chown -R apache:apache /var/www/html/svnmanager/
    chmod -R a+x /var/www/html/svnmanager/
    systemctl restart httpd

    通过浏览器访问http://ip/svnmanager会提示创建SVNManager数据表,刷新页面,出现登录页面,使用admin admin登录,这个密码是一次性的,所以要新建一个管理员用户。

    会出现的问题

    1、svnmanager1.10安装完毕后,选择“Repository Admin"-->"Group Privileges",会出现repository的列表,选择其中一个”Select"后,会出现如下错误:

    VersionControl_SVN_Exception: "svn_path" is not a valid option
    
    #0 /usr/local/php/lib/php/VersionControl/SVN.php(267): VersionControl_SVN_Command->setOptions(Array)
    
    #1 /usr/local/php/lib/php/VersionControl/SVN.php(226): VersionControl_SVN::init('list', Array)
    
    #2 /opt/apps/web/php/svnmanager/svnmanager/RepositoryModule/GroupPrivilegesEditPage.php(214): VersionControl_SVN::factory(Array, Array)
    
    #3 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TControl.php(419): GroupPrivilegesEditPage->onLoad(Object(TEventParameter))
    
    #4 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TPage.php(1079): TControl->onLoadRecursive(Object(TEventParameter))
    
    #5 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/Web/UI/TPage.php(955): TPage->onLoadRecursive(Object(TEventParameter))
    
    #6 /opt/apps/web/php/svnmanager/prado-2.0.3/framework/TApplication.php(483): TPage->execute()
    
    #7 /opt/apps/web/php/svnmanager/index.php(5): TApplication->run()
    
    #8 {main}

    解决方法是编辑/var/www/html/svnmanager/svnmanager/RepositoryModule目录下的
    UserPrivilegesEditPage.php 和 GroupPrivilegesEditPage.php 文件 :
    $options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ARRAY, 'svn_path' => $svn_cmd);
    改成:
    $options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ARRAY);

     2、解决中文目录问题(转自:http://www.jiazi.cn/blog/?id=46

    早期的版本,svnmanager连中文目录都无法显示,主要是在权限分配时。但svnmanager-1.10已经支持显示中文目录了,但也仅仅是能在下拉列表中显示而已,当你想进一步查看该中文目录下的子目录时,就会报类似如下的错误:

    VersionControl_SVN_Exception: Execution of command failed returning: 1
    svn: E000022: Can't convert string from native encoding to 'UTF-8':
    svn: E000022: file:///data/svn/repositories/developer///doc/?228?184?147?229?136?169

    解决方法:

    修改/usr/share/pear/VersionControl/SVN/Command.php文件,在run()方法中找到如下代码:

    if (!$this->passthru) {
      exec("{$this->prependCmd}$cmd 2>&1", $out, $returnVar);
    } else {
      passthru("{$this->prependCmd}$cmd 2>&1", $returnVar);
    }

    改为:

    if (!$this->passthru) {
     exec("export LC_CTYPE=en_US.UTF-8 && {$this->prependCmd}$cmd 2>&1", $out, $returnVar);
    } else {
     passthru("export LC_CTYPE=en_US.UTF-8 && {$this->prependCmd}$cmd 2>&1", $returnVar);
    }
  • 相关阅读:
    一致性hash算法
    Mapreduce部署与第三方依赖包管理
    windows10下使用spark-2.3.0-bin-without-hadoop相关问题
    VirtualBox mount报错:/sbin/mount.vboxsf: mounting failed with the error: No such device
    如何重命名MongoDB中的replica set
    MongoDB开发环境Replica Set单机部署流程
    MongoDB修改Replica Set的服务器名和端口
    Axios -- Ajax请求
    element中的table表格显示时间格式问题
    java 常用工具类
  • 原文地址:https://www.cnblogs.com/drnmmond/p/8527808.html
Copyright © 2020-2023  润新知