1. 程式人生 > >gitlab搭建與基本使用

gitlab搭建與基本使用

gitlab

一、git、github、gitlab的區別
Git是版本控制系統,Github是在線的基於Git的代碼托管服務。
GitHub是2008年由Ruby on Rails編寫而成。GitHub同時提供付費賬戶和免費賬戶。這兩種賬戶都可以創建公開的代碼倉庫,只有付費賬戶可以創建私有的代碼倉庫。
Gitlab解決了這個問題, 可以在上面創建免費的私人repo。
二、gitlab server搭建過程
yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
//10.x以後開始依賴policycoreutils-python
systemctl start postfix
systemctl enable postfix
gitlab的下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安裝gitlab:
[root@vm1 ~]# rpm -ivh gitlab-ce-10.7.2-ce.0.el7.x86_64.rpm
warning: gitlab-ce-10.7.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:gitlab-ce-10.7.2-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.

   *.                  *.
  ***                 ***
 *****               *****
.******             *******
********            ********

,,,,,,,,,**,,,,,,,,,
,,,,,,,,,,,
,,,,,,,,,,,
.,,,,,,,,,,,**,,,,,,,,,,,,
,,,,,,,,,
,,,,,,,,,.
,,,,,,,*,,,,,,
.,,,
,,,,
,*,.

 _______ __  __          __
/ ____(_) /_/ /   ____ _/ /_

/ / / / / / / `/ \
/ // / / // // // / // /
____/
/__/___
/_,/_.___/

Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting external_url
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

[root@vm1 ~]#

gitlab的配置文件 /etc/gitlab/gitlab.rb, 編輯如下:
[root@vm1 ~]# vim /etc/gitlab/gitlab.rb
[root@vm1 ~]# grep "^external_url" /etc/gitlab/gitlab.rb
external_url ‘http://192.168.60.119‘ 綁定監聽的域名或IP
[root@vm1 ~]#

使用gitlab-ctl reconfigure 自動配置,並安裝數據庫,初始化信息,如下所示(第一次使用配置時間較長):
[root@vm1 ~]# gitlab-ctl reconfigure
.....

使用gitlab-ctl start 啟動gitlab服務,如下所示:
[root@vm1 ~]# gitlab-ctl start
ok: run: gitaly: (pid 22896) 2922s
ok: run: gitlab-monitor: (pid 22914) 2921s
ok: run: gitlab-workhorse: (pid 22882) 2922s
ok: run: logrotate: (pid 22517) 2987s
ok: run: nginx: (pid 22500) 2993s
ok: run: node-exporter: (pid 22584) 2974s
ok: run: postgres-exporter: (pid 22946) 2919s
ok: run: postgresql: (pid 22250) 3047s
ok: run: prometheus: (pid 22931) 2920s
ok: run: redis: (pid 22190) 3053s
ok: run: redis-exporter: (pid 22732) 2962s
ok: run: sidekiq: (pid 22472) 3005s
ok: run: unicorn: (pid 22433) 3011s
[root@vm1 ~]#
[root@vm1 ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 22500 root 7u IPv4 50923 0t0 TCP :http (LISTEN)
nginx 22501 gitlab-www 7u IPv4 50923 0t0 TCP
:http (LISTEN)
[root@vm1 ~]#

修改配置文件,添加smtp郵件功能
[root@vm1 ~]# vim /etc/gitlab/gitlab.rb
[root@vm1 ~]# grep -P "^[^#].*smtp_|user_email|gitlab_email" /etc/gitlab/gitlab.rb
gitlab_rails[‘gitlab_email_enabled‘] = true
gitlab_rails[‘gitlab_email_from‘] = ‘[email protected]
gitlab_rails[‘gitlab_email_display_name‘] = ‘Admin‘
gitlab_rails[‘gitlab_email_reply_to‘] = ‘[email protected]
gitlab_rails[‘gitlab_email_subject_suffix‘] = ‘[gitlab]‘
gitlab_rails[‘smtp_enable‘] = true
gitlab_rails[‘smtp_address‘] = "smtp.exmail.qq.com"
gitlab_rails[‘smtp_port‘] = 25
gitlab_rails[‘smtp_user_name‘] = "[email protected]"
gitlab_rails[‘smtp_password‘] = "password"
gitlab_rails[‘smtp_domain‘] = "domain.cn"
gitlab_rails[‘smtp_authentication‘] = "login"
gitlab_rails[‘smtp_enable_starttls_auto‘] = true
gitlab_rails[‘smtp_tls‘] = false
user[‘git_user_email‘] = "[email protected]"

[root@vm1 ~]# gitlab-ctl reconfigure
......

[root@vm1 ~]# gitlab-ctl stop
ok: down: gitaly: 0s, normally up
ok: down: gitlab-monitor: 1s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: node-exporter: 1s, normally up
ok: down: postgres-exporter: 0s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 1s, normally up

[root@vm1 ~]# gitlab-ctl start
ok: run: gitaly: (pid 37603) 0s
ok: run: gitlab-monitor: (pid 37613) 0s
ok: run: gitlab-workhorse: (pid 37625) 0s
ok: run: logrotate: (pid 37631) 0s
ok: run: nginx: (pid 37639) 1s
ok: run: node-exporter: (pid 37644) 0s
ok: run: postgres-exporter: (pid 37648) 1s
ok: run: postgresql: (pid 37652) 0s
ok: run: prometheus: (pid 37660) 1s
ok: run: redis: (pid 37668) 0s
ok: run: redis-exporter: (pid 37746) 0s
ok: run: sidekiq: (pid 37750) 1s
ok: run: unicorn: (pid 37757) 0s

使用gitlab-rails console命令進行發送郵件測試,如下所示:
[root@vm1 ~]# gitlab-rails console
Loading production environment (Rails 4.2.10)
irb(main):001:0> Notify.test_email(‘[email protected]‘, ‘Message Subject‘, ‘Message Body‘).deliver_now

Notify#test_email: processed outbound mail in 2219.5ms

Sent mail to [email protected] (2469.5ms)
Date: Fri, 04 May 2018 15:50:10 +0800
From: Admin <[email protected]>
Reply-To: Admin <[email protected]>
To: [email protected]
Message-ID: <[email protected]>
Subject: Message Subject
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Message Body</p></body></html>

=> #<Mail::Message:70291731344240, Multipart: false, Headers: <Date: Fri, 04 May 2018 15:50:10 +0800>, <From: Admin <[email protected]>>, <Reply-To: Admin <[email protected]>>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):002:0>quit
[root@vm1 ~]#

在瀏覽器中輸入 http://192.168.60.119/ ,然後 change password: ,並使用root用戶登錄 即可 (後續動作根據提示操作)
修改密碼也可以:gitlab-rails console production
irb(main):001:0> user = User.where(id: 1).first // id為1的是超級管理員
irb(main):002:0>user.password = ‘yourpassword‘ // 密碼必須至少8個字符
irb(main):003:0>user.save! // 如沒有問題 返回true
exit // 退出
技術分享圖片

gitlab搭建與基本使用