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就正常了。

 

 


免責聲明!

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



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