【Git】搭建Git 服务器
文章目錄
- 服務器操作
- 1. 安裝 git
- 2. 添加 git 賬戶
- 3. 創建證書 登錄
- 4. 在Git服務器上打開 RSA認證
- 5. 初始化Git倉庫 (在服務器 xx.xx.xx.xx 上創建裸倉庫)
- 6. 創建一個空倉庫之后,服務器上的Git倉庫通常都以.git結尾。然后,把倉庫所屬用戶改為git:
- 7. 當遠程倉庫發現有用戶執行了push操作,就會執行一個腳本post-receive(鉤子)。
- 8. 禁止 Shell 登錄
- 客戶端操作
- 1. 創建公鑰驗證
- 2. 克隆
- 遇到的問題
- 1. 客戶端執行的時候到Total ........卡住不執行了(提交文件過大),查了一些之后,,,兩種解決方案
- 2. 22 端口問題
業務需要,需要自己在服務器上搭建git倉庫, 硬著頭皮,就是干 , 內容有點長,但個人感覺還是有借鑒之處的,歡迎支持,分享
服務器ip: xx.xx.xx.xx
系統: Centos7
項目目錄: /var/www/html
倉庫版本管理目錄: /home/<用戶名>/gitrepo
服務器操作
1. 安裝 git
安裝git $ sudo yum install git -y 查看git 版本(檢查是否成功) # git --version git version 2.7.42. 添加 git 賬戶
有的操作系統上會在你安裝git時會同時幫你創建一個git用戶,但Ubuntu的需要我們手動來創建。這也非常簡單的,那我們就來手動創建一個git用戶:
$ sudo adduser git3. 創建證書 登錄
收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
如果沒有該文件創建它:
說明一下: 客戶端創建id_rsa.pub , 我會在 客戶端部分說明過程.
4. 在Git服務器上打開 RSA認證
# vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes # AuthorizedKeysFile <你的authorized_keys所在路徑> AuthorizedKeysFile /home/git/.ssh/authorized_keys5. 初始化Git倉庫 (在服務器 xx.xx.xx.xx 上創建裸倉庫)
裸倉庫是不儲存文件的, 裸(bare)倉庫里只存儲歷史和元信息(詳細格式),不會維護工作目錄。
什么是裸倉庫呢?
就是沒有工作目錄的倉庫, 不能執行有關git的任何命令,只記錄歷史提交信息,
只能通過clone它的倉庫對它進行push操作對它進行更新。
裸倉庫一般用來做多人代碼交換的中轉站,它只有這么些目錄:
branches config description HEAD hooks info objects refs
6. 創建一個空倉庫之后,服務器上的Git倉庫通常都以.git結尾。然后,把倉庫所屬用戶改為git:
# cd /home/<用戶名>/gitrepo# chown -R git:git web.git其實,這個時候我們可以在自己的客戶機上 克隆了,
git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.git web
但是,存在3種情況,多與權限 密碼 相關
chown git:git -R /home/<用戶名>/gitrepo
嚴格來說,其實Git并沒有所謂的服務器端和客戶端,這也是Git和SVN最大的一點不同。不管你在哪里創建了一個git倉庫,原理上它都可以充當一個git服務器,這取決于你的配置。深入了解就涉及到很多git的原理知識了,感趣興的同學可以自行去學習,當然,我也非常推薦你這樣去做。
7. 當遠程倉庫發現有用戶執行了push操作,就會執行一個腳本post-receive(鉤子)。
# cd /home/<用戶名>/gitrepo/web.git/hooks # vim post-receive #!/bin/bash git --work-tree=<實際需要同步的站點目錄> checkout -f例如: git --work-tree=/var/www/html/web checkout -f 修改post-receive為可執行文件(其實這就是一個腳本文件) # chmod +x post-receive注意:同時你還需要修改你的web站點目錄的權限,修改所屬用戶與用戶組為git,否則鉤子的權限可能會不足而導致執行失敗。(你也可以通過添加git用戶到相應的用戶組來解決問題)
# chown git:git -R /var/www/html/web # 修改所屬用戶
8. 禁止 Shell 登錄
Git 創建的用戶可以通過 ssh 連接到服務器,對服務器安全造成一定影響。所以禁止 Git 用戶 shell 登錄,只賦予其操作 Git 的相關權限就可以了。
# vim /etc/passwd 修改 git:x:1001:1001::/home/git:/bin/bash 為git:x:1001:1001::/home/git:<你的git-shell路徑>我的路徑是這樣的:git:x:1001:1001::/home/git:/usr/bin/git-shell 可以通過 find / |grep git-shell 查找git-shell路徑到這兒,服務器端相關的配置也就基本上ok了
客戶端操作
1. 創建公鑰驗證
配置之后,從本地更新代碼到服務器時,將不會再提示輸入密碼。
下面是Linux , Window 兩種操作系統的操作:
最后把 id_rsa.pub 中的內容 復制給 git服務端人員, 他將把你的公鑰貼到
/home/git/.ssh/authorized_keys
2. 克隆
git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.git web這樣, 一個Git服務器就搭建完成了, 感興趣的小伙伴可以分享/支持/評論
遇到的問題
1. 客戶端執行的時候到Total …卡住不執行了(提交文件過大),查了一些之后,兩種解決方案
1-1)
全局: # git config --global sendpack.sideband false
本地: # git config --local sendpack.sideband false
1-2)
# git config http.postBuffer 524288000
然而對我而言,都沒有用到
2. 22 端口問題
一般我們會修改服務器上默認端口,所以很容易出現下面的錯誤
$ git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.gitssh: connect to host <服務器IP> port 22: Connection refused fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists. 解決方案: $ git clone ssh://git@<服務器IP>:<端口號>/home/<用戶名>/gitrepo/web.git成功搞定,端口問題整了3個多小時, 查了很多, 唉,,強大的谷歌/百度所以說搜索技巧很重要~感謝這位同仁: https://www.bdelay.com/article/327感謝閱讀!
參考鏈接:
http://www.runoob.com/git/git-server.html
https://www.jianshu.com/p/a9c79489e3d3
總結
以上是生活随笔為你收集整理的【Git】搭建Git 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: laravel 中添加自定义辅助函数he
- 下一篇: MySQL导入/导出数据