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配置信息以及配置訪問路徑。

  當初配置的時候遇到的問題挺多的,配好之后卻想不起來有哪些了,奇怪了,先寫到這了,想起來再補吧。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM