Ubuntu上搭建git server筆記
1.安裝配置git服務(wù)器
安裝git: sudo apt-get install git-core
新加用戶git,該用戶將作為所有代碼倉庫和用戶權(quán)限的管理者:
sudo useradd -m git
sudo passwd git
建立一個(gè)git倉庫的存儲(chǔ)點(diǎn): sudo mkdir /home/repo
讓除了git以外的用戶對此目錄無任何權(quán)限:
sudo chown git:git /home/repo
sudo chmod 755 /home/repo
PS:此處要把git倉庫repo的屬性設(shè)置成755,不然在gitweb中一直無法找到工程
2.安裝配置gitosis
初始化一下服務(wù)器的git用戶,這一步其實(shí)是為了安裝gitosis做準(zhǔn)備。在任何一 臺(tái)機(jī)器上使用git,第一次必須要初始化一下:
git config –-global user.name “scorpio”
git config –-global user.email “zsw.scorpio@gmail.com”
安裝一下python的setup tool, 這個(gè)也是為了gitosis做準(zhǔn)備:
sudo apt-get install python-setuptools
獲得gitosis包:
cd /tmp
git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install
切換到git用戶下:
su git
默認(rèn)狀態(tài)下,gitosis會(huì)將git倉庫放在 git用戶的home下,所以我們做一個(gè)鏈接到/home/repo
ln -s /home/repo /home/git/repositories
再次返回到默認(rèn)用戶
$ exit
如果你將作為git服務(wù)器的管理員,那么在你的電 腦上生成ssh公鑰:
本地:ssh-keygen -t rsa
將公鑰拷貝到服務(wù)器的/tmp下:
本地:scp .ssh/id_rsa.pub git@xxoo.com:/tmp
回到git服務(wù)器上
sudo chmod a+r /tmp/id_rsa.pub
讓gitosis運(yùn)行起來:
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
gitosis的有趣之處在于,它通過一個(gè)git倉庫來管理配置文件,倉庫就放在了/home/repo/gitosis- admin.git。我們需要為一個(gè)文件加上可執(zhí)行權(quán)限:
sudo passwd root</p> <p>su</p> <p>cd repositories</p> <p>cd gitosis-admin.git/</p> <p>sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update</p> <p>exit
3.在服務(wù)器上新建一個(gè)測試項(xiàng)目倉庫
我們在服務(wù)器上新建一個(gè)空的項(xiàng)目倉庫,叫“test”。
切換到git用戶:
su git</p> <p>cd /home/repo</p> <p>mkdir test.git</p> <p>cd test.git</p> <p>git init –bare注:這是在服務(wù)器上運(yùn)行的,是為了初始化一個(gè)根級(jí)的git倉庫</p> <p>exit
這只是一個(gè)空倉庫,空倉庫是不能clone下來的。我們必須先修改一下gitosis-admin.
4.管理gitosis的配置文件
gitosis本身的配置也是通過git來實(shí)現(xiàn)的。在你自己的開發(fā)機(jī)里,把gitosis-admin.git這個(gè)倉庫clone下來,就可以以管理員的身份修改配置了。
在你的電腦里:
git clone git@xxoo.com:gitosis-admin.git</p> <p>cd gitosis-admin/
該目錄下的keydir目錄是用來存放所有需要訪問git服務(wù)器的用戶的ssh公鑰:
各個(gè)用戶按照前面提到的辦法生成各自的ssh公鑰文件后,把所有人的 ssh公鑰文件都拿來,按名字命名一下,比如b.pub, lz.pub等,統(tǒng)統(tǒng)拷貝到keydir下
修改gitosis.conf文件,我的配置大致如下:
[gitosis]</p> <p>[group gitosis-admin]</p> <p>members = zsw.scorpio@gmail.com</p> <p>writable = gitosis-admin
加入新文件、提交并push到git服務(wù)器:
git add .</p> <p>git commit -m “add”</p> <p>git push origin master
5.初始化測試項(xiàng)目
好了,現(xiàn)在服務(wù)器就搭建完了,并且有一個(gè)空的項(xiàng)目test在服務(wù)器上。接下來測試一下,空倉庫是不能clone的,以下是在客戶端完成。
mkdir dev</p> <p>cd dev/</p> <p>git init</p> <p>echo “/*add something*/” > hello</p> <p>git add .</p> <p>git commit -m “initial version”</p> <p>git remote add origin git@xxoo.com:test.git</p> <p>git push origin master
到此為止test已經(jīng)有了一個(gè)版本了,其他成員只要先clone一下 teamwork倉庫,就可以任意玩了。
git clone git@xxoo.com:test.git</p> <p>cd teamwork</p> <p>vim hello</p> <p>git add .</p> <p>git commit -a “b add”</p> <p>git push origin master</p> <p>exit
6.創(chuàng)建gitweb
sudo apt-get install gitweb
配置 gitweb
默認(rèn)沒有 css 加載,把 gitweb 要用的靜態(tài)文件連接到
cd /var/www/</p> <p>sudo ln -s /usr/share/gitweb/* .
修改配置
sudo vim /etc/gitweb.conf
將 $projectroot 改為git倉庫存儲(chǔ)目錄(例如:/home/git/repositories),保存后刷新瀏覽器。
http://xxoo.com/cgi-bin/gitweb.cgi
7. 修改/etc/gitweb.conf 內(nèi)容
# path to git projects (<project>.git)</p> <p>#$projectroot = “/var/cache/git”;</p> <p>$projectroot = “/home/git/repositories”;</p> <p># directory to use for temp files</p> <p>$git_temp = “/tmp”;</p> <p># target of the home link on top of all pages</p> <p>$home_link = $my_uri || “/”;</p> <p># html text to include at home page</p> <p>$home_text = “indextext.html”;</p> <p># file with project list; by default, simply scan the projectroot dir.</p> <p>$projects_list = $projectroot;</p> <p># stylesheet to use</p> <p>@stylesheets = (“/gitweb/static/gitweb.css”);</p> <p># javascript code for gitweb</p> <p>$javascript = “gitweb/static/gitweb.js”;</p> <p># logo to use</p> <p>$logo = “/gitweb/static/git-logo.png”;</p> <p># the ‘favicon’</p> <p>$favicon = “/gitweb/static/git-favicon.png”;</p> <p># git-diff-tree(1) options to use for generated patches</p> <p>#@diff_opts = (“-M”);</p> <p>@diff_opts = ();
8.重啟apache
sudo /etc/init.d/apache2 restart
相關(guān)文章

Ubuntu 26.04 LTS(Resolute Raccoon)發(fā)布:內(nèi)存要求提至6GB
2026-04-23,Ubuntu 26.04 LTS 正式版按計(jì)劃如期發(fā)布,Ubuntu 26.04 LTS 搭載 Linux 內(nèi)核 7.0 和 GNOME 50 桌面環(huán)境,原生集成英偉達(dá) CUDA,內(nèi)存要求提至 6GB2026-04-24
桌面生產(chǎn)力直接拉滿! Ubuntu安裝后別急著用這7個(gè)設(shè)置一定要改
Ubuntu桌面系統(tǒng)安裝成功后,不要急著使用,修改后桌面生產(chǎn)力直接拉滿,今天我就把這7個(gè)我每次必改的設(shè)置完整分享出來,配上詳細(xì)步驟和實(shí)際效果2026-04-15
CPU和硬盤要求保持不變! Ubuntu 26.04 LTS最低內(nèi)存運(yùn)行要求提高到 6GB
Canonical即將發(fā)布“Resolute Raccoon”Ubuntu 26.04 LTS操作系統(tǒng),資料顯示推薦內(nèi)存提高至6GB,這是2018年以來首次重大變動(dòng)2026-04-08
基于Linux7.0+GNOME50+Mesa26.0! Ubuntu 26.04 LTS Beta 版發(fā)布
Ubuntu 26.04 LTS測試版如期發(fā)布,此次更新將集成大量前沿開源技術(shù),Beta 測試版搭載了尚處于開發(fā)階段的 Linux 7.0 內(nèi)核、默認(rèn)采用最新的 GNOME 50.0 桌面組件、全新的 Mes2026-03-27
Ubuntu桌面系統(tǒng)爆致命漏洞! 30天可拿root權(quán)限
近日,全球知名網(wǎng)絡(luò)安全研究機(jī)構(gòu)Qualys的威脅研究部門正式披露了Ubuntu桌面系統(tǒng)的一個(gè)高危本地提權(quán)漏洞,其官方漏洞編號(hào)為CVE-2026-38882026-03-21
Ubuntu 25.10 系統(tǒng)正式發(fā)布:搭載 Linux 6.17 內(nèi)核
Ubuntu 25.10 系統(tǒng)代號(hào)“Questing Quokka”現(xiàn)已推出,集成最新的 GNOME 49 桌面環(huán)境,默認(rèn)僅啟用 Wayland 會(huì)話,提升了圖形體驗(yàn)2025-10-10
Debian 13升級(jí)后網(wǎng)絡(luò)轉(zhuǎn)發(fā)等功能異常怎么辦? 并非錯(cuò)誤而是管理機(jī)制變更
很多朋友反饋,更新到Debian 13后網(wǎng)絡(luò)轉(zhuǎn)發(fā)等功能異常,這并非 BUG 而是 Debian 13 Trixie 調(diào)整了管理機(jī)制,具體來說是sysctl變更為由systemd-sysctl主導(dǎo)且配置文件變成模塊2025-08-22
SSH中斷/寶塔面板異常/分區(qū)問題等! Debian 13升級(jí)注意事項(xiàng)匯總
前一段時(shí)間發(fā)布了debian13,我們也分享了debian12升級(jí)到debian13的圖文教程,很多朋友在升級(jí)的時(shí)候遇到了不少問題,今天我們就來看看Debian 13升級(jí)注意事項(xiàng)2025-08-21
Debian12怎么升級(jí)到Debian13? Debian系統(tǒng)升級(jí)教程
心念念的Debian13終于正式發(fā)布了,該怎么升級(jí)呢?下面我們就來看看Debian12升級(jí)到 Debian13的教程2025-08-21
Ubuntu 24.04.3 LTS 正式發(fā)布: 附更新內(nèi)容匯總
Ubuntu 24.04 這一長期支持版本發(fā)布了第三個(gè)點(diǎn)版本升級(jí):Ubuntu 24.04.3 LTS,涵蓋桌面、服務(wù)器與云等版本,主要是將過去數(shù)月發(fā)布的安全更新、錯(cuò)誤修復(fù)和穩(wěn)定性改進(jìn)整合入2025-08-09


