起因
自己會有練手的不敢公開的項目,就自己搭建個服務器放自己的渣代碼了。
在經歷了連不上服務器、沒有訪問權限、沒法提交以后,我打通了任督二脈。
我這個git服務器適合條件:1、就那么幾個人小項目,不是幾百人的大項目;2、不需要什么惡心的代碼權限的(這玩意我搞不了)。
經過
首先聲明我下面的操作都是在root用戶下執行的。
放行git端口
- 防火牆添加放行規則,將3690端口放行
安裝git
- 安裝git必備工具包:
yum -y groupinstall "Development Tools"
- 安裝git依賴包:
yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
- 接下來是下載git,先去找最新版,放個官方的紅帽下載鏈接:Index of /pub/software/scm/git/,找到最新版的tar.gz結尾的源碼包(我現在是2019-03-21,最新版是2.21.0)。
我安裝git的目錄是/usr/local/tools/git/
進入git目錄:mkdir -p /usr/local/tools/git
cd /usr/local/tools/git/
,下載最新版git:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz
- 解壓git:
tar -zvxf git-2.21.0.tar.gz
我要安裝在/usr/local/tools/git/git-2.21.0
目錄下,因此我把安裝包重命名成git-2.21.0-installer了:mv git-2.21.0 git-2.21.0-installer
- 開始編譯安裝包:
cd git-2.21.0-installer
./configure --prefix=/usr/local/tools/git/git-2.21.0
(這兒把prefix后面的目錄改成你要安裝的目錄就行了)make && make install
- 加入環境變量:
vim /etc/profile
,在后面追加GIT_HOME=/usr/local/tools/git/git-2.21.0
(就是上面prefix后面的那個目錄),$PATH=$GIT_HOME/bin:$PATH
export GIT_HOME PATH
這三句,然后ESC
:wq
保存退出,執行source /etc/profile
,使得我們的配置生效。 - 驗證git是否安裝成功:
git --version
,出現版本信息就對了。
搭建git服務器
首先說明下倉庫可以放在其他非用戶家目錄下,也就是說/home/下面原來有的目錄都不能用。
-
新建git倉庫目錄:
mkdir -p /usr/local/repository/git
; -
新建訪問用戶:
useradd -M zhangsan
,useradd -M lisi
,useradd -M wangwu
, 這樣子用-M添加用戶不會生成/home/zahngsan
家目錄; -
新建訪問用戶組:
groupadd git
;(創建git用戶組,你也可以改成其他的,比如:groupadd developer
或者其他用戶組反正你記得就行了); -
給用戶設置密碼:
passwd zhangsan
,passwd lisi
,passwd wangwu
,分別給他三個設置登陸密碼,拉取代碼和提交代碼需要提供密碼; -
添加用戶到用戶組:
usermod -G git zhangsan
,usermod -G git lisi
,usermod -G git wangwu
; -
變更git倉庫的所有者到任何人:
chown -R nobody:nobody /usr/local/repository/git
,賦予nobody就是把權限給了所有人; -
修改git倉庫的讀寫權限:
chmod -R 777 /usr/local/repository/git
,這樣子git倉庫就能讀寫了,否則會報錯拒絕提交的; -
變更git倉庫的所有人為git用戶組:
chgrp -R git /usr/local/repository/git
, 這是修改權限給git用戶組的。 -
驗證文件權限:
cd /usr/local/repository/
ll
,看下git文件夾前綴那些是不是變成了下圖這樣子(主要看drwxrwxrwx(讀寫權限) nobody(可訪問用戶任何人) git(可訪問用戶組git) )。
-
修改用戶shell登陸權限:
vim /etc/passwd
,找到最后頭的zhangsan、lisi、wangwu,把冒號后面的/bin/bash
改成usr/local/tools/git/git-2.21.0/bin/git-shell
,就是你的git安裝目錄下的/bin/git-shell。
-
添加用戶的SSH公鑰:創建公鑰目錄
mkdir -p /home/git/.ssh/
,創建密鑰存放文件vim authorized_keys
將從zahngsan、lisi、wangwu的電腦的C:/users/用戶名/.ssh
目錄下找到id_rsa.pub
,一行一個全都復制到該文件中;
(PS:如果張三沒有id_rsa.pub文件的話,那就用cmd執行git config --global user.name "zahngsan"
git config --global user.email "張三的能接收郵件的郵箱"
,然后執行ssh-keygen
按三下回車,就有那個文件了) -
其實都到現在為止,我們已經搭建好了git服務器,接下來進入裝逼時刻。
驗證git服務器
- 創建裸倉庫:
git init --bare /usr/local/repository/git/myGit.git
,git服務器初始化倉庫的時候一定要加上--bare,否則你的倉庫不能推送代碼; - 打開cmd切換到指定目錄,輸入:
git clone zhangsan@服務器IP:/usr/local/repository/git/myGit.git
,按照提示輸入密碼就能clone項目; - 然后增加個readme.md或者其他文件,在cmd執行
git add readme.md
,git commit -m"新增readme文件"
,git push
,就看執行push以后是否成功就行了。
結尾
你搭建出來了嗎?