Centos 7.6 操作系搭建Gitlab服務器方法
參考文檔 : Centos 7搭建Gitlab…
https://www.cnblogs.com/zhangycun/p/10963094.html
環境介紹
名稱 | 參數 |
---|---|
操作系統 | Centos 7.6 |
硬件平臺 | 華爲彈性雲服務器ECS |
Gitlab | gitlab-ce-12.0.0 |
操作系統環境準備
更新操作系統
sudo yum update
sudo yum upgrade
安裝軟件依賴環境
1) ssh
sudo yum install -y curl policycoreutils-python openssh-server
2)postfix郵件服務器
a、安裝
sudo yum install postfix
b、啓動
sudo yum install postfix
3)防火牆
方案一:關閉防火牆
臨時關閉防火牆
sudo systemctl stop firewalld
永久防火牆開機自啓動
sudo systemctl disable firewalld
臨時打開防火牆
sudo systemctl start firewalld
防火牆開機啓動
sudo systemctl enable firewalld
查看防火牆狀態
sudo systemctl status firewalld
方案二:配置端口
安裝防火牆
sudo yum install firewalld systemd -y
臨時打開防火牆
sudo systemctl start firewalld
防火牆開機啓動
sudo systemctl enable firewalld
查看防火牆狀態
sudo systemctl status firewalld
配置防火牆端口
添加http服務到firewalld,pemmanent表示永久生效,若不加–permanent系統下次啓動後就會失效。
sudo firewall-cmd --permanent --add-service=http
重啓防火牆
sudo systemctl reload firewalld
4)關閉SELinux(可選)
臨時關閉SELinux
setenforce 0
臨時打開SELinux
setenforce 1
開機關閉SELinux
編輯/etc/selinux/config文件,將SELINUX的值設置爲disabled (不是最後一行)
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
查看SELinux狀態
執行getenforce命令
建立存儲倉庫目錄
由於gitlab默認存儲倉庫路徑爲/var/opt/gitlab/git-data,創建
mkdir -p ~/disk/gitlab #~/disk 爲華爲雲數據盤
sudo ln -sf ~/disk/gitlab/ /var/opt/gitlab
下載並安裝Gitlab軟件
1) 下載gitlab-ce-12.0.0軟件安裝包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm
2) 安裝Gitlab軟件
sudo yum -y install gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm
安裝完成狀態
3)修改gitlab.rb配置軟件參數
a、修改服務器ip和port
vi /etc/gitlab/gitlab.rb
[root@server disk]# vi /etc/gitlab/gitlab.rb
## GitLab configuration settings
##! This file is generated during initial installation and **is not** modified
##! during upgrades.
##! Check out the latest version of this file to know about the different
##! settings that can be configured by this file, which may be found at:
##! https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/files/gitlab-config-template/gitlab.rb.template
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://gitlab.example.com'
...
修改external_url
進入編輯器後按“i”鍵進入編輯狀態,按Backsapce鍵刪除內容,鍵入自己的IP地址或者域名,修改完畢後,按ESC鍵退出編輯狀態 然後退出並保存,命令輸入“:wq”
注意這裏設置的端口不能被佔用,默認是8080端口,如果8080已經使用,請自定義其它端口,並在防火牆設置開放相對應得端口
external_url 'http://192.168.1.2'
重新配置GitLab
gitlab-ctl reconfigure
重新配置成功狀態
啓動GitLab
gitlab-ctl restart
啓動成功狀態
使用netstat -nat命令查看GitLab服務網絡端口狀態
4) 服務管理:
查看服務狀態:gitlab-ctl status
開啓服務: gitlab-ctl start
關閉服務:gitlab-ctl stop
關閉gitlab的自動啓動 :systemctl disable gitlab-runsvdir.service
開啓gitlab的自動啓動:
systemctl enable gitlab-runsvdir.service
systemctl start gitlab-runsvdir.service
gitlab-cmd start
GitLab服務的配置和使用
訪問gitlab主頁
沒有域名,直接輸入服務器ip和指定端口進行訪問
初始賬戶: root 密碼:5iveL!fe
第一次登錄修改密碼
smtp 163郵箱設置
a、修改gitlab.rb 配置文件
vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "XXXXX"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
b、保存重新配置gitlab
gitlab-ctl reconfigure
c、命令測試發送郵件
gitlab-rails console
在
Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now
GitLab配置和使用
以下內容來自https://www.cnblogs.com/zhangycun/p/10963094.html
a、創建public 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 . |
| . . |
| . |
| |
| |
b、複製id_rsa.pub公鑰
[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
添加公鑰至gitlab,
c 、添加遠程倉庫
1.gitlab創建倉庫,進行遠程同步
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
d 、修改遠程倉庫
由於剛開始添加的遠程倉庫寫錯了url,現在通過如下命令進行url修改
[root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git
e、查看遠程倉庫
如果已經配置了遠程倉庫服務器,可以運行 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)
f、推送遠程倉庫
將本地庫更新內容推送至遠程,用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
g、克隆遠程倉庫
如果現在倉庫已經有開發好的項目,需要加入進來開發,可以先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.
h、拉取遠程倉庫
簡單的說,這個命令會訪問遠程倉庫,從中取出你還沒有的數據,或者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前,我們可以查看更新情況,然後再決定是否合併
i、更改遠程倉庫
如果想重新命名一個遠程倉庫名稱。將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)
j、移除遠程倉庫
因爲一些變動不再使用一些特定的鏡像,可以通過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)
k、Git遠程倉庫小結
要添加一個倉庫,首先必須知道倉庫的地址,然後使用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地址