linux上nginx+apache 搭建 svn服務器

衆所周知,nginx目前是不支持svn的,而且因爲機房網絡只開了80和22(ssh)端口,因此這時候就無法單獨在服務器上搭建apache+svn 。因此就產生了 nginx + apache + svn的需求,具體作法是將外網經過80端口進來的請求到達nginx以後轉發到apache上,而後進行svn操做。具體的安裝及詳細的配置這裏不一一贅述了 網上有不少解決方案。主要說一下,nginx作反向代理到apache的配置及常常容易出現的權限不足問題。html

首先經過iptables打開一個本機的8080端口做爲apache端口,因爲機房網絡禁用了8080端口,因此這時候請求是不能經過8080端口到達服務器的,可是能夠經過nginx的80端口到達nginx,這時候再在本機轉發給apache的8080端口就能夠了,具體nginx配置文件以下nginx

server {
 listen 80;
 server_name yourdomain;
 location / {
  root html/svn;
  index index.html index.htm;
  proxy_pass http://127.0.0.1:8080;
 }
}apache

其他的ngixn、apache、svn配置按常規配,這時候不須要在svn裏配置用戶密碼及訪問規則了,由於是經過apache過來的請求,這時候只要在apache裏配置好用戶密碼及訪問規則文件就能夠了。服務器

其他省略1萬字。網絡

 

接下來,在配置徹底正確的狀況下,仍是會常常會出現各類各樣的權限問題,好比能夠下載更新svn,可是不能提交上傳。只要出現這樣的權限問題說明了,確定在某個地方的權限配置仍是存在錯誤的地方。通常會出如今這2個地方。dom

1  首先,倉庫的存放目錄,若是放在 /usr/local ...    等目錄下,是不能夠的,應該將倉庫目錄放在 /var/* 目錄下,好比 /var/www/reposssh

2 在目錄放正確的狀況下,仍是會出現上傳權限不夠的狀況是什麼緣由呢?這時候看看 apache配置文件裏的用戶和組 都是  apahce     而 /var/www/repos 的用戶和組是非apache的用戶,問題就出在這裏。由於nginx把請求轉發給apache以後,apahce將請求交給svn,這時候svn的用戶是誰啊?是apache    ,因此只要將/var/www/repos的用戶和組改成 apache:apache 便可,問題基本解決。svn

 

其他的種種問題網上基本都有解決方案,因此只寫這點關鍵部分吧。若是在查了N多資料仍是解決不了 nginx + apache + svn 搭建過程當中遇到的問題,請聯繫我!代理

相關文章
相關標籤/搜索