CentOS服務器的掛載磁盤,請參考 從Windows遷移SVN數據到CentOS7(一)
從Window服務器遷移SVN數據到CentOS,請參考 從Windows遷移SVN數據到CentOS7(二)
SVN相比Git來說擁有更加細粒度的權限控制,話不多說,我們馬上接下來的配置。
三、創建、授權用戶
1.首先我們找到SVN版本庫下對應的配置文件 ~/conf/svnserve.conf,
vi /svn/Project20181022/conf/svnserve.conf
說明:對於授權用戶與未被授權用戶的訪問級別控制:read,write,none
我們修改對應位置如下(注意去掉#號,頂格縮進):
anon-access = none
auth-access = write
說明:password-db字段,爲配置密碼數據文件的保存位置,默認爲相對路徑,如果以/開頭則爲絕對路徑,如果SSL開啓的話,那麼就不會驗證該文件。
這裏我們不使用默認生成的“passwd”,用自己新建的文件代替(配置SSL會用到),該文件在接下來會被創建。
password-db = /svn/svn_http_passwd
說明:authz-db字段,爲用戶數據文件的保存位置,默認爲相對路徑,如果以/開頭則爲絕對路徑,如果未指定路徑,則無訪問控制。
這裏我們依舊不使用默認生成的“authz”,用自己新建的文件代替(配置SSL會用到),該文件在接下來會被創建。
authz-db = /svn/svn_authz
說明:realm 字段,此選項指定存儲庫的身份驗證域。 如果兩個存儲庫具有相同的身份驗證域,則它們應具有相同的密碼數據庫,反之亦然。 默認域是repository的uuid。
這裏如果項目符合上述要求的的話,需要去掉“#”號,配置兩個相同的身份驗證域,使配置生效,否則無需更改。
2.配置SSL
① 修改(沒有該文件則新增) vi /etc/httpd/conf.d/subversion.conf,修改配置如下(Tip爲說明,配置時請去掉)
<Location /svn>
DAV svn
SVNParentPath /svn
SVNListParentPath on
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /svn/svn_http_passwd Tip:這是ssl的用戶文件,等下創建
AuthzSVNAccessFile /svn/svn_authz Tip:這是鑑權文件,等下創建
Require valid-user
SSLRequireSSL
</Location>
② 創建httpd用戶 -這裏會創建上面提到的 /svn/svn_http_passwd 文件(執行後需要輸入用戶密碼)
htpasswd -c /svn/svn_http_passwd turbo #創建apache用戶和密碼文件,已有文件則把-c去掉
以後加用戶就直接使用下面代碼段
htpasswd /svn/svn_http_passwd user123 #user123爲你要添加的用戶名
③ 增加svn用戶權限文件 -這裏會創建上面提到的 /svn/svn_authz 文件
vi /svn/svn_authz
[groups]
ROOT = master # 用戶組,多個用戶用逗號隔開
UNITY = turbo
SERVER = server #master,server用戶此時並沒有創建,只是拎出來做一下演示
[Project20181022:/] # 設置xxx庫的權限
@ROOT = rw # ROOT組裏的用戶對根目錄有讀寫權限
[Project20181022:/Unity]
@UNITY = rw
[Project20181022:/Server]
@SERVER = rw
④ 生成本地證書,配製https
cd /etc/pki/tls/private
openssl genrsa -out svn.key 1024 #生成私鑰
openssl req -new -key svn.key -out svn.csr #生成證書
cd /etc/pki/tls/certs
openssl x509 -req -days 365 -in /etc/pki/tls/private/svn.csr -signkey /etc/pki/tls/private/svn.key -out svn.crt #簽名
⑤ 修改ssl配置文件:
vi /etc/httpd/conf.d/ssl.conf #修改下面的配置項(就是剛纔上面步驟創建的crt和key文件)
SSLCertificateFile /etc/pki/tls/certs/svn.crt
SSLCertificateKeyFile /etc/pki/tls/private/svn.key
⑥ 授予apache用戶組 對/svn目錄的 擁有者權限
chown -R apache:apache /svn/
⑦ 修改selinux權限,不然Apache只能訪問www目錄,其他地方的文件會訪問失敗:
chcon -R -t httpd_sys_rw_content_t /svn/
⑧ 打開防火牆端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
⑨ 啓動服務
svnserve -d -r /svn
service httpd start
⑩ 加入開機啓動項,如果之前不存在 rc.local,在創建該文件後需要執行: chmod +x /etc/rc.d/rc.local 賦予可執行權限
vi /etc/rc.d/rc.local #末尾增加以下配置
/usr/bin/svnserve -d -r /svn
/usr/sbin/service httpd start
好了,到這一步我們的SVN服務器就基本配置完成了,下一章節我們將驗證小烏龜的連接和整理一些踩坑記錄。
THE END