-
安裝相關軟件
Apache
yum install httpd httpd-devel
Subversion
yum install mod_dav_svn subversion
SSL
yum install mod_ssl openssl
創建版本庫
#mkdir /var/svn
#cd /var/svn
#svnadmin create myapp
#chown -R apache.apache myapp
#chcon -R -t httpd_sys_content_t myapp //selinux相關相似的,我添加了另一個版本庫myapp2
修改配置文件/etc/httpd/conf.d/subversion.conf,添加如下內容
<Location /repos>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/svn/passwd //用戶文件
AuthzSVNAccessFile /var/svn/authz //用戶權限控制文件
Require valid-user
</Location>此處需要注意添加/var/svn/passwd文件的相關權限,否則可能出想權限錯誤。相關日志文件為/var/log/httpd/error_log 遇到問題要查看錯誤日志。
用戶文件passwd的內容只能通過htpasswd命令添加
如添加用戶leon
#htpasswd -c /var/svn/passwd leon //-c 表示新建一個文件,以后就不需要加了
相似的我添加了其他用戶hailong,gao,wang
用戶權限控制文件authz
[groups]
myapp = leon,hailong //myapp項目有兩個成員leon和hailong
myapp2 = wang, gao
[myapp:/]
@myapp = rw //myapp組擁有myapp項目的讀寫權限,其他人無權限
[myapp2:/]
@myapp2 = rw這樣就做到權限控制。
可能遇到的問題
1.權限問題
通過查看錯誤日志,添加相關權限。重點注意SeLinux引起的權限問題,可以暫時關閉SeLinux,方法:setenforce 0,SeLinux的管理方法參考CSDN網站http://blog.csdn.net/haiong0707/article/details/813763 - 防火牆問題
關閉防火牆或者打開相關端口 -
通過上面的配置,SVN服務器通過HTTP訪問基本就沒有問題了,接着配置HTTPS訪問
-
#cd /etc/pki/tls/private
-
#openssl genrsa -out my.key 1024
-
#openssl req -new -key my.key -out my.csr
-
#cd /etc/pki/tls/certs
-
#openssl x509 -req -days 365 -in /etc/pki/tls/private/my.csr -signkey /etc/pki/tls/private/my.key -out my.crt
以上步驟必須在相關文件夾下產生所需的文件,保證輸入命令正確,保證產生文件所在文件夾正確,否則后面將可能發生錯誤修改/etc/httpd/conf.d/ssl.conf文件
-
SSLCertificateFile /etc/pki/tls/certs/my.crt
-
SSLCertificateKeyFile /etc/pki/tls/private/my.key
修改/etc/httpd/conf/httpd.conf文件-
<Directory />
-
Options FollowSymLinks
-
AllowOverride None
-
SSLRequireSSL //添加此行
-
</Directory>
重啟httpd-
#service httpd restart
如此SVN就只可以通過HTTPS訪問了,並且能夠對多個項目分配人員和權限。可能遇到的問題
1.SVN開啟HTTPS加密后,所有的WEB訪問都變成HTTPS,例如,localhost將無法訪問,需要訪問https://localhost,這個應該是可以在https.conf文件中配置區分的,暫時不做處理,故建議此服務器不再當作WEB服務器。
----------------------------------------------------------------------------------------------------------------
localhost需要https的解決方法
不在httpd.conf添加 SSLRequireSSL ,添加到subversion.conf
-
<Location /repos>
-
DAV svn
-
SVNParentPath /var/svn
-
AuthType Basic
-
AuthName "Authorization Realm"
-
AuthUserFile /var/svn/passwd //用戶文件
-
AuthzSVNAccessFile /var/svn/authz //用戶權限控制文件
-
Require valid-user
-
SSLRequireSSL //需要https加密訪問
-
</Location>
這樣,只有/repos目錄需要https加密訪問,不影響httpd做web服務器
轉載自:http://blog.csdn.net/haiong0707/article/details/8259235
Linux 下svn恢復到某一版本經常由於坑爹的需求,功能要切回到之前的某一個版本。有兩種方法可以實現:方法1: 用svn merge1) 先 svn up,保證更新到最新的版本,如20;2) 然后用 svn log ,查看歷史修改,找出要恢復的版本,如10 。如果想要更詳細的了解情況,可以使用svndiff -r 10:20 [文件或目錄];3) 回滾到版本號10:svnmerge -r 20:10 [文件或目錄],注意版本號之間的順序,這個叫反向合並;4) 查看當前工作版本中的文件,如test.cpp和版本號10中文件的差別:svn diff -r 10 test.cpp, 有差別則手動改之;5) 若無差別,則提交:svn ci -m“back to r 10,xxxxx” [文件或目錄]。這時svn庫中會生成新的版本,如21。方法2: 用svn up前2步如方法1,然后直接 svn up -r 10。當前的工作版本就是版本10了。但是注意,這時svn庫中會並不會生成新的版本,下次在本地svn up之后,還是會回到之前的版本。
-