Git服務器搭建--ssh/http

 

 

  • 測試環境
  1. Windows 7 Ultimate, 64-bit 6.1.7601, Service Pack 1(實體機,虛擬機VMware的宿主機)
  2. VMware® Workstation 7.1.4 build-385536
  3. Fedora 16 x86_64(Git服務器,是上學時候安裝的虛擬機,已經整整8年了,老了唉)
  4. Windows 10 v1511 x64(實體機,測試外網鏈接git服務器)
  • 測試軟件
  1. Git(自行編譯/下載)
  2. Apache(自行編譯/下載)
  3. gitweb(自行編譯/下載)
  • HTTP淺析

   有興趣的同窗能夠去研究下《HTTP權威指南》,這本書不算薄(手動滑稽)。php

   其實不單是HTTP協議,全部網絡協議均可以被歸納爲python

   「爲了傳送指定的數據,網絡中發送數據的一端要和接受數據的一端約定一個相同的數據格式,這個數據格式就是所謂的協議」。nginx

   從廣義上來說,全部人均可以制定協議,只是市面上你們一塊兒用的就那麼幾個而已,因此HTTP也一樣沒那麼神祕。git

  」超文本傳輸​​協議(HTTP)是用於傳輸諸如HTML的超媒體文檔的應用層協議。它被設計用於Web瀏覽器和Web服務器之間的通訊,但它也能夠用於其餘目的。 HTTP遵循經典的客戶端-服務端模型,客戶端打開一個鏈接以發出請求,而後等待它收到服務器端響應。 HTTP是無狀態協議,意味着服務器不會在兩個請求之間保留任何數據(狀態)。雖然一般基於TCP / IP層,但能夠在任何可靠的傳輸層上使用; 也就是說,一個不會靜默丟失消息的協議,如UDP。「github

   HTTP在大部分人眼裏的用途就是在Web瀏覽器中輸入一個URL(網站地址),而後Web瀏覽器中就會呈現出一個五彩繽紛的世界(網頁),因此很大一部分就出現了思惟定勢,認爲HTTP就是用來作網站的協議,然而這種認知是很是錯誤的,事實上HTML只是搭載HTTP服務器傳輸給客戶機的一種文檔而已,HTML能夠由相似php、python、perl等語言動態生成,固然也能夠是提早編輯好的HTML文檔,HTML傳輸到客戶機以後,大量的工做都是由Web瀏覽器去作,Web瀏覽器會去解析HTML文檔,而後以圖形、文字或視頻的形式在瀏覽器中經行渲染輸出,豐富信息,以達到友好的人機交互。web

  然而事實上,你能夠用HTTP能夠去傳送任何你想要的數據,只要發送/接收端有能處理這些數據的方法(程序),這就是爲何sample.git明明是git創建的一個文件夾,卻能夠包含到URL中(http://www.web-site.com/sample.git),git客戶端能夠將此URL設爲遠程庫,從而在此庫上進行一系列的git操做(clone、commit等),由於git服務端有cgi腳本,經過perl-cgi解析sample.git目錄中的git信息,將git信息解釋爲HTML文檔,最後再把HTML文檔發送給客戶端,就能夠經過Web瀏覽器去查看或管理git庫,而客戶端的git程序會將URL解析爲一個相似本地路徑(雖然不是,可是意思同樣),路徑裏包含了全部git信息,要什麼數據客戶端都會向git服務端請求,而後git服務端將所須要代碼等一併傳輸到git客戶端(即下載),因此git客戶端就能夠依據URL進行git的克隆、提交等操做。apache

  git自身也提供網頁化服務功能,依賴輕型http服務程序,管理員就能夠輕鬆作出一個git的web站點,只是若是做爲web形式長期訪問的話,用apache或者nginx搭建一個比較好。vim

  • SSH服務端

  git的SSH服務器搭建比較簡單,就再也不贅述,搭建過程當中只須要注意兩點:確保SSH服務正常運行,防火牆將SSH(端口通常爲22)設爲信任,剩下的就按照官方文檔配置就行。瀏覽器

  •  HTTP服務端
  1. 配置監聽端口
    [root@Fedora ~]# vim /etc/httpd/conf/httpd.conf

    找到「Listen」塊,配置tomcat

    Listen 8080

    由於個人80端口被nginx佔用了,因此用了8080,注意tomcat可能將8080佔用,這時候你的機器上就要配置一個未被佔用的端口爲apache監聽端口。

  2. 模塊及擴展腳本配置
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule cgi_module modules/mod_cgi.so

    若是上訴三個模塊被註釋掉的話,就去掉註釋,放開模塊。

    Include /etc/httpd/conf.d/gitweb.conf

    在httpd.conf腳本最後加入擴展的配置腳本

  3. 擴展腳本
    [root@Fedora ~]# cd /etc/httpd/conf.d
    /etc/httpd/conf.d文件夾中存放的是apache的擴展腳本,若是已經安裝git和gitweb,裏面應該有一個git.conf腳本,是安裝git和gitweb時自動生成的
    Alias /git /var/www/git
    
    <Directory /var/www/git>
      Options +ExecCGI
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
    </Directory>

    可是咱們如今要本身搭建一個git服務器,因此就本身自定義一個gitweb.conf腳本,內容以下

    Alias /gitweb /home/git/gitweb
    
    <Directory /home/git/gitweb>
      Options +ExecCGI
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
    </Directory>

    大體和git.conf同樣,不同的地方是HTTP索引變爲由/git變爲/gitweb,索引指向的目錄變爲/home/git/gitweb,其中"git"爲專門爲Git服務端設置的用戶名,"gitweb"是存放git庫的文件夾,怎麼建用戶、及git建庫,請自行從萬能的網絡或者書籍獲取。

  4. 重啓服務
    [root@Fedora ~]# systemctl restart httpd.servic
  5. 設置cgi腳本
    $ cp /var/www/git/gitweb.cgi /home/git/gitweb/gitweb.cgi
    $ cp -r /var/www/git/static /home/git/gitweb/static
  6. Web瀏覽Git的http服務

     

  • 疑難雜症
  1. 服務器本地Web瀏覽器能夠訪問HTTP,可是客戶機沒法訪問
    [root@Fedora ~]# setup

    將HTTPS和HTTP設爲信任,保存關閉。

    而後修改/etc/sysconfig/iptables

    [root@Fedora ~]# vim /etc/sysconfig/iptables

     將8080端口放開

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

    而後重啓防火牆IP端口規則

    [root@Fedora ~]# systemctl restart iptables.service

    而後http服務就正式對外開放了。

  2. HTTP能夠ping通,可是無訪問權限
    [root@Fedora ~]# usermod -a -G git apache

    確保 apache用戶(在httpd.conf中配置的用戶)具備訪問 gitweb指定代碼庫的權限,好比, /home/git/gitweb 屬於git用戶和git組,因此將git添加到apache用戶組中,以保證apache對/home/git/gitweb的權限最大化,仍是權限不夠,那麼就直接將git用戶的目錄權限所有放開(哈哈)

    [root@Fedora ~]# chmod 777 /home/git

     

  3.  連接

    git官方教程

    廖雪峯官方教程

    git-book

相關文章
相關標籤/搜索