




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、搭建GIT服務器組長:牛智萌組員:張秉楨、全海蘭、高英亮GitHub就是一個免費托管開源代碼的遠程倉庫。但是對于某些視源代碼如生命的商業公司來說,既不想公開源代碼,又舍不得給GitHub交保護費,那就只能自己搭建一臺Git服務器作為私有倉庫使用。 很多人都知道,Linus在1991年創建了開源的Linux,從此,Linux系統不斷發展,已經成為最大的服務器系統軟件了。 Linus雖然創建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢? 事實是,在2002年以前,世界各地的志愿者把源代碼文件通過diff的方式
2、發給Linus,然后由Linus本人通過手工方式合并代碼! 你也許會想,為什么Linus不把Linux代碼放到版本控制系統里呢?不是有CVS、SVN這些免費的版本控制系統嗎?因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。 不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續通過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿,于是Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家B
3、itMover公司出于人道主義精神,授權Linux社區免費使用這個版本控制系統。 安定團結的大好局面在2005年就被打破了,原因是Linux社區牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這么干的其實也不只他一個),被BitMover公司發現了(監控工作做得不錯!),于是BitMover公司怒了,要收回Linux社區的免費使用權。 Linus可以向BitMover公司道個歉,保證以后嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的: Linus花了兩周時間自己用C寫了一個分布式版本控制系統,這就是Git!一個月之內,Linux系統
4、的源碼已經由Git管理了!牛是怎么定義的呢?大家可以體會一下。 Git迅速成為最流行的分布式版本控制系統,尤其是2008年,GitHub網站上線了,它為開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。歷史就是這么偶然,如果不是當年BitMover公司威脅Linux社區,可能現在我們就沒有免費而超級好用的Git了。 如果只是在一個倉庫里管理文件歷史,Git和SVN真沒啥區別。為了保證你現在所學的Git物超所值,將來絕對不會后悔,同時為了打擊已經不幸學了SVN的童鞋,本章開始介紹Git的殺手級功能之一(注意是之一,也就是后面還有之二,之三):
5、遠程倉庫。 Git是分布式版本控制系統,同一個Git倉庫,可以分布到不同的機器上。怎么分布呢?最早,肯定只有一臺機器有一個原始版本庫,此后,別的機器可以“克隆”這個原始版本庫,而且每臺機器的版本庫其實都是一樣的,并沒有主次之分。 你肯定會想,至少需要兩臺機器才能玩遠程庫不是?但是我只有一臺電腦,怎么玩? 其實一臺電腦上也是可以克隆多個版本庫的,只要不在同一個目錄下。不過,現實生活中是不會有人這么傻的在一臺電腦上搞幾個遠程庫玩,因為一臺電腦上搞幾個遠程庫完全沒有意義,而且硬盤掛了會導致所有庫都掛掉,所以我也不告訴你在一臺電腦上怎么克隆多個倉庫。 實際情況往往是這樣,找一臺電腦充當服務器的角色,每
6、天24小時開機,其他每個人都從這個“服務器”倉庫克隆一份到自己的電腦上,并且各自把各自的提交推送到服務器倉庫里,也從服務器倉庫中拉取別人的提交。 完全可以自己搭建一臺運行Git的服務器,不過現階段,為了學Git先搭個服務器絕對是小題大作。好在這個世界上有個叫GitHub的神奇的網站,從名字就可以看出,這個網站就是提供Git倉庫托管服務的,所以,只要注冊一個GitHub賬號,就可以免費獲得Git遠程倉庫。搭建Git服務器需要準備一臺運行Linux的機器,強烈推薦用Ubuntu,這樣,通過幾條簡單的apt命令就可以完成安裝。下面正式開始安裝。環境:ubuntu做服務器,windows做客戶端,是在
7、windows上跑的虛擬機,里面運行的ubuntu步驟:第一步(在ubuntu系統上)1. sudo apt-get install openssh-server sudo apt-get install openssh-client這兩個軟件是用做兩個系統間通信的,如果不安裝的話,就連接不上服務器端了2. sudo apt-get install git-cote第二步(在ubuntu系統上)1. sudo useradd -m git這個是添加一個用戶2. sudo passwd git這個是為這個用戶設置密碼,輸入命令,回車,會提示你輸入密碼上面這兩步的目的是為了服務器端管理將來的git
8、工程。我們知道linux系統都有一個root用戶,也就是最高級的用戶,擁有最高權限,由于root用戶比較特殊,權限高,在實用中可能會誤操作別的用戶的內容或系統的一些文件,所以一般都會有一個日常使用的用戶,一般不會登陸root用戶,日常用戶是為了日常操作使用的,所以這個地方創建一個用戶,用戶名是git,專門用來處理git相關事務。這樣可以更有條理的工作,如果所有的東西都在日常用戶或root用戶下,那么工作目錄很亂,也可能導致一些操作影響到其他的內容。3. sudomkdir/home/git/repositories這個地方是在剛才我們創建的git的home目錄創建一個文件夾,用來保存將來我們的
9、git項目,我們創建一個用戶后,系統會在/home/目錄下自動創建一個文件夾,那就是這個用戶的home目錄4. sudochowngit:git/home/git/repositories這個地方是對剛才創建的文件夾設置它的所有者 5. sudochmod755/home/git/repositories這個地方是設置文件夾的權限,也就是讀寫執行對于自己所有者的用戶,組內的用戶,其他用戶應該有的權限 6. myname這個地方是向git指定一個用戶名,這是因為git要運行,必須要有一個用戶名和對應的郵箱,下面是添加郵箱,myname就是你指定的
10、用戶名,這個可以隨意起 7. gitconfig-globaluser.emailmyname這個地方就是指定一個對應的郵箱,隨便寫一個自己的郵箱就行了第三步(在ubuntu系統上)1. sudoapt-getinstallpython-setuptools這個地方是安裝python,因為接下來我們需要用python進行編譯我們的軟件 2. cd/tmp這個地方是到臨時目錄,因為tmp目錄下需要的權限比較低,操作方便,一些臨時的操作有時候都會在tmp目錄下 3. gitclone這個地方是從github網站把gitosis的源碼拿下來,gitosis是我們接下來要用的軟件 4. cdgitos
11、is執行完上面后,在當前目錄下會有一個gitosis文件,就是剛剛下載下來的源碼 5. sudopythonsetup.pyinstall這個地方就是安裝gitosis第四步(在ubuntu系統上)1. cd/home/git/repositories進入到我們剛才創建的倉庫目錄2. mkdirproject.git創建一個項目的git文件夾,以后項目的代碼等東西都會提交到這個文件夾里面,名稱一般是以git結尾 3. cdproject.git進入到這個文件夾 4. gitinit-bare這里是初始化這個文件夾成一個git倉庫,這是一個空的倉庫,里面什么都沒有現在,可能會有一些自動生成的配置
12、文件等第五步(在windows系統上)在google搜索“git for windows”,能夠找到這個http:/msysgit.github.io/,下載并安裝。這個是windows上的git客戶端 在windows上安裝沒有太多要說的,有一個地方,安裝過程中,有一個“configuring the line ending conversions,這個是配置你的文件是按那種格式換行,我們知道windows下換行是rn兩個符號表示,linux下是n一個符號表示,所以在windows和linux間傳遞數據會有這個問題。程序默認的可能是”checkout windows-style, commi
13、t unix-stye line endings,表示程序會做一些自動轉換,我們選“checkout as-is, commit as-is,就是不做任何變化。第六步(在windows系統上)我們可以在系統的任意地方右擊,選擇“Git Bash“,然后就會打開一個終端,這個時候我們可以用ssh連接一下ubuntu,看看能不能連得上。1. sshgit這個地方git就是ubuntu系統上的git用戶,后面的ip就是ubuntu系統的ip,你需要ubuntu系統運行著,并且查看其具體ip,這里就表示我們以git的身份登錄ubuntu系統如果成功,會提示你輸入密碼,輸入后,就可
14、以登錄到服務器了,這就表示可以正常連接。 但是在windows下,登錄虛擬機(我用的是vmware)下的ubuntu可能需要一些配置 VMware網絡設置采用的NAT方式 Virtual Network Editor-選擇NAT-NAT Setting-PortForwarding-Add Host Port: 22 Virtual Machine IP address:00(IP可以在虛擬機內查到記錄下來,表示你要映射到哪個IP) Virtualmachine port 22 可能遇到的問題 ssh: connect to host port 22: Bad fil
15、e number 有這么幾個問題會導致這個錯誤 a.Ubuntu服務器可能沒有安裝ssh-server或是沒有啟動服務 在Ubuntu上運行ssh如果出現 connectto host localhost port 22:Connection refused,那就表示沒安裝或是沒啟動。 運行 ps e| grep ssh,查看是否有sshd的進程。如果沒有那么就是server沒有啟動。 運行/etc/init.d/ssh start進行啟動server進程。如果提示沒有ssh。那么就是沒有安裝server 運行apt-get install openssh-server進行安
16、裝 b.Windows的22端口沒有開啟。在防火墻內開啟或是關閉防火墻 c.Linux的22端口沒有開啟。在linux下開啟或是關閉防火墻 一般情況下是第一個原因導致的,就是你在ubuntu系統上沒有安裝ssh和其相關服務,或是沒開啟ssh服務。因為默認ubuntu是不安裝ssh的 如果連接服務器成功的話,那就開始生成你的當前系統的密鑰吧。密鑰的作用就是服務器端用來判斷和區分各個客戶端的一個憑證,它是根據你的系統生成的一個獨一無二的一串字符,你把保存這個字符的文件發送到服務器端,git就可以根據這個來判斷是那個客戶端在提交代碼或是下載代碼,這個客戶端有沒有權限做這些操作,沒有的話就不提供相應的
17、功能。其實也就是你電腦的一個id 生成密鑰還是在你打開的Git Bash,運行命令ssh-keygen-trsa然后回車,系統會做一些提示,全部回車同意就行,最后會生成一個保存密鑰的文件,看一下生成保存的位置。在windows上一般位置是保存在c:/Users/(你當前用戶名)/.ssh目錄下,有一個id_rsa(私人密鑰,保存好) 和 id_rsa.pub(公共密鑰,要發送給服務器,用來辨別你的身份)。你可以打開看一下這兩個文件,里面就是一堆字符。把id_rsa.pub拷貝到服務器上。第七步(在ubuntu系統上)1. sudo-H-ugitgitosis-initid_dsa.pub這個地
18、方就是用剛才在windows上生成的密鑰對gitosis初始化,也可以不加后面的pub,需要自己手動設置,另外再講2. sudochmod755/home/git/repositories/gitosis-admin.git/hooks/post-update這個地方就是更改我們原來創建倉庫的文件夾下面,由于上面的初始化,會產生一個gitosis-admin的文件夾,把里面的hooks/post-update文件夾屬性改一下第八步(在windows系統上)1. gitclonegit00:/home/git/repositories/gitosis-admin.git這個里面gitclone是git的命令,用來從服務器上把一個工程完全的拷貝下來。后面是表示通過git用戶從ip為00服務器的/home/git/repositories/目錄下,把gitosis-admin.git拷貝下來上面是把安裝gitosis時的系統默認的一個用來管理其它git的工程clone了下來,你同樣可以把后面的工程名字換一下把剛才創建的project.git項目clone下來了。管理公鑰:如果團隊很小,把每個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_key
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畜牧資源利用與疫病防控責任協議
- 營銷渠道拓展合作合同內容
- 行政管理中員工行為的心理學分析題及答案
- 游戲行業游戲引擎優化方案
- 施工質檢規范試題及答案
- 行政管理心理學與員工心理契約的關聯研究試題及答案
- 2025關于餐廳轉讓合同的范本
- 2025年心理學學習方法試題及答案
- 2025年建筑工程考試的項目管理試題及答案
- 行政管理心理學實踐案例分析試題及答案
- 圍術期室性早搏處理
- 違反公務用車管理制度談心談話記錄內容
- 《心理健康教育》課件-關愛心靈擁抱陽光
- 辦理證件協議書
- PAC(流產后關愛)項目之流產與避孕培訓課件
- 腸道疾病的診療培訓課件
- 山東省施工現場監理表格目錄及格式匯編
- 山西煤炭運銷集團三元石窟煤業有限公司礦山礦產資源開發利用、地質環境保護與土地復墾方案
- 團隊項目任務完成進度跟進表模板
- 山東省應急管理普法知識競賽參考題庫-中(多選題)
- 色彩與服裝色彩搭配
評論
0/150
提交評論