Git初步配置 ubuntu服務器 windows客戶端 虛擬機

最近自己配置了一下Git,雖然網上相關的內容滿天飛(ps:大多都差不多,很多都是直接轉載,說的也比較亂),但是我還是碰到了很多問題,這裏我就把我配置的步驟分享一下,遇到的問題也說一下,新手之間相互學習吧
 

環境:
ubuntu做服務器,windows做客戶端,是在windows上跑的虛擬機,裏面運行的Ubuntu
 
步驟:
1.(在ubuntu系統上)

sudo apt-get install operssh-server openssh-client [這兩個軟件是用做兩個系統間通信用的,如果不安裝的話,就連接不上服務器端了]
sudo apt-get install git-core [這個是git]


 

 

2.(在ubuntu系統上)

sudo useradd -m git [這個是添加一個用戶)]
sudo passwd git [這個是爲這個用戶設置密碼,輸入命令,回車,會提示你輸入密碼,ps:ubuntu輸入密碼的時候光標是不會做任何相應的反應的,新手可能會認爲自己沒有輸入]


 

[上面這兩步的目的是爲了服務器端管理將來的git工程。我們知道linux系統都有一個root用戶,也就是最高級的用戶,擁有最高權限,由於root用戶比較特殊,權限高,在是用中可能會誤操作別的用戶的內容或系統的一些文件,所以我們linux系統一般都會有一個日常使用的用戶,一般不會登陸root用戶,日常用戶是爲了日常操作使用的,所以我們這個地方又創建了一個用戶,用戶名是git,專門用來處理git相關事務。這樣可以更有條理的工作,要是所有的東西都在日常用戶或是root用戶下,那麼工作目錄很亂也可能導致一些操作影響到其他的內容]

sudo mkdir /home/git/repositories [這個地方是在剛纔我們創建的git的home目錄創建一個文件夾,用來保存將來我們的git項目,ps:我們創建一個用戶後,系統會在/home/目錄下自動創建一個文件夾,那就是這個用戶的home目錄]
sudo chown git:git /home/git/repositories [這個地方是對剛纔創建的文件夾設置它的所有者]
sudo chmod 755 /home/git/repositories [這個地方是設置文件夾的權限,也就是讀寫執行對於自己所有者的用戶,組內的用戶,其他用戶應該有的權限]
git config --global user.name "myname" [這個地方是向git指定一個用戶名,這是因爲git要運行,必須要有一個用戶名和對應的郵箱,下面是添加郵箱,myname就是你指定的用戶名,這個可以隨意起]
git config --global user.email [email protected] [這個地方就是指定一個對應的郵箱,隨便寫一個自己的郵箱就行了]


 

 

3.(在ubuntu系統上)

sudo apt-get install python-setuptools [這個地方是安裝python,因爲接下來我們需要用python進行編譯我們的軟件]
cd /tmp [這個地方是到臨時目錄,因爲tmp目錄下需要的權限比較低,操作方便,一些臨時的操作有時候都會在tmp目錄下]
git clone https://github.com/res0nat0r/gitosis.git [這個地方是從github網站把gitosis的源碼拿下來,gitosis是我們接下來要用的軟件]
cd gitosis [執行完上面後,在當前目錄下會有一個gitosis文件,就是剛剛下載下來的源碼]
sudo python setup.py install [這個地方就是安裝gitosis]


 

 

4.(在ubuntu系統上)

cd /home/git/repositories [進入到我們剛纔創建的倉庫目錄]
mkdir project.git [創建一個項目的git文件夾,以後項目的代碼等東西都會提交到這個文件夾裏面,名稱一般是以git結尾]
cd project.git [進入到這個文件夾]
git init --bare [這裏是初始化這個文件夾成一個git倉庫,這是一個空的倉庫,裏面什麼都沒有現在,可能會有一些自動生成的配置文件等]



 
現在我們在ubuntu服務器上安裝了必要的軟件,也配置好了服務器,下面就是操作客戶端,安裝相應的軟件並配置,令客戶端能與服務器連接起來

 

5.(在windows系統上)
在google搜索“git for windows”,能夠找到這個http://msysgit.github.io/,下載並安裝。這個是windows上的git客戶端

