zoukankan      html  css  js  c++  java
  • Ubuntu下部署SVN+SVNManager

    本文参考了一下博客,特此感谢:

    灰烬之灵     一米阳光做IT.测试


    环境描述:ubuntu 13.04
     
    1、先创建svn组和svn用户:
     
    sudo addgroup svn
    sudo useradd svn -g svn -m  //新增svn用户名,-g并制定它所在的组svn,-m同时创建svn用户所在的home目录
    sudo passwd svn  //设置svn用户的密码 // hzsxsvn 我设置的用户svn的密码


    2、安装apache2和svn server

    sudo apt-get install apache2
    sudo apt-get install subversion
    sudo apt-get install libapache2-svn


    3、创建svn版本库 这里库的名字为 svn,项目的名字为project
     
    sudo mkdir /home/svn/project
    sudo svnadmin create /home/svn/project/repos
     
    此时可以在/home/svn/project/repos目录下
    看到svn版本库的所有文件夹以及配置文件,如:conf、db、format、hooks、locks、README.txt
     

    4、配置并导入项目  测试
     
    sudo mkdir /home/svn/testprj
    sudo mkdir /home/svn/testprj/branches
    sudo mkdir /home/svn/testprj/tags
    sudo mkdir /home/svn/testprj/trunk
     
    导入项目到版本库:svn import /home/svn/testprj file:///home/svn/project/repos/testprj -m "initial import" 
    //  /home/svn/testprj 表示需要引入的项目
    //    file:///home/svn/project/repos/testprj 表示svn的版本库,此处是做初始化引入
     

    5、更改权限

    sudo chown -R svn:svn /home/svn/project/repos
    sudo chmod –R 777  /home/svn/project/*


    6、将svn配置到apache中通过http web方式访问
     
    sudo  vi /etc/apache2/apache.conf,将如下文件粘帖到apache.conf尾部,如下:
     
     <Location /svn>
        DAV svn
        SVNPath /home/svn/project/repos
        AuthzSVNAccessFile /home/svn/project/repos/conf/authz
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /home/svn/project/repos/conf/passwd
        Require valid-user
    </Location>
     
     备注:此配置文件是告诉apache关于svn的访问路径已经相关配置文件,这里注意访问的跟目录。重启apache服务器,然后就可以通过http://localhost/svn进行远程访问
     
    重启apache服务器:/etc/init.d/apache2 restart
     
    当然这里需要验证访问登录用户,接下来将介绍添加svn用户

    ############################
    ## 这里报错了
    ############################
    hzsx@hzsx-server:~$ sudo /etc/init.d/apache2 restart
    Syntax error on line 268 of /etc/apache2/apache2.conf:
    Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration
    Action 'configtest' failed.
    The Apache error log may have more information.
       ...fail!
    ############################################ 

    查一下后发现是一个so文件没加,在/etc/apache2/mods-available/dav_svn.load最后添加一行:
    LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so,apache服务器成功重启。

    hzsx@hzsx-server:~$ sudo /etc/init.d/apache2 restart       
     * Restarting web server apache2                                                                            
     apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
     ... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                          [ OK ]


    7、添加svn用户
     
    sudo htpasswd -c /home/svn/project/repos/conf/passwd testuser1  //然后会提示你输入密码,当然第一次创建svn用户,需要通过参数-c,然后第二次创建svn用户就不需要,这里要注意。
    sudo htpasswd /home/svn/project/repos/conf/passwd testuser2  //创建第二个svn用户
     
    然后就可以通过这些用户访问http://localhost/svn了,并可以在其他pc上对svn进行checkout,命令行如下:
    svn checkout http://localhost/svn --username testuser1 --password 123456
    当然还可以通过svn客户端工具checkout更方便
     


    8、用户权限控制
     
    需要在apache的配置文件中增加如下配置,才能使得apache能够获取svn的权限配置,如下:
    修改/etc/apache2/mods-available/dav_svn.load 继续添加另外两行,然后将apache服务器重启。

    #LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
    #LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so
    LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
    LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
    事实上好像前两行 添不添加 无所谓


    9、如果不配置如下权限,局域网其他主机浏览器访问 http://192.168.1.9/svn/testprj/
    会提示 You don't have permission to access /svn/project on this server.
    svn的权限控制是通过目录结构来控制,控制权限在/home/svn/project/repos/conf/authz文件中,示例配置如下:
     
     文件最后面添加几句:
     [groups]
    svn = testuser1
    # add user testuser1 to group svn

    [/]
    # / svn root directory
    @svn = rw


    10、图形化管理 svnmanager
    SVNManager is a PHP web based tool to administer a Apache Subversion repository server.
    svnmanager.sourceforge.net  当前版本为1.10

    wget http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.10.tar.bz2
    tar -vxjf svnmanager-1.10.tar.bz2
    sudo mv svnmanager-1.10 /var/www/svnmanager


    11、安装MYSQL root密码:roothzsx
    sudo apt-get install mysql-server mysql-client


    12、创建SVNManager数据库
    mysql -u root -proothzsx

    mysql> create database svnmanager;
    mysql> grant all privileges on svnmanager.* to 'svnmanager'@'localhost' identified by 'roothzsx';
    mysql> flush privileges;
    mysql> exit

    这里注意 mysql> 后面语句的结尾; 不能省略。


    13、安装PHP_5
    sudo apt-get install php5 php5-mysql php5-sqlite php-pear


    14、安装Pear模块:VersionControl_SVN
    pear install VersionControl_SVN-0.3.4 
    最新的应该是
    pear install VersionControl_SVN-0.5.1

    downloading VersionControl_SVN-0.5.1.tgz ...
    Starting to download VersionControl_SVN-0.5.1.tgz (31,121 bytes)
    .........done: 31,121 bytes
    install ok: channel://pear.php.net/VersionControl_SVN-0.5.1


    15、配置SVNManager
    sudo mkdir -p /home/svn/svnconfig
    sudo chown -R svn:svn  /home/svn
    sudo chmod -R g+rws /home/svn


    16、修改SVNManager配置文件
     sudo cp /var/www/svnmanager/config.php.linux /var/www/svnmanager/config.php
     vi /var/www/svnmanager/config.php

    对应修改config.php如下配置项:
    $lang = "en_US.utf8";
    $htpassword_cmd = "/usr/bin/htpasswd";
    $svn_cmd = "/usr/bin/svn";
    $svnadmin_cmd = "/usr/bin/svnadmin --config-dir /home/svn/svnconfig";

    $svn_config_dir  = "/home/svn/svnconfig";
    $svn_repos_loc  =      "/home/svn/project/repos";
    $svn_passwd_file =      "/home/svn/project/repos/conf/authz";
    $svn_access_file =      "/home/svn/project/repos/conf/passwd";

    $smtp_server = "smtp.163.com";
    $dsn  = "mysqli://root:roothzsx@localhost/svnmanager";

    $admin_name  = "admin";
    $admin_temp_password = "admin";


    17、SVNManager配置完毕,重启服务:

    sudo service apache2 restart
    sudo service mysql restart


    18、进行一次访问:http://svn-ip/svnmanager/  会提示创建SVNManager数据表,刷新页面,出现登录页面。
    svn-ip 是我配置机器的IP地址。需要注意的是,这里使用admin admin登录。
    但是这个密码是一次性的,只能管理其他用户。所以要立刻增加一个管理员用户。

    19、退出admin,当使用刚刚建立的管理员帐户再登录的时候。菜单就不一样了。

    20、但是此时,如果操作Create a new Repository,实际上在服务器上是没有生成的。
    编辑Change User Privileges of a Repository,会报错。


    这里主要是SVNManager没有权限,我们要给SVNManager分配权限。
    sudo chown -R www-data:svn /home/svn/project  再操作Create a new Repository就正常了。

  • 相关阅读:
    题目1009:二叉搜索树
    腾讯云API 生成Authentication Header加密字符串 C#代码示例
    《神经网络与深度学习》
    《神经网络与深度学习》第一章 使用神经网络来识别手写数字(三)- 用Python代码实现
    Rust语言的多线程编程
    C# DataTable的Select()方法不支持 != 判断
    《神经网络与深度学习》第一章 使用神经网络来识别手写数字(二)- 用梯度下降来训练学习
    C# 对多个文件进行zip压缩
    《神经网络与深度学习》:第一章 使用神经网络来识别手写数字(一)
    谷歌浏览器如何查看或获取Cookie字符串
  • 原文地址:https://www.cnblogs.com/zzugyl/p/3688796.html
Copyright © 2011-2022 走看看