• ubuntu-14.04服务器版下搭建apache2+svn+svnmanager服务


    本人linux小白,新进公司,被分配此任务,好崩溃,只能一边百度linux命令一边完成任务。从装系统开始一直到搭建好服务,也快一周了,足见水平之差,以下博文基本靠网络,再加上自己的摸索,直至搭建成功。搭建好之后,记录下来方便查阅。废话少说,开始工作了。。。

    一、搭建apache2和SVN

    1、安装apache2和svn server

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

      完成以上安装,可以直接访问apache的主页,如http://localhost/

    2、创建subversion用户组,并把apache运行用户www-data加入到subversion用户组中

      sudo addgroup subversion  
      sudo usermod -G subversion -a www-data

    3、创建svn版本库

      sudo mkdir /srv/svn
      sudo svnadmin create /srv/svn/tone_src

      此时可以在/srv/svn/tone_src目录下看到svn版本库的所有文件夹以及配置文件,如:conf、dav、db、format、hooks、locks、README.txt。其svn的配置文件主要都在conf中,其下有authz 、hooks-env.tmpl、passwd、svnserve.conf这四个文件。以后再说其作用。

    4、配置svn

      1、编辑svnserve.conf

        #匿名用户不可读
        anon-access = none
        #权限用户可写
        auth-access = write
        #密码文件为passwd
        password-db = passwd
        #权限文件为authz
        authz-db = authz

      2、编辑authz 、passwd

      这两个文件前者是配置权限,后者是保存用户名密码,为了管理方便(会有改动),把这两个文件放到/srv/svn下进行管理,分别对应:authz、passwd文件。编辑authz文件:

          [groups]          ---组权限,一共三个组,每组后面是用户,用,分开
          .net = bsit
          java = chenrl, tianke
          M701_GROUP = testuser1
          [bsit_m701_project:/]
          jianping.zhao = rw
          [rsu_project:/]
          bsit = rw
          [db:/]
          jianping.zhao = rw

    5、将svn配置到apache中通过http web方式访问

      在apache的路径下,有如下文件:

    bsit@bsit:/etc/apache2$ ls -a
    .             conf-available  envvars         mods-enabled     sites-enabled
    ..            conf-enabled    magic           ports.conf
    apache2.conf  dav_svn.passwd  mods-available  sites-available
    

      可以在apache2.conf里配置svn信息,即配置此文件里的location信息。但是也可以配置在mods-available文件夹下的dav_svn.conf文件,配置如下所示:

     <Location /svn>
            DAV svn
            #SVNPath /srv/svn/tone_src
            SVNParentPath /srv/svn                    
            SVNAdvertiseV2Protocol Off
            AuthType Basic
            AuthName "Subversion Repository"
            AuthUserFile /srv/svn/passwd
            AuthzSVNAccessFile /srv/svn/authz
            Require valid-user
    </Location>  

      SVNPath是项目库地址,如果只有一个项目库,则直接可以用SVNPath。如果有多个项目库,则可直接使用SVNParentPath,让新建的项目库放在/srv/svn/下。AuthUserFile是存放用户文件。AuthzSVNAccessFile是用户/组权限文件。Require valid-user是登录svn要做验证。备注:此配置文件是告诉apache关于svn的访问路径已经相关配置文件,这里注意存放的根目录。重启apache服务器,sudo /etc/init.d/apache2 restart,然后就可以通过http://localhost/svn进行远程访问

    启动apache服务:
        /etc/init.d/apache2 start or sudo /etc/init.d/apache2 start
    重启apache服务:
        /etc/init.d/apache2 restart or sudo /etc/init.d/apache2 restart
    停止apache服务:
        /etc/init.d/apache2 stop or sudo /etc/init.d/apache2 stop
    

    如看到这样的情况,说明配置成功。此时就可以在本地使用svn客户端了。

    二、SVNManager安装配置 

    1、安装mysql

    apt-get install mysql-server mysql-client

    2、创建SVNManager数据库

    mysql -u root -p
    mysql> CREATE DATABASE svnmanager;
    mysql> GRANT all privileges on svnmanager.* to 'svnmanager'@'localhost' identified by '123456';
    mysql> FLUSH PRIVILEGES;
    mysql> exit

      可能出现的异常情况:

    有的帖子说,缺省SVNManager使用的MySQL的root密码是root1234,但是我这里有错,错误如下:
    mysql -u root -proot1234
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    可以以管理员进去,再修改密码:
    mysql -u root -p
    mysql> update user set password=PASSWORD('新密码') where User='root';
    mysql> flush privileges;
    mysql> quit

    3、安装PHP_5

    apt-get install php5 php5-mysql php5-sqlite php-pear

    4、安装Pear模块:VersionControl_SVN 

    pear install VersionControl_SVN-0.3.4

      若不指定版本安装:pear install -f -o VersionControl_SVN,在页面进行赋权操作的时候有问题,可能是软件bug。

    5、下载SVNManager

    wget http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.09.tar.gz

      将文件解压至/var/www/html下,并加个快捷方式,网上好多贴子是直接把SVNManager解压到/var/www下,我曾经也试着解压到这里,但是不知道哪里配置不对,最后在访问svnmanager的时候报404,其实很早之前应该进行测试:http://IP/index.html,可以打开,则项目应该放在html下。

    tar zxvf svnmanager-1.09.tar.gz -C /var/www/html
    ln -s /var/www/html/svnmanager-1.09 /var/www/html/svnmanager 
    mkdir -p /srv/svn/svnconfig  
    chown -R www-data:subversion  /srv/svn   
    chmod -R g+rws /srv/svn 

    6、配置SVNManager

    cp /var/www/html/svnmanager/config.php.linux /var/www/html/svnmanager/config.php
    vi /var/www/htmlsvnmanager/config.php
    
    <?php 
    $lang                           =       "en_US.UTF-8";
    //Shell command's
    $htpassword_cmd                 =       "/usr/bin/htpasswd";
    $svn_cmd                        =       "/usr/bin/svn";
    $svnadmin_cmd                   =       "/usr/bin/svnadmin --config-dir /tmp";
    
    //Subversion locations
    $svn_config_dir                 =       "/tmp";
    $svn_repos_loc                  =       "/srv/svn/";
    $svn_passwd_file                =       "/srv/svn/passwd";
    $svn_access_file                =       "/srv/svn/authz";
    
    $svn_trash_loc                  =       "";
    $svnserve_user_file		=	"";
    $smtp_server    		= 	"smtp.163.com";
    $dsn    			=       "mysqli://svnmanager:123456@localhost/svnmanager";
    $admin_name             	=       "admin";
    $admin_temp_password    	=       "admin";
    ?>

    7、使SVNManager的web页面支持中文路径

    vi /usr/share/php/VersionControl/SVN.php
    将下行
    exec("{$this->prepend_cmd}$cmd 2>&1", $out, $ret_var);
    改为:
    exec("LANG=zh_CN.UTF-8; {$this->prepend_cmd}$cmd 2>&1", $out, $ret_var);
    

    8、SVNManager配置完毕,重启服务

    sudo /etc/init.d/apache2 restart
    

     至此,就配置完成了。进行一次访问:http://svn-ip/svnmanager/ ,会提示创建SVNManager数据表,刷新页面,出现登录页面,如下图所示。

    SVNManager初始管理员帐号和密码:admin/admin(创建一个管理员账户后该帐号失效)。
    首次在创建管理员的时候,即新增用户的时候,底下的绿色密码也是admin,管理员增加后,用管理员新增用户,则该密码是管理员的密码。
    

      svnmanager具体使用手册,网上有很多。这么多配置,其实主要修改两个配置文件,/etc/apache2/mods-available/dav_svn.conf和/var/www/html/svnmanager/config.php这两个文件。前者主要配置svn项目库地址,权限文件地址,用户密码文件。后者主要管理svn配置信息以及配置访问路径。

      当初配置的时候遇到的问题挺多的,配好之后却想不起来有哪些了,奇怪了,先写到这了,想起来再补吧。

      

  • 相关阅读:
    linux下C++程序开发范例
    a list of compiler books — 汗牛充栋的编译器参考资料
    中国象棋将帅问题
    CPU利用率问题:操作系统原理和API
    算法性能分析
    MySQL时间分组查询
    在MongoDB的MapReduce上踩过的坑
    C++双缓冲多线程分析大文件词频
    MongoDB进行MapReduce的数据类型
    得到内网域管理员的5种常见方法<转>
  • 原文地址:https://www.cnblogs.com/chenrunlin/p/5028537.html
Copyright © 2020-2023  润新知