在windows上安裝沒有太多要說的,有一個地方,安裝過程中,有一個“configuring the line ending conversions",這個是配置你的文件是按那種格式換行,我們知道windows下換行是\r\n兩個符號表示,linux下是\n一個符號表示,所以在windows和linux間傳遞數據會有這個問題。程序默認的可能是”checkout windows-style, commit unix-stye line endings",表示程序會做一些自動轉換,我們選“checkout as-is, commit as-is",就是不做任何變化。

 

6.(在windows系統上)
我們可以在系統的任意地方右擊,選擇“Git Bash“,然後就會打開一個終端,這個時候我們可以用ssh連接一下ubuntu,看看能不能連得上。

ssh [email protected] [這個地方git就是ubunt系統上的git用戶,後面的ip就是ubuntu系統的ip,你需要ubuntu系統運行着,並且查看其具體ip,這裏就表示我們以git的身份登錄ubuntu系統]


 

如果成功,會提示你輸入密碼,輸入後,就可以登錄到服務器了,這就表示可以正常連接。

但是在windows下,登錄虛擬機(我用的是vmware)下的ubuntu可能需要一些配置
VMware網絡設置採用的NAT方式
Virtual Network Editor->選擇NAT->NAT Setting->PortForwarding->Add
Host Port: 22
Virtual Machine IP address:192.168.100.100(IP可以在虛擬機內查到記錄下來,表示你要映射到哪個IP)
Virtualmachine port 22

 

可能遇到的問題
ssh: connect to host github.com port 22: Bad file number
有這麼幾個問題會導致這個錯誤
a.Ubuntu服務器可能沒有安裝ssh-server或是沒有啓動服務
    在Ubuntu上運行ssh127.0.0.1如果出現
    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進行安裝
b.Windows的22端口沒有開啓。在防火牆內開啓或是關閉防火牆
c.Linux的22端口沒有開啓。在linux下開啓或是關閉防火牆
一般情況下是第一個原因導致的,就是你在ubuntu系統上沒有安裝ssh和其相關服務,或是沒開啓ssh服務。因爲默認ubuntu是不安裝ssh的

如果連接服務器成功的話,那就開始生成你的當前系統的密鑰吧。密鑰的作用就是服務器端用來判斷和區分各個客戶端的一個憑證,它是根據你的系統生成的一個獨一無二的一串字符,你把保存這個字符的文件發送到服務器端,git就可以根據這個來判斷是那個客戶端在提交代碼或是下載代碼,這個客戶端有沒有權限做這些操作,沒有的話就不提供相應的功能。其實也就是你電腦的一個id

生成密鑰還是在你打開的Git Bash,運行命令

ssh-keygen -t rsa


 

然後回車,系統會做一些提示,全部回車同意就行,最後會生成一個保存密鑰的文件,看一下生成保存的位置。在windows上一般位置是保存在c:/Users/(你當前用戶名)/.ssh目錄下,有一個id_rsa(私人密鑰,保存好) 和 id_rsa.pub(公共密鑰,要發送給服務器,用來辨別你的身份)。你可以打開看一下這兩個文件,裏面就是一堆字符。把id_rsa.pub拷貝到服務器上。

 

7.(在ubuntu系統上)

sudo -H -u git gitosis-init < id_dsa.pub [這個地方就是用剛纔在windows上生成的密鑰對gitosis初始化,也可以不加後面的pub,需要自己手動設置,另外再講]
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update [這個地方就是更改我們原來創建倉庫的文件夾下面,由於上面的初始化,會產生一個gitosis-admin的文件夾,把裏面的hooks/post-update文件夾屬性改一下]



 

8.(在windows系統上)
我們找到一個文件夾,在裏面右擊,選擇“git bash”,然後運行

git clone [email protected]:/home/git/repositories/gitosis-admin.git [這個裏面git clone是git的命令,用來從服務器上把一個工程完全的拷貝下來。後面是表示通過git用戶從ip爲192.168.100.100服務器的/home/git/repositories/目錄下,把gitosis-admin.git拷貝下來]



上面是把安裝gitosis時的系統默認的一個用來管理其它git的工程clone了下來,你同樣可以把後面的工程名字換一下把剛纔創建的project.git項目clone下來了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章