1、 安裝並配置必要的依賴關係
在CentOS系統上安裝所需的依賴:ssh,防火牆,postfix(用於郵件通知) ,wget,如下這些命令也會打開系統防火牆中的HTTP和SSH端口訪問。node
注意:用戶不是管理員權限,出現以下警告python
用戶不在sudoers文件中此事將被報告git
可使用 su root 切換root權限vim
1.安裝ssh安全
sudo yum install -y curl policycoreutils-python openssh-server服務器
若出現如下圖片的信息則表示成功dom
2.將SSH服務設置成開機自啓動,安裝命令:sudo systemctl enable sshd ssh
3.啓動SSH服務,安裝命令:sudo systemctl start sshdcurl
4。安裝防火牆(若是已經安裝了防火牆而且已經在運行狀態,則可直接進行第6步)編輯器
yum install firewalld systemd -y
若出現「完畢!」的字樣,則表示安裝成功
5.開啓防火牆,安裝命令:service firewalld start
6.添加http服務到firewalld,pemmanent表示永久生效,若不加--permanent系統下次啓動後就會失效。
sudo firewall-cmd --permanent --add-service=http
7.重啓防火牆,安裝命令:sudo systemctl reload firewalld
8.接下來,安裝Postfix以發送通知郵件,安裝命令:sudo yum install postfix
9.將postfix服務設置成開機自啓動,安裝命令:sudo systemctl enable postfix
10.啓動postfix,安裝命令:sudo systemctl start postfix
在安裝Postfix期間,可能會出現配置屏幕。選擇「Internet Site」並按enter鍵。使用您的服務器的外部DNS以「mail name」並按enter。若是出現額外的屏幕,繼續按enter鍵接受默認值。
11.wget 用於從外網上下載插件
檢查系統中是否已經安裝wget,使用命令若出現下圖wget相關版本描述則說明系統中已經安裝wget 若報系統找不到命令說明wget未安裝
若wget未安裝則進行安裝,安裝命令:yum -y install wget
12.安裝vim編輯器 安裝命令:yum install vim -y
2、添加GitLab鏡像源並安裝gitlab服務器
1.添加gitlab鏡像
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
2.安裝gitlab 安裝命令:rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
安裝過程須要些時間,若是出現下圖,則說明安裝成功。(我的在安裝時並未出現,可是也是成功的)
4.修改gitlab配置文件指定服務器ip和自定義端口:
vim /etc/gitlab/gitlab.rb
進入編輯器後按「i」鍵進入編輯狀態,修改完畢後,按ESC鍵退出編輯狀態
而後退出並保存,命令輸入「:wq」
ps:注意這裏設置的端口不能被佔用,默認是8080端口,若是8080已經使用,請自定義其它端口,並在防火牆設置開放相對應得端口
5.重置並啓動GitLab
執行:
gitlab-ctl reconfigure
gitlab-ctl restart
提示 "ok: run:"表示啓動成功
6.訪問 GitLab頁面
若是沒有域名,直接輸入服務器ip和指定端口進行訪問
初始帳戶: root 密碼:5iveL!fe
第一次登陸修改密碼
七、爲了安全性考慮,須要建立public key
建立key
[root@git-node1 demo]# ssh-keygen #一路回車 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 48:94:9a:65:cd:0f:f3:17:c6:dc:3c:28:0a:bb:47:98 root@git-node1 The key's randomart image is: +--[ RSA 2048]----+ | .+ o + | | .= = . * + | | =.= * o . . | | o.E.o o . | | .oS . | | . . | | . | | | | |
8.複製id_rsa.pub公鑰
1
2
|
[root@git-node1 demo]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyVSAhs+ZBTEwv5nMwyoordV4VBy+DoCyGBJcjqkcfagRyyGUZvS57T4rhgSpz2csMTtxBXAyo0vJltxPr8McsZmcDZ8+t5qr22h9wHULFs5uB5/uZ6CDomm<br>/rVtJjiT2l1Uzh14De1CJDbNRPTCbxvcD5Mi7Ko29epymdt8agYqV2+ROynYaSjqcKxuo6pXD/cGskO7JTOkek2wxmTFOxFQR/Ec1LtVk8ilcesENzMdeU4Nwr2lec6Lr++qKXQuO7a3vB4958Hfhh1JlRI<br>ShDuHBOsFChG+vJim6tl123k7jjePHxJhUORhVMpmD4pMNwN+NYv1ta3J3ZSW6v5uWxw== root@git-node1
|
7.添加公鑰至gitlab,如圖1-6-1
1.gitlab建立倉庫,進行遠程同步,如圖1-6-2
2.使用git remote 添加遠程倉庫地址,選擇SSH方式克隆。
[root@git-node1 ~]# cd demo/ //必須是git init 初始化倉庫目錄
[root@git-node1 demo]# git remote add origin git@git-node1:root/git_demo.gitxxx
因爲剛開始添加的遠程倉庫寫錯了url,如今經過以下命令進行url修改
[root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git
若是已經配置了遠程倉庫服務器,能夠運行 git remote命令。它會列出你指定每個遠程服務器的簡寫。
[root@git-node1 demo]# git remote
origin
也能夠指定-v選項,會顯示須要讀寫遠程倉庫git保存簡寫名稱以及對應的URL地址。
[root@git-node1 demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
將本地庫更新內容推送至遠程,用git push命令,其實是將當前分支推送至遠程倉庫。
因爲遠程庫是新創建空的,咱們在第一次推送時候,git默認是不會把本地master關聯至遠端的master,因此咱們須要加上-u參數,這樣git不但會把本地的master分支內容推送至遠程倉庫的master分支,而且還會將本地的master分支和遠程master分支關聯起來。在之後推送或者拉取時就能夠簡化命令。
[root@git-node1 demo]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To git@git-node1:root/git_demo.git
* [new branch] master -> master
分支 master 設置爲跟蹤來自 origin 的遠程分支 master。
若是推送衝突能夠選擇--force強行推送
[root@git-node1 xuliangwei]# git push origin --force
若是一次都沒有推送數據,能夠選擇—all一次所有推送至遠程服務器
[root@git-node1 xuliangwei]# git push origin --all
若是如今倉庫已經有開發好的項目,須要加入進來開發,能夠先clone整個項目。
[root@git-node1 tmp]# git clone git@git-node1:root/git_demo.git
正克隆到 'git_demo'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
接收對象中: 100% (5/5), done.
簡單的說,這個命令會訪問遠程倉庫,從中取出你尚未的數據,或者git pull以後仍是沒有的數據。
此前在添加的遠程倉庫的時候指定了倉庫名origin,命令會自動將其添加爲遠程倉庫並默認以origin爲簡寫。
因此,git fetch origin至關於從遠程獲取最新版本到本地,而後比較本地master分支和遠程master分支差異最後進行合併。
[root@git-node1 demo]# git fetch origin //拉取主分支最新版本(能夠拉取其餘分支)
[root@git-node1 demo]# git fetch origin dev //獲取dev分支最新數據
拉取數據,在生產環境中見到比較多的仍是git pull至關因而從遠程獲取最新版本並merge到本地
[root@git-node1 xuliangwei]# git pull origin master #拉取主分支最新版本(能夠拉取其餘分支)
[root@git-node1 xuliangwei]# git pull origin dev //獲取dev分支最新數據
上述命令其實至關於git fetch 和 git merge在實際使用中,git fetch更安全一些,由於在merge前,咱們能夠查看更新狀況,而後再決定是否合併
1.6.8更改遠程倉庫
若是想從新命名一個遠程倉庫名稱。將test重命名爲rainbow,能夠經過git remote rename進行修改。
注意:這同時會修改你的遠程分支名字。以前引用test/master的如今會引用rainbow/master
1.添加新遠程分支,並賦予test爲遠程倉庫名稱
[root@git-node1 git_demo]# git remote add test git@git-node1:root/git_demo.git
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
test git@git-node1:root/git_demo.git (fetch)
test git@git-node1:root/git_demo.git (push)
2.修改test名稱爲rainbow名稱
[root@git-node1 git_demo]# git remote rename test rainbow
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
rainbow git@git-node1:root/git_demo.git (fetch)
rainbow git@git-node1:root/git_demo.git (push)
由於一些變更再也不使用一些特定的鏡像,能夠經過git remote remove 遠程倉庫名稱,移除遠程倉庫
1.查看遠程倉庫
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
rainbow git@git-node1:root/git_demo.git (fetch)
rainbow git@git-node1:root/git_demo.git (push)
2.移除再也不使用的rainbow遠程倉庫
[root@git-node1 git_demo]# git remote remove rainbow
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
要添加一個倉庫,首先必須知道倉庫的地址,而後使用git remote add 命令添加遠程倉庫,也可以使用git clone命令克隆。(Git支持多種協議,包括http、https,但經過ssh支持的原生git協議速度最佳。)
要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git,關聯後,使用命令git push -u origin master第一次推送master分支的全部內容,此後,每次本地提交後,只要有必要,就可使用命令git push origin master推送最新修改
# git remote add [remote] [url]#添加(關聯)遠程庫
# git remote set-url [remote] [url] #修改遠程倉庫
# git clone [url] #克隆遠程倉庫項目
# git remote #查看指定遠程倉庫命名簡寫
# git remote –v #查看遠程倉庫詳細信息以及名稱對應URL
# git push -u remote master #第一次推送master分支的全部內容
# git fetch remote [branch/tag] #下載遠程倉庫的全部變更
# git pull remote [branch/tag] #拉取主分支最新版本(能夠拉取其餘分支)
# git push remote [branch/tag] --force #強行推送當前分支至遠程分支,及時衝突
# git push remote [branch/tag] --all #推送全部分支到遠程倉庫
# git remote rename [oldname] [newname] #修改遠程倉庫名稱
# git remote remove [name] #刪除遠程倉庫名稱以及URL地址
11、安裝過程碰見的那些坑
1、在CentOS裏面安裝軟件,提示軟件已安裝,可是rpm -q和-e都是提示包沒有安裝
查看與rpm包相關的文件和其餘信息 rpm -qa | grep 包名
查詢包是否被安裝,命令:rpm -q 包名
刪除軟件包,命令:rpm -e 包名
運行以上三步,把原來的包刪除掉從新下載和安裝
服務管理:
查看服務狀態:gitlab-ctl status
開啓服務: gitlab-ctl start
關閉服務:gitlab-ctl stop
關閉gitlab的自動啓動 :systemctl disable gitlab-runsvdir.service
開啓gitlab的自動啓動: