大多數狀況下咱們使用github託管,特別是私庫免費之後,可是github被黑也會有宕機的時候,那怎麼辦呀,就是喜歡用git呀,特別是微信小程序的官方編輯器用svn時代碼顏色不更改呀(不知道版本更新後是否支持),都不知道改了哪行~?這個時候咱們能夠考慮在私有服務器搭建git服務端。git
目前經過yum -y install git
安裝的git版本爲 1.8.3.1。github
可是官方git倉庫的最新版目前是2.9.5shell
想要安裝最新版的git只能下載壓縮的源碼包安裝。小程序
# 查看原來是否有git的相關包 rpm -qa|grep git # 可能的結果爲 git-1.8.3.1-20.el7.x86_64 # 刪除git包 rpm -e perl-Git rpm -e git # 安裝依賴 yum install curl-devel expat-devel openssl-devel zlib-devel # 下載2.9.5版本壓縮包 soft爲自建目錄 cd /usr/local/soft wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz # 解壓 tar -xzvf git-2.9.5.tar.gz # 編譯安裝 cd git-2.9.5 make prefix=/usr/local all make prefix=/usr/local install
當前可經過 ./git --version
查看微信小程序
配置環境變量緩存
vi /etc/profile
在最後加入export PATH=/usr/local/soft/git-2.9.5:$PATH
,安全
vi /etc/profile i 最後加入export PATH=/usr/local/soft/git-2.9.5:$PATH Esc :wq # 生效環境變量 source /etc/profile
至此安裝結束,而後就能夠愉快的處處使用啦~bash
# 建立用戶git useradd git # 修改用戶git的密碼(要求>8個字符)輸入兩遍新密碼 passwd git
經過cd /home && ls -al
能夠看見用戶已經建立成功服務器
日常在使用別人的輪子時都是直接使用git clone [https url]
到本地,可是咱們本身的項目管理時,還可使用ssh的方式。這兩種方式的區別在於https的pull和push時須要輸入密碼,使用ssh的須要先配置和添加好SSH key就不用每次操做輸入密碼啦~微信
服務端建立倉庫示例
su git mkdir sunflowercoder-blog.git cd sunflowercoder-blog.git git init --bare
能夠看見在/home/git/sunflowercoder-blog.git目錄下已經初始化了一個空的git項目
沒安裝git客戶端的,自行先去官網下載安裝。
當前的狀況下,已是可使用http訪問啦。
客戶端使用http示例
# 克隆項目 git clone git@[服務端ip地址]:/home/git/sunflowercoder-blog.git
輸入git用戶的密碼後,等待傳輸結束便可。
建立README.md,上傳到服務器,並查看日誌。
cd sunflowercoder-blog # 建立README.md touch README.md # 提交到緩存 git commit -m "初始化README.md" # 上傳服務端 git push origin master # 等待傳輸完成 查看日誌 git log
使用ssh訪問稍稍麻煩一點,須要先生成ssh公鑰。
git config --global user.name "[用戶名]" git config --global user.email "[郵箱]" git config --list --global
能夠看見已經設置的全局變量:
ssh-keygen -t rsa -C "[郵箱]"
一直按回車 Enter,結束後,在提示的C盤的用戶目錄下。
能夠看見.ssh/id_rsa.pub爲咱們須要的公鑰,id_rsa是密鑰,不能告訴任何人哦
默認/etc/ssh/sshd_config
中的RSA認證是打開的
RSAAuthentication yes
默認的RSA認證文件爲.ssh/authorized_keys
,如在用戶目錄下不存在須要本身建立
su git cd ~ mkdir .ssh touch .ssh/authorized_keys # 默認的目錄權限爲drwxrwxr-x,文件的權限爲-rw-rw-r-- ,安全起見可下降等級 chmod 700 .ssh chmod 600 .ssh/authorized_keys
能夠手動打開客戶端 .ssh/id_rsa.pub 複製到服務端 .ssh/authorized_keys中,Esc :wq
保存退出。
也可使用
ssh git@[服務端地址] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
至此咱們就能夠愉快的使用ssh訪問啦,不須要密碼驗證。clone時也不須要,以下圖,上面的爲已配置ssh的,下面的爲取消配置的
由於前面配置ssh訪問,因此當前的git帳戶是能夠經過ssh訪問服務器的。
爲了安全起見,禁止客戶端經過shell遠程登陸服務器。切換用戶git,在根目錄下建立git-shell-commands
注意:該目錄爲git shell須要的,否則會報
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
修改/etc/passwd文件
# 切換root su root # 編輯文件 vi /etc/passwd i # 找到git開始的 git:x:1000:1000::/home/git:/bin/bash # 更改成 git:x:1000:1000::/home/git:/bin/git-shell Esc :wq
此時咱們就不用擔憂客戶端經過shell登陸,只容許使用git-shell進行管理git的倉庫。
注意:這種方式適用於開發者較少的狀況,每次增長或刪除用戶時都必須登陸到服務器上去,並且還缺乏必要的權限管理,由於用戶對全部在/home/git下的git項目都擁有讀寫權限。當團隊成員人數達到成百上千時可使用gitosis或者gitolite管理,好像還有自動權限管理的功能~
? 更多好文歡迎關注個人公衆號~