今天講的內容:
- 實戰:使用SVN+apache搭建一個版本控制服務器
每天: 10:00
晚上:21:00
服務端:xuegod63.cn IP:192.168.10.63
服務概述:
SVN(subversion)是近年來崛起的版本管理工具,是CVS的接班人。目前,絕大多數開源軟件都使用svn作為代碼版本管理軟件。作為一個運維人員安裝和配置SVN服務器和客戶端是必須要掌握的內容。
版本控制:
常見版本控制軟件:
Cvs 由於之前CVS編碼的問題,現在大多數軟件開發公司都使用SVN替代了CVS
Svn
git 分布式版本控制器
SVN服務器運行模式:
模式1:svn服務器單獨運行 監聽: 3690端口 訪問: svn://IP
模式2: svn 服務器+ apache : 80 端口 訪問: http://IP 今天要講的
實戰:搭建svn 服務器+ apache 實現版本控制服務器
安裝: svn服務器,apache, mod_dav_svn 軟件包
運行機制:
實戰:RHEL6 上安裝配置 svn server+apache
#安裝svn服務器和 apache服務器, mod_dav_svn模塊
# yum install subversion httpd mod_dav_svn -y
mod_dav_svn模塊 : apache http 服務器的插件,可以讓版本庫通過http協議,在網站上展現。
創建版本庫目錄,並修改相應權限。
[root@xuegod63 ~]# mkdir /var/repos
創建兩個項目倉庫。 xuegod.cn和svn2
[root@xuegod63 ~]# svnadmin create /var/repos/xuegod.cn
[root@xuegod63 ~]# svnadmin create /var/repos/svn2
[root@xuegod63 ~]# ls /var/repos/xuegod.cn
conf db format hooks locks README.txt
[root@xuegod63 conf]#ls /var/repos/xuegod.cn/conf
authz passwd svnserve.conf
#注:用戶權限配置我們使用apache的,這里暫時不用svn自帶
啟動:SVN服務器
[svn@xuegod63 conf]# svnserve -d -r /var/repos/
-d表示以daemon方式(后台運行)運行
-r /var/repos指定根目錄是/var/repos
[svn@xuegod63 conf]# ps -axu | grep svn
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 6982 0.0 0.0 161476 1924 pts/2 S 18:09 0:00 su - svn
svn 6983 0.0 0.0 108392 1864 pts/2 S 18:09 0:00 -bash
svn 7262 0.0 0.0 182760 1056 ? Ss 18:26 0:00 svnserve -d -r /var/repos/
[svn@xuegod63 conf]# netstat -antup | grep 3690
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 7262/svnserve
總結:svn服務器搭建
1、安裝: yum install subversion httpd mod_dav_svn
2、創建倉庫存儲代碼: svnadmin create /var/repos/xuegod.cn
3、啟動svn服務器:svnserve -d -r /var/repos/
APACHE部分
第一步,查看apache支持subversion兩個動態庫有沒有安裝成功。
查看:
[root@xuegod63 conf]# vim /etc/httpd/conf.d/subversion.conf #看到下面配置文件中兩個模塊相關信息,說明安裝成功。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
配置apache通過mod_dav_svn模塊訪問SVN服務器
[root@xuegod63 ~]# vim /etc/httpd/conf.d/subversion.conf
<Location /svn>
DAV svn
SVNParentPath /var/repos
AuthType Basic
AuthName " SVN server of xuegod!"
AuthUserFile /home/svn/passwd
AuthzSVNAccessFile /home/svn/auth
Require valid-user
</Location>
注釋:
<Location /svn> #apache的虛擬目錄。后期通過鏈接:http://192.168.1.63/svn 來訪問兩個倉庫:xuegod和svn2
DAV svn
SVNParentPath /var/repos #存放兩個倉庫:xuegod和svn2的真實目錄
AuthType Basic
AuthName " SVN server of xuegod!" #apache認證時彈出的消息
AuthUserFile /home/svn/passwd # passwd存儲用戶名和密碼
AuthzSVNAccessFile /home/svn/auth #存放用戶的權限
Require valid-user
</Location>
建立本地訪問控制文件/home/svn/passwd,#后期通過httpd服務器訪問svn時,會使用這個文件中的用戶信息驗證用戶和密碼。
[root@xuegod63 ~]# mkdir /home/svn
[root@xuegod63 ~]# htpasswd -c /home/svn/passwd tube
# -c create, 創建/home/svn/passwd文件。會提示你輸入密碼,默認是MD5加密
New password: 123456
Re-type new password:
Adding password for user tube
第二次添加用戶是否需要加 -c 參數: 要1 : 不要:2
[root@xuegod63 ~]# htpasswd /home/svn/passwd cd #后期再創建時,就不需要加-c參數,否則,會把之前添加到/home/svn/passwd中信息,全部覆蓋。
New password: 123456
Re-type new password:123456
Adding password for user tree
查看用戶名和密碼:
[root@xuegod63 ~]# cat /home/svn/passwd
cd:sjplr6rMtpN3E
tube:gZEcmDnMwFsMc
注:tube和cd兩個用戶的明文密碼都一樣,但是加完密碼以后是不一樣。
加密時: (密碼+用戶名 ) md5 -》 ll7IH3i5G0JfU
第四步,建立本地項目版本庫,權限控制文件。
達到以下目標:
用戶 倉庫 權限
tube xuegod.cn,svn2 rw
cd xuegod.cn rw
[root@xuegod63 ~]# vim /home/svn/auth #寫入以下內容
[/]
tube = rw
[xuegod.cn:/]
cd = rw
解釋:
[/] # 這個表示在所有倉庫的根目錄下
tube = rw # 表示tube用戶對所有倉庫根目錄下的軟件版本庫有rm權限
[xuegod.cn:/] #這表示,倉庫xuegod.cn的根目錄下的訪問權限
cd= rw # cd用戶對xuegod.cn倉庫具有讀和寫權限
給目錄權限
[root@xuegod63 conf.d]# chmod 777 /var/repos/ -R
[root@xuegod63 ~]# service httpd restart
svn的訪問地址是: http://192.168.10.63/svn/xuegod.cn
總結:配置apache+svn
1、修改配置文件:vim /etc/httpd/conf.d/subversion.conf 讓apache可以支持svn
2、創建SVN用戶和密碼文件: /home/svn/passwd
3、創建SVN權限管理文件:/home/svn/auth
SVN客戶端使用說明
subversion windows客戶端TortoiseSVN配置:
http://tortoisesvn.net/about.zh.html
注: 32位的軟件只能安裝在32位操作系統上。 我是64位,所以在安裝在64上。
新一個文件夾:www.xuegod.cn
取出版本為0的源代碼:
上傳代碼:
隨意保存一個網頁,把網頁源代碼復制到目錄www.xuegod.cn中,然后提交第一個網站代碼:
在Linux下測試客戶端:
[root@xuegod64 ~]# svn checkout http://192.168.10.63/svn/xuegod.cn xuegod.cn
認證領域: <http://192.168.10.63:80> SVN server of xuegod!
“root”的密碼:
認證領域: <http://192.168.10.63:80> SVN server of xuegod!
用戶名: tube
“tube”的密碼:
-----------------------------------------------------------------------
注意! 你的密碼,對於認證域:
<http://192.168.10.63:80> SVN server of xuegod!
只能明文保存在磁盤上! 如果可能的話,請考慮配置你的系統,讓 Subversion
可以保存加密后的密碼。請參閱文檔以獲得詳細信息。
你可以通過在“/root/.subversion/servers”中設置選項“store-plaintext-passwords”為“yes”或“no”,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)?no
A xuegod.cn/salt主機地址密碼.txt
A xuegod.cn/新建虛機需知.txt
取出版本 1。