本人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配置信息以及配置訪問路徑。
當初配置的時候遇到的問題挺多的,配好之后卻想不起來有哪些了,奇怪了,先寫到這了,想起來再補吧。
