讓我來(lái)教你如何搭建屬于自己的git服務(wù)器

準(zhǔn)備:

一臺(tái)Linux服務(wù)器(本文示例使用的是阿里云CentOS 7.0)

一些做客戶端的你可能不知道的姿勢(shì):

Linux用戶鹉动、組题造、權(quán)限問(wèn)題以及命令的用法
SSH協(xié)議相關(guān)

其實(shí)歌径,這些姿勢(shì)在《鳥(niǎo)哥的Linux私房菜》一書(shū)中有非常詳盡的解釋详羡,非常推薦胆筒。但是通讀此書(shū)對(duì)我們來(lái)說(shuō)時(shí)間成本略高。而且如果不是每天都要用真的很難記住邻吞。所以,本文只簡(jiǎn)單介紹這些你在搭建git服務(wù)器的過(guò)程中可能需要了解的姿勢(shì)葫男。

閑話少說(shuō)抱冷,書(shū)歸正傳。
我們默認(rèn)你有一臺(tái)Linux服務(wù)器梢褐,并且知道root帳號(hào)和密碼旺遮,以下所有命令中需要替換的部分我會(huì)用中文占為,真正的Linux命令是不可能有中文的盈咳。#->代表命令提示符耿眉。

首先,我們需要使用終端鏈接到服務(wù)器:

#-> ssh 你的服務(wù)器IP

之后鱼响,服務(wù)器會(huì)提示你輸入賬號(hào)和密碼鸣剪。此處需要輸入root的賬號(hào)和密碼,因?yàn)槲覀円诜?wù)器上安裝git以及創(chuàng)建相關(guān)用戶,需要用到root權(quán)限西傀。

相關(guān)姿勢(shì)一斤寇,ssh命令、協(xié)議:
ssh命令表示連接到服務(wù)器拥褂,可以以域名為參數(shù)娘锁,或者以服務(wù)器IP為參數(shù)。如果服務(wù)器ssh協(xié)議監(jiān)聽(tīng)端口不是默認(rèn)的22需要加上-p選項(xiàng)后邊輸入要連接服務(wù)器的端口號(hào)饺鹃。
ssh協(xié)議參見(jiàn)維基百科:https://zh.wikipedia.org/wiki/Secure_Shell

登錄成功后莫秆,我們首先要安裝git,有的服務(wù)器默認(rèn)是已經(jīng)安裝的:

#-> yum install git

yum這里就不詳細(xì)介紹了悔详,它是一款安裝軟件的工具镊屎,會(huì)自動(dòng)下載依賴包,免得我們自己到處找茄螃。并且自動(dòng)安裝軟件缝驳。

安裝完畢,我們需要先創(chuàng)建用戶組归苍,創(chuàng)建用戶組的目的其實(shí)是為了控制某一類用戶的權(quán)限用狱。假設(shè)我們需要為設(shè)計(jì)部搭建一個(gè)git服務(wù)器,那我們此處需要輸入命令:

#-> groupadd 組名稱

創(chuàng)建組完成后我們需要?jiǎng)?chuàng)建幾個(gè)不同的用戶:

#-> user add -M 用戶名稱1
#-> user add -M 用戶名稱2
... ...

創(chuàng)建好用戶之后我們還需要把用戶添加到之前創(chuàng)建的組中:

#-> usermod -G 組名稱 用戶名稱1
#-> usermod -G 組名稱 用戶名稱2
... ...

useradd是添加系統(tǒng)用戶的命令拼弃,如果不加-M的選項(xiàng)則創(chuàng)建用戶的時(shí)候會(huì)自動(dòng)在/home目錄下創(chuàng)建一個(gè)和用戶名相同的目錄夏伊,這個(gè)目錄通常被稱作該用戶的家目錄,該用戶在該目錄下?lián)碛凶x寫(xiě)權(quán)限吻氧。權(quán)限問(wèn)題會(huì)在后邊進(jìn)一步介紹溺忧。在此,我們的目的是搭建git服務(wù)器盯孙,并不想給用戶除了git訪問(wèn)以外其他的權(quán)限鲁森,所以這里使用-M選項(xiàng)讓系統(tǒng)不給該用戶創(chuàng)建自己的家目錄。
usermod是用戶管理命令振惰,-G表示將用戶添加到某個(gè)分組刀森。

為了保留秘鑰登錄的驗(yàn)證信息,所以我們?cè)?home目錄下創(chuàng)建一個(gè)公共家目錄:

#-> midair 組目錄名稱

我們還需要禁用掉其他用戶ssh到服務(wù)器报账,只留給用戶git相關(guān)權(quán)限研底,并且修改用戶的家目錄:

#-> vim /etc/passwd

找到所創(chuàng)建用戶的這一行:

用戶名稱:x:1000:1000::/home/用戶名稱:/bin/bash

將/bin/bash替換成git-shell的路徑(我的服務(wù)器是:/usr/bin/git-shell,可以通過(guò)#-> which git-shell來(lái)查看git-shell所在路徑)
將/home/用戶名稱替換成/home/組目錄名稱

我們?cè)俅芜M(jìn)入公共的家目錄:

#-> cd /home/組目錄名稱

