環境說明
系統版本 CentOS 7.2 x86_64(較新版本的gitlab集成了更多功能,順利運行起來的硬件要求較高,這里給了3G內存)
軟件版本 gitlab-ce-10.8.4
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用。
1、安裝
Gitlab的rpm包集成了它需要的軟件,簡化了安裝步驟,所以直接安裝rpm包即可,rpm包的獲取從官方網站或者國內鏡像源(如:清華https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/)獲取,gitlab又分為社區版和企業版(收費),這里部署的是社區版本10.8.4
[root@gitlab ~]# mkdir -p /service/tools
[root@gitlab ~]# cd /service/tools/
[root@gitlab tools]# yum localinstall -y gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm #安裝下載好的rpm包
或者
[root@gitlab ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm #執行rpm -ivh 在線安裝
安裝完成后出現上面的提示,按照提示修改配置文件中的url地址為本地服務器的地址
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.5'
[root@gitlab tools]# gitlab-ctl reconfigure #重新加載配置
[root@gitlab tools]# gitlab-ctl stop #停止gitlab,進行后面的漢化
[root@gitlab tools]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
10.8.4 #查看版本
或
[root@gitlab tools]# rpm -qa gitlab-ce
gitlab-ce-10.8.4-ce.0.el7.x86_64 #查看版本
[root@gitlab tools]# ls /opt/gitlab/ #相關目錄
bin embedded init LICENSES sv version-manifest.json
dependency_licenses.json etc LICENSE service var version-manifest.txt
[root@gitlab tools]# ls /var/opt/gitlab #相關目錄
alertmanager git-data gitlab-shell node-exporter public_attributes.json
backups gitlab-ci gitlab-workhorse postgres-exporter redis
bootstrapped gitlab-monitor logrotate postgresql trusted-certs-directory-hash
gitaly gitlab-rails nginx Prometheus
2、漢化
默認的全英文界面對於英文水平低的來講當然用着很不舒服,於是便需要來一波操作進行漢化,英文好的請自覺忽略
GitLab中文社區的項目,v7-v8.8是由Larry Li發起的"GitLab中文社區版項目"(https://gitlab.com/larryli/gitlab),從v8.9之后由@xhang開始繼續漢化項目(https://gitlab.com/xhang/gitlab)
[root@gitlab tools]# pwd
/service/tools
[root@gitlab tools]# mkdir /backup
[root@gitlab tools]# cp /opt/gitlab/embedded/service/gitlab-rails/* /backup #防止漢化失敗,備份原文件
[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git #下載最新的漢化包
漢化包的版本更新速度不得而知,所以盡量不要安裝最新版本的gitlab。如果是要下載老版本的漢化包,需要加上老版本的分支,如果想下載10.0.2,可以運行如下語句
[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh
[root@gitlab tools]# ls #git下來的文件為gitlab
gitlab gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm
[root@gitlab tools]# \cp -rf gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ #拷貝文件
檢驗漢化
[root@gitlab tools]# gitlab-ctl reconfigure #加載配置(第一次執行此命令會啟動,若只啟動執行start)
啟動時查看控制台輸出,需要等待一段時間,無輸出后啟動完成,執行free -m命令查看到當前的內存使用情況為
[root@gitlab tools]# free -m
total used free shared buff/cache available
Mem: 2993 2123 156 62 713 597
Swap: 2047 0 2047
[root@gitlab tools]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9100 0.0.0.0:* LISTEN 4319/node_exporter
tcp 0 0 127.0.0.1:9229 0.0.0.0:* LISTEN 4628/gitlab-workhor
tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 4659/ruby
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4191/unicorn master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4223/nginx: master
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 4196/sidekiq 5.0.5
tcp 0 0 127.0.0.1:9236 0.0.0.0:* LISTEN 4642/gitaly
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1439/sshd
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 4223/nginx: master
tcp 0 0 0.0.0.0:6783 0.0.0.0:* LISTEN 4696/alertmanager
tcp 0 0 127.0.0.1:9121 0.0.0.0:* LISTEN 4425/redis_exporter
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 4681/prometheus
tcp 0 0 127.0.0.1:9187 0.0.0.0:* LISTEN 4710/postgres_expor
tcp 0 0 127.0.0.1:9093 0.0.0.0:* LISTEN 4696/alertmanager
tcp6 0 0 ::1:9168 :::* LISTEN 4659/ruby
tcp6 0 0 :::22 :::* LISTEN 1439/sshd
瀏覽器訪問,第一次登錄需要修改密碼(不小於8位),漢化成功!!!
3、登錄並進行基本操作
GitLab終端常用命令
gitlab-ctl start #啟動所有 gitlab 組件;
gitlab-ctl stop #停止所有 gitlab 組件;
gitlab-ctl restart #重啟所有 gitlab 組件;
gitlab-ctl status #查看服務狀態;
gitlab-ctl reconfigure #啟動服務;
vim /etc/gitlab/gitlab.rb #修改默認的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace #檢查gitlab;
gitlab-ctl tail #查看日志;
修改密碼后進行登錄,登錄的用戶名為root
3.1 使用前可選操作
3.1.1 修改web端口
如果80和8080端口被占用可以修改
[root@gitlab tools]# vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:8080", :tcp_nopush => true
修改nginx端口
[root@gitlab tools]# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
listen *:80;
3.1.2 修改Prometheus端口
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.5:port' #根據需要修改端口
修改后需要重新加載配置並啟動
登錄使用
3.2 創建空白項目
選擇項目路徑,輸入項目名稱,項目描述,選擇項目等級(私人的,內部的,公開的),這里測試時使用網上的開源java cms項目jeesns
創建項目成功,此時若客戶端想使用該項目還需要建立與客戶端的密鑰文件以進行客戶端對項目的操作
3.3 客戶端生成密鑰文件
[root@gitlab-client ~]# 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:
07:f8:5c:75:83:aa:c2:a6:5c:25:d9:87:d0:4e:7a:1c root@gitlab-client
The key's randomart image is:
+--[ RSA 2048]----+
| . ..o |
| ..E ... . |
| .O.o.. |
| +oBoo |
| . +So. |
| = .. |
| . + . |
| o |
| |
+-----------------+
[root@gitlab-client ~]# cat .ssh/id_rsa.pub #查看公鑰
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI5yMQBjSftxN9PHg3ogCwaTxPNZ3n5+TZRwJZBKO5sQGNirAzNdq8wFwbUFqtFDqYFxU3mTBh5LG3Fk1Zh8R8abpzmHijP09gdgB4Ae31axRAPcngXss//flKQCSHoQlvwI+ZWozMGItmFMcmRCla4BTq/e3mVJuIdR8VQwSG32SeRqReZIrjbvsa8hp3D5nbLa5KWRiAuOj4OhPBwHOG8hx/wSnplyI8rtMayj6BjuczDdrZNotyv0IntxFZPoUQJ/+pN1azHGm6tI1TmKyh1lmmc5Tu0a7TxTf7Ve+P/srbxlqb7CWT168fZRzziglXcR5e2Ge7tNrkXo+dl2tf root@gitlab-client
將上面的公鑰文件復制到gitlab中
ssh key添加完成
點擊項目,查看項目的ssh地址及http地址
按照項目下面的提示進行簡單配置
在客戶端操作
git全局設置
[root@gitlab-client ~]# git config --global user.name "test" #配置使用Git倉庫的人員姓名
[root@gitlab-client ~]# git config --global user.email "test@test.com" #配置使用Git倉庫的人員email
設置后提交記錄才會在gitlab上顯示帶名字的記錄
[root@gitlab-client ~]# git config --list #檢查配置信息
3.4 導入新項目文件到倉庫
[root@gitlab-client ~]# cd /service/tools/jeesns/
[root@gitlab-client jeesns]# rm -rf .git #在網站下載的jeesns有.git目錄,刪除該目錄
[root@gitlab-client jeesns]# git init #初始化倉庫(創建一個名為 .git 的子目錄,這個子目錄含有你初始化的 Git 倉庫中所有的必須文件,這些文件是 Git 倉庫的骨干)
初始化空的 Git 版本庫於 /service/tools/jeesns/.git/
[root@gitlab-client jeesns]# git remote add origin git@10.0.0.5:root/jeesns.git #添加遠程項目地址(可從項目主頁復制)
[root@gitlab-client jeesns]# git add . #將修改保存到索引區
[root@gitlab-client jeesns]# git commit -m "tijiao" #提交所有代碼到本機的版本庫
[root@gitlab-client jeesns]# git push -u origin master #將本地的更改提交到遠程服務器
The authenticity of host '10.0.0.5 (10.0.0.5)' can't be established.
ECDSA key fingerprint is b7:9c:07:5c:a0:01:c3:00:50:f4:59:8e:e3:f5:f5:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.5' (ECDSA) to the list of known hosts.
Counting objects: 1932, done.
Compressing objects: 100% (1851/1851), done.
Writing objects: 100% (1932/1932), 37.69 MiB | 9.26 MiB/s, done.
Total 1932 (delta 283), reused 0 (delta 0)
remote: Resolving deltas: 100% (283/283), done.
To git@10.0.0.5:root/jeesns.git
* [new branch] master -> master
分支 master 設置為跟蹤來自 origin 的遠程分支 master。
此時查看項目,代碼已經成功上傳到gitlab
3.5 創建一個新的版本庫
參照提示進行操作,首先在gitlab上創建新的版本庫,接着客戶端進行操作
git clone git@10.0.0.5:root/12345.git #將遠程服務器項目的內容clone下來
cd 12345 #進入該項目的文件夾
touch README.md #新建readme文件
git add README.md #將新的文件添加到git的暫存區
git commit -m "add README" #將暫存區的文件提交到某一個版本保存下來,並加上注釋
git push -u origin master #將本地的更改提交到遠程服務器
git 中clone過來的時候,git不會對比本地和服務器的文件,也就不會有沖突,建議確定完全覆蓋本地的時候用clone,不確定會不會有沖突的時候用git pull,將遠程服務器的代碼download下來
3.6 已存在git版本庫
cd existing_repo
git remote rename origin old-origin #重命名
git remote add origin git@10.0.0.5:root/12345.git #添加遠程項目地址
git push -u origin –all #上傳
git push -u origin --tags #上傳tag(分支)
3.7 基本操作總結及其他交互操作
git init //初始化
git add main.cpp //將某一個文件添加到暫存區
git add . //將文件夾下的所有的文件添加到暫存區
git commit -m 'note' //將暫存區中的文件保存成為某一個版本
git log //查看所有的版本日志
git status //查看現在暫存區的狀況
git diff //查看現在文件與上一個提交-commit版本的區別
git reset --hard HEAD^ //回到上一個版本
git reset --hard XXXXX //XXX為版本編號,回到某一個版本
git pull origin master //從主分支pull到本地
git push -u origin master //從本地push到主分支
git pull //pull默認主分支
git push //push默認主分支
更多git命令可參考:https://www.yiibai.com/git/git_push.html
4、gitlab郵件功能配置
4.1 配置
以163郵箱為例
[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '郵件用戶名@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab CE'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "郵件用戶名@163.com"
gitlab_rails['smtp_password'] = "郵件帳號的授權碼"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
user['git_user_email'] = "郵件用戶名@163.com"
[root@gitlab tools]# gitlab-ctl reconfigure #重新加載配置
qq郵箱配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "******@qq.com"
gitlab_rails['smtp_password'] = "授權碼"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '******@qq.com'
4.2 郵箱測試
命令行測試:
執行 gitlab-rails console進入控制台
輸入Notify.test_email('收件人郵箱', '郵件標題', '郵件正文').deliver_now
命令行測試成功,可以在郵箱中查收
為用戶添加一個郵箱
點擊增加,並登陸郵箱查看,點擊確認即可增加郵箱
忘記密碼郵箱發送郵件測試
查看郵箱信息