2021-05-12 14:32:11
linux 安裝subversion並設定nginx+apache
操作方法
-
01
最近想在ubuntu伺服器上建立一個svn伺服器,但目前伺服器採用的是nginx伺服器,由於nginx現在暫時不支援subversion,所以只能安裝apache整合subversion,然後通過nginx proxy給apache來存取程式碼倉庫。
1、安裝apache
$ sudo apt-get install apache2
安裝完畢後,可能無法啟動,因為nginx預設情況應該是佔用了80埠,而apache預設也應該使用的是80埠,所以會發生埠衝突。
解決辦法,修改apache的監聽埠
$ sudo vi /etc/apache2/ports.conf
將80埠修改8099,或者其他,然後在重新啟動apache
$ sudo /etc/init.d/apache2 restart
2、安裝subversion
subversion已經包含在ubuntu main倉庫中,所以,要安裝 Subversion,您只需要簡單的執行:
$ sudo apt-get install subversion$ sudo apt-get install libapache2-svn
3、建立 SVN 倉庫
許多位置都可以放置 Subversion 檔案倉庫,
其中兩個最常用的是:/usr/local/svn 以及 /home/svn。
為了在下面的描述中簡單明瞭,我們假設您的 Subversion 檔案倉庫放在 /home/svn,並且你的專案名稱是簡單的「myproject」。
同樣的,也有許多常用的方式設定檔案倉庫的存取許可權。通常的情況下,您應該建立一個名為「Subversion」的使用者組,該組是SVN倉庫所在的目錄的擁有者。
3.1 增加組,並且把使用者加到組裡:
sudo addgroup subversionsudo usermod -G subversion -a www-data
3.2 現在執行下面的命令:
$ sudo mkdir /home/svn$ cd /home/svn$ sudo mkdir myproject$ sudo chown -R root:subversion myproject
3.3 下面的命令用於建立 SVN 檔案倉庫:$ sudo svnadmin create /home/svn/myproject
3.4 賦予組成員對所有新加入檔案倉庫的檔案擁有相應的許可權:$ sudo chmod -R g+rws myproject
4、Apache和Subversion的整合
檢視/etc/apache2/mods-enabled/dav_svn.load檔案,
有mod_dav_svn.so這個動態庫說明apache已經載入了Subversion的存取控制模組。
如果沒有,手動新增。
要通過 WebDAV 協定存取 SVN 檔案倉庫,您必須設定您的 Apache 2 Web 伺服器。
您必須加入下面的程式碼片段到您的 /etc/apache2/mods-available/dav_svn.conf中:
Location /svn 意思是Subversion版本可用的URL是http://域名或IP/svn
DAV SVN 告訴Apache是哪個模組響應哪個URL的請求,在這裡是Subversion模組
SVNParentPath /home/svn 告訴Subversion需要檢視的版本庫在/home/svn之下。
如果不希望為每個單獨的專案都進行單獨的設定,可以把所有專案都存放在統一的資源庫目錄,使用SVNParentPath指令來指定存放所有專案的路徑。
否則使用SVNPath
SVNPath 單版本庫時使用此項指明版本庫的路徑,但在多版本庫中不要使用此項
AuthType Basic 認證型別為基本認證,就是使用者名稱和密碼
AuthName "Subversion repository" 認證名稱,將在瀏覽器介面彈出一個對話方塊,標題為
Subversion repository
AuthUserFile /home/svn/passwd 指定使用的認證密碼檔案,即存取版本庫使用者的檔案,用apache的htpasswd命令生成
AuthzSVNAccessFile /home/svn/authz.conf 設定存取版本庫許可權的檔案,可選Require valid-user 要求驗證使用者,即不能匿名存取。如果沒有該語句,則只能第一個使用者可以存取新建庫
此外,SVNIndexXSLT 「/svnindex.xsl」 使用它可以在用瀏覽器時更好看
如果需要使用者每次登入時都進行使用者密碼驗證,請將與兩行註釋掉。
當您新增了上面的內容,您必須重新起動 Apache 2 Web 伺服器,請輸入下面的命令:sudo /etc/init.d/apache2 restart
接下來,您需要建立 /home/svn/passwd 檔案,該檔案包含了使用者授權的詳細資訊。要新增使用者,您可以執行下面的命令:sudo htpasswd -c /home/svn/passwd user_name
它會提示您輸入密碼,當您輸入了密碼,該使用者就建立了。「-c」選項表示建立新的/home/svn/passwd檔案,所以user_name所指的使用者將是檔案中唯一的使用者。如果要新增其他使用者,則去掉「-c」選項即可:sudo htpasswd /home/svn/passwd other_user_name
您可以通過下面的命令來存取檔案倉庫:$ svn co http://hostname/svn/myproject myproject --username user_name它會提示您輸入密碼。您必須輸入您使用 htpasswd 設定的密碼。當通過驗證,專案的檔案就被簽出了。
5、設定nginx
sudo vi /alidata/server/nginx/conf/nginx.conf
加入下面設定:
server { listen 80; server_name www.svn.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8009; } }
儲存退出。
6.重啟nginx
nginx -s reload
7.開啟瀏覽器,輸入http://www.domain.com/svn,就會彈出提示輸入使用者名稱,密碼的對話方塊,使用者名稱為第4步中htpasswd -c /home/svn/passwd user_name的user_name,密碼為該user_name的密碼,如果沒有彈出什麼錯誤,說明安裝成功。
8.用小烏龜svn來上傳下載程式碼。
vi /home/svn/myproject/conf/svnserve.conf,將[general]下面anon-access = read auth-access = write password-db = passwd authz-db = authz前面的###去掉。
9.啟動建立好的版本庫服務。
svnserve -d -r /home/svn/myproject
10.我桌面上寫了個tcpServer的程式碼。將tcpServer通過小烏龜上傳到svn上,報了個警告:post-commit FS processing had error 'attempt to write a readonly database'.解決方法:chown www-data:www-data /home/svn/myproject/db/rep-cache.db
11.按照這樣的步驟走下來,通過SVN使用者端,用該使用者名稱和密碼上傳程式碼到svn伺服器上,或者下載程式碼到伺服器上是能夠成功的。支援多使用者上傳下載的功能,還在探索設定中。 - End
相關文章