創(chuàng)建我們想要的git倉(cāng)庫(kù):

#-> mkdir 新倉(cāng)庫(kù)名稱.git

進(jìn)入該目錄:

#-> cd 新倉(cāng)庫(kù)名稱.git

使用git命令來(lái)創(chuàng)建一個(gè)裸倉(cāng)庫(kù):

#-> git --bare unit

至此透罢,我們已經(jīng)在服務(wù)器上完成了一個(gè)git倉(cāng)庫(kù)的創(chuàng)建榜晦。我們可以在客戶端clone該倉(cāng)庫(kù):

#-> git clone 剛剛創(chuàng)建的用戶名稱@你的服務(wù)器IP:新倉(cāng)庫(kù)名稱.git

雖然已經(jīng)clone出倉(cāng)庫(kù),但是這時(shí)候我們是不能push的羽圃,因?yàn)樾聞?chuàng)建的用戶此時(shí)并沒(méi)有寫(xiě)權(quán)限乾胶,我們需要回到服務(wù)器:

#-> cd /home

修改組目錄所屬的分組:

#-> chgrp -R 組目錄名稱

-R表示遞歸修改所有子目錄所屬分組
然后修改組目錄的權(quán)限:

#-> chmod -R 775 組目錄名稱

這里-R同樣表示遞歸修改權(quán)限
775表示權(quán)限,Linux下文件/文件夾權(quán)限分為三種,文件擁有者權(quán)限识窿、文件所屬組成員權(quán)限斩郎、以及其他人的權(quán)限。775三位分別對(duì)應(yīng)這三種權(quán)限喻频。每一位中缩宜,4表示可讀,2表示可寫(xiě)甥温,1表示可執(zhí)行(文件夾的話表示可進(jìn)入)锻煌,最后相加的和表示權(quán)限集合。這里我們?cè)O(shè)置為組目錄以及子目錄的權(quán)限為775表示所擁有者可讀姻蚓、可寫(xiě)宋梧、可執(zhí)行;所屬組成員可讀狰挡、可寫(xiě)捂龄、可執(zhí)行;其他人可讀加叁、可執(zhí)行跺讯,但是不可寫(xiě)。
此時(shí)我們?cè)俅位氐娇蛻舳搜撑涂梢詐ush倉(cāng)庫(kù)的修改到服務(wù)器了。

感謝閱讀局荚,歡迎大家和我一起來(lái)討論任何有趣的事情超凳。E-mail:salo@eitsh.com
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耀态,隨后出現(xiàn)的幾起案子轮傍,更是在濱河造成了極大的恐慌,老刑警劉巖首装,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件创夜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡仙逻,警方通過(guò)查閱死者的電腦和手機(jī)驰吓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)系奉,“玉大人檬贰,你說(shuō)我怎么就攤上這事∪绷粒” “怎么了翁涤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我葵礼,道長(zhǎng)号阿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任鸳粉,我火速辦了婚禮扔涧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赁严。我一直安慰自己扰柠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布疼约。 她就那樣靜靜地躺著卤档,像睡著了一般。 火紅的嫁衣襯著肌膚如雪程剥。 梳的紋絲不亂的頭發(fā)上劝枣,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音织鲸,去河邊找鬼舔腾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搂擦,可吹牛的內(nèi)容都是我干的稳诚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瀑踢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扳还!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起橱夭,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤氨距,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后棘劣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體俏让,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年茬暇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了首昔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糙俗,死狀恐怖沙廉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臼节,我是刑警寧澤撬陵,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布珊皿,位于F島的核電站,受9級(jí)特大地震影響巨税,放射性物質(zhì)發(fā)生泄漏蟋定。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一草添、第九天 我趴在偏房一處隱蔽的房頂上張望驶兜。 院中可真熱鬧,春花似錦远寸、人聲如沸抄淑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肆资。三九已至,卻和暖如春灶芝,著一層夾襖步出監(jiān)牢的瞬間郑原,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工夜涕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犯犁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓女器,卻偏偏與公主長(zhǎng)得像酸役,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驾胆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理涣澡,服務(wù)發(fā)現(xiàn),斷路器俏拱,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • gitosis: 把所有用戶的公鑰保存在 authorized_keys 文件的做法,只能湊和一陣子吼句,當(dāng)用戶數(shù)量達(dá)...
    曉蜻蜓閱讀 5,775評(píng)論 2 2
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評(píng)論 9 163
  • 文僅獻(xiàn)給在愛(ài)情里默默奉獻(xiàn)锅必,在生活里拼命掙扎的男生,以及珍愛(ài)自己男友或老公的姑娘們惕艳。渣男和撈女請(qǐng)自行繞道搞隐,謝謝合作。...
    票兒閱讀 668評(píng)論 0 2
  • 曾經(jīng)远搪,想過(guò)千萬(wàn)種開(kāi)頭劣纲,卻沒(méi)想到過(guò)這樣的結(jié)尾。曾幾何時(shí)谁鳍,我相信我遇見(jiàn)的只會(huì)是細(xì)水長(zhǎng)流般的感情癞季,溫潤(rùn)如玉的男子劫瞳,但...
    小固執(zhí)的大龍貓閱讀 429評(píng)論 0 0