騰訊雲伺服器git搭建
A. 如何在自己的伺服器上建立 git 倉庫
1. lvm 2. raid 3. distribute filesystem(glusterfs\sector\......) 4 (我知道) 前面三選做完兩塊盤塊用建基本伺服器事
B. 如何創建自己的私有git伺服器
通過以下的步驟,你將在伺服器上搭建並使用你自己的Git服務,例如myhost.example.com。其中的一些步驟,像email通知,限制用戶的許可權,特定分組的接入管理,都是依據你的要求和現實狀況的可選項。還有很多命令,你需要root許可權才能執行,所以別忘了用sudo,或者(最好不要)直接切換到root來執行。
為有讀寫許可權的用戶建立一個分組。根據你的操作系統,你可以用groupadd命令來實現,用vigr來編輯分組文件,或者直接編輯/etc/group文件。在最後,你會在/etc/group文件中看到如下一行
repogroup:*:10005:marry,john,violet
其中,repogroup是准許接入這個倉庫的組的名字。10005是一個獨一無二的分組識別數字,marry,john,violet則是獲准接入這個倉庫的用戶。
決定Git倉庫的路徑。它既可以放在你的home路徑下(e.g. /home/yourname/gitroot),也可以放在一個專用的路徑下(e.g. /var/gitroot).
配置許可權,讓Git用戶可以訪問這個目錄
chmod g+rx /path-to/gitroot
chown :grouprepo /path-to/gitroot
建立新的Git倉庫,叫做newrepo
cd /path-to/gitroot
git init --bare newrepo.git
建立路徑認證,以允許用戶組訪問,同時有針對性的設置Git
cd newrepo.git
chown -R :grouprepo .
git config core.sharedRepository group
find . -type d -print0 | xargs -0 chmod 2770
find . -type f -print0 | xargs -0 chmod g=u
設置提交(commit)的email通知(commit是一條命令),這樣當有新的修改提交到倉庫的時候,開發者們將會收到一封關於修改內容一覽的電子郵件。
echo 'One-line project description' >description
git config --local hooks.mailinglist [email protected],[email protected],...
git config --local hooks.emailprefix '[DI-PR] '
git config --local hooks.showrev "git show -C %s; echo"
git config --local hooks.emailmaxlines 100
通過設置一個稱為鉤子(hook)的東東,來創建這些email通知。
cd hooks
cp post-receive.sample post-receive
chmod +x post-receive
從post-receive的腳本中移除掉最後一行注釋的#字型大小,最後語句應該是這樣的
. /path-to-hooks/post-receive-email
在你的庫中先放入一個文件(比如README)。為了避免其他用戶在第一次提交時遇到奇怪的錯誤信息時感到困惑,這是有必要的。
cd to-your-personal-working-directory
git clone myhost.example.com:/path-to/gitroot/newrepo.git
echo "Short project description" >README.txt
git add README.txt
git commit -a -m "Add README file"
git push origin master # 第一次僅僅需要T"origin master" 這個參數
為倉庫的其他用戶建立賬戶。依據你系統的不同,你可以通過useradd 或者adser來實現。
設置用戶可以通過公/私鑰配對來訪問。這包括以下幾步:
1)已經有公鑰的用戶,只需要把公鑰發給你就好。
2)沒有公鑰的用戶,必須用ssh-keygen命令來生成一個,然後把.ssh/id_rsa.pub發給你就可以了。
3)之後你必須在他們對應的賬戶下面建立這種公/私鑰配對。復制他的公鑰,然後順序執行下面的命令。
sudo su - username
mkdir -p .ssh
cat >>.ssh/authorized_keys <<\EOF
paste-key-as-one-line
EOF
exit
改變用戶的賬戶讓他們使用受限的shell。如果你想讓你添加進來的用戶僅僅使用Git,而不是Unix的所有東西,那麼就設置他們的賬戶,讓他們只能使用Git。Git提供了這種專為這種需求設計的受限shell。它通常被安裝在 /usr/libexec/git-core/git-shell or /usr/local/libexec/git-core/git-shell。因此,對所有你想限制許可權的用戶,你可以執行以下命令。
sudo chsh -s /usr/libexec/git-core/git-shell username
告訴你的用戶,用下面的語句來克隆倉庫到本地。
git clone myhost.example.com:/path-to/gitroot/newrepo.git
到了這里,恭喜你,你成功了!
C. windows git伺服器怎麼創建
安裝步驟此處略去。
END
安裝CopSSH
安裝步驟此處略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設置為「no」:
END
生成用戶帳號
1
在伺服器上生成Windows用戶,取消用戶下次登錄時須更改密碼,設置密碼永不過期:
2
將該用戶隸屬於GitUser組(如尚未生成改組,則先生成改組):
END
激活用戶
1
在Windows啟動程序組中,運行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2
進入COPSSH Control Panel應用對話框,正常情況下服務應該為正在運行(圖標為綠色,如為紅色,則可嘗試點選該按鈕,啟動該服務):
3
選擇Users頁面:
4
點選Add按鈕,出現如下導航對話框:
5
選擇Forward按鈕,出現如下頁面,選擇欲激活的用戶對應的域名及用戶名:
6
選擇Forward按鈕,進入如下頁面,選擇linux shell and Sftp,所有選項選中:
7
選擇Forward按鈕,進入確認頁面,選擇Apply:
8
回到如下頁面,選擇Apply後,關閉。
END
公鑰文件上傳
1
從用戶處取得對應帳戶的公鑰文件authorized_keys,復制到C:\Program Files\ICW\home\ricky\.ssh目錄下(\ricky\是對應的用戶名);
2
Windows啟動程序組中運行Start a Unix BASH Shell(或Windows運行中運行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3
運行如下unix命令行,如運行未出錯,則完畢。
END
生成Git庫容器目錄
1
在伺服器硬碟上生成一個目錄,用來容納Git庫,比如生成E:\ GITTestRepo\目錄;
2
滑鼠右鍵點擊該目錄,選擇共享和安全…;
3
在彈出的該目錄屬性對話框的安全頁中加入用戶對應的組GitUser;
4
確認該用戶組許可權設置了允許修改、讀取和運行、列入文件夾目錄、讀取、寫入,選擇確定後完畢。
END
確認防火牆開放了22埠
確認伺服器的防火牆沒有禁止22埠的TCP/IP通信。
END
修改用戶登錄運行腳本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是對應的用戶名),在文件最後加入
D. 怎樣在一台電腦搭建git伺服器和本地端
直接使用file:///形式的git倉庫即可
E. linux如何搭建git
1、環境准備
伺服器:CentOS 7.3 + git (1.8.3.1)
客戶端:win10 + git (2.17.0.windows.1)
2、伺服器安裝git
yum install -y git
3、創建git用戶,管理 git服務
[root@localhost home]# useradd git
[root@localhost home]# passwd git
4、伺服器創建git 倉庫
設置/home/git/repository-git 為git 伺服器倉庫,然後把 git 倉庫的 owner 修改為 git 用戶。
復制代碼
[root@localhost git]# mkdir repository-git
[root@localhost git]# git init --bare repository-git/
Initialized empty Git repository in /home/git/repository-gt/
[root@localhost git]# chown -R git:git repository-git/
5、客戶端安裝git
下載 Git for Windows,地址:https://git-for-windows.github.io/
安裝完之後,可以使用 Git Bash 作為命令行客戶端。
5.1、選擇一個目錄 F:\project\sell 作為本地倉庫,右鍵進入Git Bash 命令行模式
初始化本地倉庫:git init
5.2、嘗試克隆一個伺服器的空倉庫到本地倉庫
git clone [email protected]:/home/git/repository-gt
第一次連接到目標 Git 伺服器時會得到一個提示:
The authenticity of host '192.168.116.129(192.168.116.129)' can't be established.
RSA key fingerprint is SHA256:Ve6WV/.
Are you sure you want to continue connecting (yes/no)?
選擇 yes:
Warning: Permanently added '192.168.116.129' (RSA) to the list of known hosts.
此時 C:\Users\用戶名\.ssh 下會多出一個文件 known_hosts,以後在這台電腦上再次連接目標 Git 伺服器時不會再提示上面的語句。
F. 如何搭建git版本庫
服務端配置
1、安裝git
2、新建一個用戶,只能用來上傳代碼,而不能通過ssh登錄,比如git用戶
adser git
chsh -s $(command -v git-shell) git
使用git-shell替換bash ,這樣git用戶就不能通過ssh登錄
這一步會有警告,提示git-shell不在shell列表裡,不用擔心。
3、添加ssh公鑰,在/home/git/.ssh/authorized_keys里添加客戶端的公鑰,一行一個。
如果沒有文件,可以新建
mkdir /home/git/.ssh
touch /home/git/.ssh/authorized_keys
客戶端生成公鑰的方法是 ssh-keygen,
windows的在C:\Users\用戶名\.ssh\ 目錄下,打開id_rsa.pub
4、初始化一個空的git倉庫
cd /var
git init --bare sample.git
chown -R git:git sample.git
這一步是讓目錄可以被git用戶修改,否則會出現「permission denied」錯誤。
客戶端
1、可以git clone了
git clone git@伺服器:/var/sample.git 即伺服器上的文件路徑
或者ssh,建議ssh,方便設置埠號
git clone ssh://git@伺服器:埠號/var/sample.git
G. 如何搭建git私有倉庫
以ubuntu伺服器為例,如果要創建小范圍的私有git伺服器,是非常簡單的,只需要如下幾個簡單步驟:
Step 1: 安裝git
直接通過sudo apt-get install git即可完成。
Step 2: 創建git用戶
git用戶用來通過SSH連接git服務,輸入命令:
$ sudo adser git
Step 3: 創建證書登錄
首先收集所有需要登錄的用戶公鑰,然後導入到/home/git/.ssh/authorized_keys文件即可。
Step 4: 初始化git倉庫
假設倉庫位於/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
這樣就創建了一個裸倉庫,裸倉庫沒有working dir,因為伺服器上的git倉庫純粹是為了共享,倉庫目錄一般以.git結尾。然後把owner改為git:
$ sudo chown -R git:git sample.git
Step 5: 防止登錄shell
出於安全考慮,git用戶不應該登錄shell,可以編輯/etc/passwd,找到類似一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell。
Step 6: 克隆倉庫
在客戶端就可以通過ssh克隆倉庫了:
$ git clone git@server:/srv/sample.gitCloning into 'sample'...warning: You appear to have cloned an empty repository.
然後,就可以正常推送了:
$ touch README$ git add README$ git commit -m "add readme"$ git push origin masterCounting objects: 3, done.Writing objects: 100% (3/3), 212 bytes, done.Total 3 (delta 0), reused 0 (delta 0)To git@ubuntu:/srv/sample.git
* [new branch] master -> master
H. 如何搭建自己的git服
你可以把倉庫放在任何你希望存放倉庫的地方,你只需要保證用戶和用戶組對這個倉庫有適合的許可權就可以。最好不要把倉庫存放在用戶自己的工作區,因為許可權要求是很嚴格的,你可以存放在一些共享目錄,例如/optor /usr/local/share。
使用root用戶創建一個裸倉,並賦予gituser合適的許可權:
# git init --bare /opt/jupiter.git# chown -R gituser:gituser /opt/jupiter.git# chmod -R 770 /opt/jupiter.git
現在經過驗證的作為gituser的或者gituser用戶組的用戶可以讀取並寫入jupiter.git倉庫了。你可以試著在你的本地機器執行下面的命令:
$ git clone [email protected]:/opt/jupiter.git jupiter.clone
Cloning into 'jupiter.clone'...
Warning: you appear to have cloned an empty repository.
記住一點:開發者必須把自己的公鑰加入gituser用戶的authorized_keys文件中,或者他們就是伺服器的用戶(如果可以的話),並且這個用戶必須成為gituser用戶組的一員。
I. 怎麼在自己的伺服器上建立git倉庫
1.架設Git伺服器我們以Ubuntu為例。首先,在git伺服器上創建一個名為'git'的用戶,並為其創建一個.ssh目錄。並將其許可權設置為僅git用戶有讀寫許可權$sudoadsergit$sugit$cd$mkdir.ssh$chmod700.ssh接下來,把開發者的SSH公鑰添加到這個用戶的authorized_keys文件中。假設你通過電郵收到了幾個公鑰並存到了臨時文件里。重復一下,公鑰大致看起來是這個樣子:$cat/tmp/id_rsa.john.pubssh-/ww+/T17//5zytK6Ztg3RPKK+/nLF6JLtPofwFBlgc+AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它們逐個追加到authorized_keys文件尾部即可,同時將authorized_keys設置為僅git用戶有讀寫許可權。$cat/tmp/id_rsa.john.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.josie.pub>>~/.ssh/authorized_keys$cat/tmp/id_rsa.jessica.pub>>~/.ssh/authorized_keys$chmod600~/.ssh/authorized_keys現在可以用--bare選項運行gitinit來建立一個裸倉庫,這會初始化一個不包含工作目錄的倉庫。$cd/opt/git$mkdirproject.git$cdproject.git$git--bareinit這時,Join,Josie或者Jessica就可以把它加為遠程倉庫,推送一個分支,從而把第一個版本的項目文件上傳到倉庫里了。值得注意的是,每次添加一個新項目都需要通過shell登入主機並創建一個裸倉庫目錄。我們不妨以gitserver作為git用戶及項目倉庫所在的主機名。如果在網路內部運行該主機,並在DNS中設定gitserver指向該主機,那麼以下這些命令都是可用的:#在John的電腦上$cdmyproject$gitinit$gitadd.$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/project.git$gitpushoriginmaster這樣,其他人的克隆和推送也一樣變得很簡單:$gitclonegit@gitserver:/opt/git/project.git$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用這個方法可以很快捷地為少數幾個開發者架設一個可讀寫的Git服務。作為一個額外的防範措施,你可以用Git自帶的git-shell工具限制git用戶的活動范圍。只要把它設為git用戶登入的shell,那麼該用戶就無法使用普通的bash或者csh什麼的shell程序。編輯/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你應該能找到類似這樣的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改為/usr/bin/git-shell(或者用whichgit-shell查看它的實際安裝路徑)。該行修改後的樣子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell現在git用戶只能用SSH連接來推送和獲取Git倉庫,而不能直接使用主機shell。嘗試普通SSH登錄的話,會看到下面這樣的拒絕信息:$sshgit@gitserverfatal:WhatdoyouthinkIam?Ashell?Connectiontogitserverclosed.這里提供的方法,組內所有成員對project都有讀寫許可權,也就是說每個分支都可以push代碼,如果需要更加細致的許可權控制,請使用Gitosis或者Gitolite。2.搭建Gitweb安裝gitweb之後就可以通過網站訪問我們的項目了。就像gitweb.conf#pathtogitprojects(.git)$projectroot="/opt/git";至此gitweb就可以使用了,現在可以通過config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="[email protected],[email protected]"#收件人列表[email protected]#送件人地址emailprefix="[Projectcommit]"#郵件標題前綴showrev="gitshow-C%s;echo"#不只顯示有變化的文件,同時也顯示改變的內容為了使郵件顯示的更清楚,還要修改一下工程目錄當中的description文件,在description文件中,默認第一行是項目名稱,所以要在第一行填入該項目的名稱,這個在郵件中會有顯示。$vim/opt/git/project.git/descriptionProject_A