非root怎麼搭建gitlab伺服器
㈠ docker快速部署gitlab代碼倉庫
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
GitLab由烏克蘭程序員DmitriyZaporozhets和ValerySizov開發,它使用 Ruby語言 寫成。後來,一部分用 Go語言 重寫。截止2018年5月,該公司約有290名團隊成員,以及2000多名開源貢獻者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O』ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等組織使用。
Git、Github、Gitlab的區別:
• Git
一種代碼版本管理系統,可以理解為標准或者統稱。
• Github
產品名稱,基於git開發的代碼管理系統,必須公開於互聯網上的公共倉庫,安全較低,私有項目需要另外付費。
• Gitlab
產品名稱,基於git開發的私有代碼管理系統,開源免費、可自行管理的私有倉庫,安全較高。
• 其它Git
msysGit、 Gitee(碼雲)、Gitea、 Gogs、 GitBucket類似於Github、Gitlab
下面我們介紹如何用docker快速部署一套功能強大的gitlab-ce社區版代碼倉庫。
第一步、centos 7.6安裝、配置IP、dns、網關等(略)
第二步、安裝docker安裝,參考作者前幾天的文章《centos 7下安裝docker》
https://www.toutiao.com/i6994343127452566054/
第三步、安裝docker-compose,參考作者前幾天的文章《使用docker-compose運行docker容器》
https://www.toutiao.com/i6994600889604440608/
第四步、下載gitlab-ce 13.12.10官方鏡像
docker pull gitlab/gitlab-ce:13.12.10-ce.0
第五步、建立相關目錄結構,配置目錄許可權
mkdir -p /data/gitlab/config
mkdir -p /data/gitlab/data
mkdir -p /data/gitlab/logs
第六步、建立docker-compose.yml
cd /data/gitlab && vi docker-compose.yml
docker-compose.yml具體配置和說明放本文章後面。
第七步、使用dc up -d起動容器
cd /data/gitlab && dc up -d
等待幾分鍾後服務初始化完成,使用宿主機IP在瀏覽器上進入gitlab,配置root管理員的密碼。一套功能強大的gitlab代碼倉庫搭建完成,關於gitlab的具使用,後面會推出相關視頻/文章說明。
附:docker-compose.yml
version: '3.6' #配置編排的版本
services:
gitlab:
image: gitlab/gitlab-ce:13.12.10-ce.0
TZ: 'Asia/Shanghai' #配置容器時區,不會有8小時差異
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://172.18.95.158' #伺服器訪問地址,也可以是域名
gitlab_rails['time_zone'] = 'Asia/Shanghai' #配置gitlab服務的時區
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" #管理員郵箱smtp地址
gitlab_rails['smtp_port'] = 465 #管理員郵箱伺服器埠
gitlab_rails['smtp_user_name'] = "[email protected]" #管理員郵箱地址
gitlab_rails['smtp_password'] = "ZSfS11AssBXX" #管理員郵箱密碼,配置後才可以給用戶發郵件等信息
gitlab_rails['smtp_domain'] = "xxxxxx.com" #管理員郵箱域名
gitlab_rails['smtp_authentication'] = "login" #管理員郵箱的驗證方式為login
gitlab_rails['smtp_enable_starttls_auto'] = true #使用安全加密方式登陸管理員郵箱
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]' #管理員郵箱賬號
gitlab_rails['gitlab_shell_ssh_port'] = 22
ports: #放開gitlab 80埠,後面我們用80埠訪問gitlab
- '80:80'
volumes: #掛載配置、數據持久化、日誌目錄
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab
- ./logs:/var/log/gitlab
㈡ 如何搭建git伺服器 windows
GitLab是由Ruby語言開發的基於linux的Git伺服器,是我見過的最強大的Git伺服器。發現它之後,立即決定將Git伺服器換成GitLab。但安裝好GitLab之後面臨一個問題,如何將伺服器上的git項目直接導入到GitLab,之前的Git伺服器是由是git+apache搭建的(詳見在Linux上用Apache搭建Git伺服器)。在網上發現了這篇文檔——,並按之進行了操作。1)設置存放代碼庫的主目錄vi/etc/gitlab/gitlab.rb比如這里設置為:git_data_dir"/gitlab/repos"2)訪問剛搭建的GitLab站點,創建一個group,比如cnblogs。這時會在/gitlab/repos下創建/gitlab/repos/repositories/cnblogs文件夾。然後在/gitlab/repos/repositories/創建一個文件夾,比如cnblogs3)將現有的所有git項目文件復制到這個文件夾cp-r/data/git/*/gitlab/repos/repositories/cnblogs4)修改一下復制過來的文件夾的所有者:chown-Rgit:git/gitlab/repos/repositories/cnblogs5)運行GitLab導入命令cd/var/opt/gitlabgitlab-rakegitlab:import:repos等了一段時間之後,顯示done,卻一個項目也沒導入進來。經研究發現,在導入時,GitLab只認文件夾名以.git結尾的項目。於是,將要導入的項目文件夾名稱加上.git後綴,再次進行導入。結果顯示導入成功,比如:Processingcnblogs/CNBlogsJob.git*CreatedCNBlogsJob(cnblogs/CNBlogsJob.git)Done!可以是GitLab站點上卻看不到已導入的項目。多次努力,也沒能解決這個問題。後來,實在沒法,改為手動導入,導入方法如下:1)在GitLab站點上創建與要導入的項目同名的項目。2)進入剛創建的項目文件夾cd/gitlab/repos/repositories/cnblogs/項目名稱.git3)刪除該文件下的所有文件rm-rf*4)將要導入的項目文件夾下的所有文件復制過來cp-r/data/git/CNBlogsJob/*/gitlab/repos/repositories/cnblogs/CNBlogsJob.git就這樣將項目一個一個地導入進來。5)導入完成後,修改一下導入的所有項目的文件所有者chown-Rgit:git/gitlab/repos/repositories/cnblogs如果不修改所有者,客戶端無法進行gitpush。就這樣手動地完成了現有Git項目的導入。備註:操作系統是CentOS6.2,GitLab版本是7.8.4。
㈢ 如何在 CentOS 上安裝 Gitlab
首先安裝 EPEL 和編譯依賴庫
$ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
如果你是非 64 位,去上面的網址找到適合你發行版的最新版本的 epel rpm
$ yum -y update
$ yum -y install gcc gcc-c++ make autoconf libyaml-devel gdbm-devel ncurses-devel openssl-devel zlib-devel readline-devel curl-devel expat-devel gettext-devel tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel sendmail patch libyaml* pcre-devel sqlite-devel vim
安裝 python 2.7+
Gitlab 要求 Python 2.5.5+ 以及 Ruby 1.9+
系統 Python 默認是 2.6.x,如果你想把 Python 升級到目前比較流行的 2.7.x 就參照下面步驟,否則直接跳過。(Gitlab 目前不支持 Python 3.0)
$ mkdir /tmp/gitlab && cd /tmp/gitlab
$ curl --progress http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz | tar xvf
$ cd Python-2.7.5
$ ./configure --prefix=/usr/local
$ make && make altinstall
安裝好之後,需要做兩件事情,替換默認 python 的版本至最新版本,
$ sudo ln -s /usr/local/bin/python2.7 /usr/local/bin/python
因為系統默認 PATH 的定址路徑是 /usr/local/bin
最後看下 Python 版本是否是剛剛安裝的版本:
$ python --version
由於 yum 是 python 的一個 mole,所以這塊修改可能會引起無法調用 yum 腳本,所以需要修改這個文件 /usr/bin/yum 的第一行為 !#/usr/bin/python2.6
安裝 Ruby 2.0
Ruby 1.9 和 2.0 的特性差別不大,索性升級至最新 2.0 版本即可
$ cd /tmp/gitlab
$ curl --progress http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
$ cd ruby-2.0.0-p247
$ ./configure
$ make
$ make install
ruby 2.0 已經內置 gem (v2.0.3),只需要安裝 bundler
$ gem install bundler
若在執行 sudo ruby 或 sudo gem 找不到命令,因為編譯的路徑配置到了 /usr/local/bin,我們只需要做下軟鏈接到 root 用戶可以找到的 $PATH 路徑:
$ ln -s /usr/local/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/bin/gem /usr/bin/gem
$ ln -s /usr/local/bin/bundle /usr/bin/bundle
安裝 Git 和 Gitolite
$ yum -y install git-all gitolite
安裝 Nginx
$ yum -y install nginx
$ service nginx start
nginx 需要從 EPEL 中安裝,默認系統沒有 nginx 包。
安裝 Mysql 和 Redis
Gitlab 要求強制安裝 redis 處理一些數據,另外支持 MySQL 和 PostgreSQL,這里主要以 MySQL 為例
$ yum -y install mysql mysql-devel mysql-server redis
配置 Mysql 和 gitlab 需要的用戶和資料庫
$ service mysqld start
$ mysql -u root
$ mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
$ mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_proction` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
$ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_proction`.* TO 'gitlab'@'localhost';
$ mysql> \q
Redis 使用默認配置即可,直接啟動
$ service redis start
添加 Gitlab 用戶
$ useradd -c 'GitLab' git
CentOS 的命令沒有辦法直接禁止用戶的訪問的參數,需要用下面命令:
$ passwd -l git
安裝 Gitlab-shell
使用 root 賬戶切換到 git 賬戶下操作,可以比官方教程省去一些麻煩的輸入
$ su git && cd /home/git
$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell
通過 git tag 查看最新版本並切換之
$ git checkout v1.7.1
編輯配置文件修改你要設定的域名(domain),比如 http://gitlab.dev/
$ vim config.yml
完成之後執行安裝腳本
$ ./bin/install
安裝 Gitlab
$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd /home/git/gitlab
通過 git tag 查看最新版本並切換之
$ git checkout 6.0.1
這里需要配置的東西多一些,這里參考官方的文檔,也可以安裝我下面的步驟來:
$ cd /home/git/gitlab
復制配置文件,修改 host 相關的配置項,主要是 domain 要和上面的 http://gitlab.dev
$ cp config.yml{.example,}
$ vim config/gitlab.yml
確認 gitlab 以下目錄的許可權是否正確
$ mkdir tmp/pids/
$ mkdir tmp/sockets/
$ chown -R git log/
$ chown -R git tmp/
$ chmod -R u+rwX log/
$ chmod -R u+rwX tmp/
$ chmod -R u+rwX tmp/pids/
$ chmod -R u+rwX tmp/sockets/
創建 satellites 目錄,這個目錄是保存各個用戶的倉庫
$ mkdir /home/git/gitlab-satellites
創建 uploads 目錄(為什麼 gitlab 不在項目中創建呢= =!)
$ mkdir public/uploads
$ chmod -R u+rwX public/uploads
復制 unicorn 配置文件
$ cp config/unicorn.rb{.example,}
設置 ruby web 容器的參數,比如 2GB RAM 伺服器可以設置 3 個 worker。
如果系統其他服務佔用了 unicorn 的埠,記得改名。
$ vim config/unicorn.rb
設置一些 git 全局參數
$ git config --global user.name "GitLab"
$ git config --global user.email "gitlab@localhost"
$ git config --global core.autocrlf input
配置 gitlab 資料庫設置
$ cp config/database.yml{.mysql,}
$ vim config/database.yml
$ chmod o-rwx config/database.yml
安裝必需的 Ruby Gems
$ cd /home/git/gitlab
$ [sudo] gem install charlock_holmes --version '0.6.9.4'
$ bundle install --deployment --without development test postgres aws
初始化資料庫數據(執行輸入 Yes 繼續創建)
$ bundle exec rake gitlab:setup RAILS_ENV=proction
設置 init 腳本
$ sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
$ sudo chmod +x /etc/init.d/gitlab
檢查 Gitlab 狀態
$ bundle exec rake gitlab:env:info RAILS_ENV=proction
啟動 gitlab 服務
$ sudo service gitlab start
再起檢查,保證所有項目都是綠色
$ bundle exec rake gitlab:check RAILS_ENV=proction
配置 nginx
根據 nginx 的安裝路徑適當修改下面的路徑即可,我們先把 gitlab 提供的配置文件拷貝過去
$ sudo mkdir -p /etc/nginx/conf/sites/
$ sudo cp lib/support/nginx/gitlab /etc/nginx/conf/sites/gitlab.conf
根據 nginx 版本和不同發行版的不同,配置結構可能不同根據你的實際情況載入 gitlab.conf
修改 gitlab.conf 的 YOUR_SERVER_FQDN 為上面設置的 domain。
最後修改 nginx.conf 或者 default.conf 載入 /etc/nginx/conf/site 下所有 conf 文件
http {
include /etc/nginx/conf/site/*.conf;
server {
…
}
}
保存後,重啟各個服務
$ sudo service nginx reload
$ sudo service gitlab restart
開始 Gitlab 之旅
配置好 hosts 即可訪問 gitlab.dev
$ echo "127.0.0.1 gitlab.dev" >> /etc/hosts
默認的用戶名密碼:
[email protected]
5iveL!fe
各種坑
1. 錯誤日誌報許可權錯誤
2013/11/07 00:42:21 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/favicon.ico.html" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:21 [crit] 15875#0: *2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab.socket failed (13: Permission denied) while connecting to upstream, client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/favicon.ico", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET / HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public//index.html" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET / HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/.html" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET / HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab.socket failed (13: Permission denied) while connecting to upstream, client: 33.33.33.1, server: gitlab.web.lo, request: "GET / HTTP/1.1", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/favicon.ico" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/favicon.ico/index.html" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 stat() "/home/git/gitlab/public/favicon.ico.html" failed (13: Permission denied), client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", host: "gitlab.web.lo"
2013/11/07 00:42:31 [crit] 15875#0: *2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab.socket failed (13: Permission denied) while connecting to upstream, client: 33.33.33.1, server: gitlab.web.lo, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/favicon.ico", host: "gitlab.web.lo"
解決方案:
$ (sudo) chmod o+x /home/git
2. 8080 埠被佔用
這樣主要是因為 nginx 的配置是做 unicorn 的代理轉發,實際上 gitlab 是由 unicorn 容器驅動,而在配置里默認綁定的是 8080 埠
$ vim /home/git/gitlab/config/unicorn.rb
找到 listen "127.0.0.1:8080", :tcp_nopush => true 修改成其他未佔用的埠號即可。
㈣ gitlab的簡單教程
前言:在上一篇中,已經成功使用docker搭建了Gitlab伺服器,這里就簡單摸索一下大概的使用教程,我自己也是初學者,就大概簡單記錄一下而已,如果有什麼問題,歡迎留言。
1、root用戶登錄後,創建項目
2、新增用戶
3、項目關聯用戶
4、本地機子安裝git,使用 git --version 確定是否安裝成功
5、創建本地倉庫,建立完成後,在目錄下會生成一個「.git」目錄,這樣就能執行git語句了。
git init :是在當前目錄下建立倉庫;
git init 文件路徑 :指定一個目錄創建倉庫
6、也可以從伺服器上克隆一個庫
ssh克隆: git clone [email protected]:root/test-y.git
http克隆: git clone http://gitlab.example.com/root/test-y.git
輸入git的用戶名、密碼即可(Gitlab上注冊/創建的)
7、創建一個分支,並推送到伺服器
推送到伺服器時遇到了一個問題,報錯信息如下(上圖2):
原因:本地新建的分支與遠程分支之間沒有連接起來
解決:直接按提示信息重新執行 git push --set-upstream origin dev1 即可
8、Gitlab服務端,可查看已經推送的信息
9、點擊「Create merge request」按鈕,將dev分支內容合並到主分支上
10、審核人員收到合並消息,審核合並請求。
11、審核通過,合並分支
到這里,大致流程就全部結束了。
git還常用到的一個語句 git pull 從伺服器上拉取更新
㈤ 如何在 Ubuntu/Fedora/Debian 中安裝 GitLab
1. 安裝先決條件
首先,我們需要安裝 GitLab 所依賴的軟體包。我們將安裝 curl,用以下載我們所需的文件;安裝openssh-server ,以此來通過 ssh 協議登錄到我們的機器上;安裝ca-certificates,用它來添加 CA 認證;以及 postfix,把它作為一個 MTA(Mail Transfer Agent,郵件傳輸代理)。
註: 若要安裝 GitLab 社區版,我們需要一個至少包含 2 GB 內存和 2 核 CPU 的 linux 機器。
在 Ubuntu 14 .04/Debian 8.x 中
鑒於這些依賴包都可以在 Ubuntu 14.04 和 Debian 8.x 的官方軟體倉庫中獲取到,我們只需通過使用 apt-get 包管理器來安裝它們。為此,我們需要在一個終端或控制台中執行下面的命令:
#apt-get install curl openssh-server ca-certificates postfix
install dependencies gitlab ubuntu debian
在 Fedora 22 中
在 Fedora 22 中,由於 yum 已經被棄用了,默認的包管理器是 dnf。為了安裝上面那些需要的軟體包,我們只需運行下面的 dnf 命令:
# dnf install curl openssh-server postfix
install dependencies gitlab fedora
2. 打開並開啟服務
現在,我們將使用我們默認的初始化系統來打開 sshd 和 postfix 服務。並且我們將使得它們在每次系統啟動時被自動開啟。
在 Ubuntu 14.04 中
由於在 Ubuntu 14.04 中安裝的是 SysVinit 初始化系統,我們將使用 service 命令來開啟 sshd 和 postfix 守護進程:
# service sshd start
# service postfix start
現在,為了使得它們在每次開機啟動時被自動開啟,我們需要運行下面的 update-rc.d 命令:
# update-rc.d sshd enable
# update-rc.d postfix enable
在 Fedora 22/Debian 8.x 中
鑒於 Fedora 22 和 Debian 8.x 已經用 Systemd 代替了 SysVinit 來作為默認的初始化系統,我們只需運行下面的命令來開啟 sshd 和 postfix 服務:
#systemctl start sshd postfix
現在,為了使得它們在每次開機啟動時可以自動運行,我們需要運行下面的 systemctl 命令:
#systemctl enable sshd postfix
Created symlink from/etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
Created symlink from/etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.
3. 下載 GitLab
現在,我們將使用 curl 從官方的 GitLab 社區版倉庫下載二進制安裝文件。首先,為了得到所需文件的下載鏈接,我們需要瀏覽到該軟體倉庫的頁面。為此,我們需要在運行著相應操作系統的 linux 機器上運行下面的命令。
在 Ubuntu 14.04 中
由於 Ubuntu 和 Debian 使用相同的 debian 格式的安裝包,我們需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 下搜索所需版本的 GitLab,然後點擊有著 ubuntu/trusty 標簽的鏈接,即我們運行著的 Ubuntu 14.04。接著一個新的頁面將會出現,我們將看到一個下載按鈕,然後我們在它的上面右擊,得到文件的鏈接,然後像下面這樣使用 curl 來下載它。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.1.2-ce.0_amd64.deb
Downloading Gitlab Ubuntu
在 Debian 8.x 中
與 Ubuntu 類似,我們需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 頁面中搜索所需版本的 GitLab,然後點擊帶有 debian/jessie 標簽的鏈接,即我們運行著的 Debian 8.x。接著,一個新的頁面將會出現,然後我們在下載按鈕上右擊,得到文件的下載鏈接。最後我們像下面這樣使用 curl 來下載該文件。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_8.1.2-ce.0_amd64.deb/download
Downloading Gitlab Debian
在 Fedora 22 中
由於 Fedora 使用 rpm 文件來作為軟體包,我們將在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms 頁面下搜索所需版本的 GitLab,然後點擊所需發行包的鏈接,這里由於我們運行的是 Fedora 22,所以我們將選擇帶有 el/7 標簽的發行包。一個新的頁面將會出現,在其中我們可以看到一個下載按鈕,我們將右擊它,得到所需文件的鏈接,然後像下面這樣使用 curl 來下載它。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm/download
Downloading Gitlab Fedora
4. 安裝 GitLab
在相應的軟體源被添加到我們的 linux 機器上之後,現在我們將使用相應 linux 發行版本中的默認包管理器來安裝 GitLab 社區版。
在 Ubuntu 14.04/Debian 8.x 中
要在運行著 Ubuntu 14.04 或 Debian 8.x linux 發行版本的機器上安裝 GitLab 社區版,我們只需運行如下的命令:
# dpkg -i gitlab-ce_8.1.2-ce.0_amd64.deb
Installing Gitlab Ubuntu Debian
在 Fedora 22 中
我們只需執行下面的 dnf 命令來在我們的 Fedora 22 機器上安裝 GitLab。
# dnf install gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm
Installing Gitlab Fedora
5. 配置和開啟 GitLab
GitLab 社區版已經成功地安裝在我們的 linux 系統中了,接下來我們將要配置和開啟它了。為此,我們需要運行下面的命令,這在 Ubuntu、Debian 和 Fedora 發行版本上都一樣:
# gitlab-ctl reconfigure
Reconfiguring Gitlab
6. 允許通過防火牆
假如在我們的 linux 機器中已經啟用了防火牆程序,為了使得 GitLab 社區版的 web 界面可以通過網路進行訪問,我們需要允許 80 埠通過防火牆,這個埠是 GitLab 社區版的默認埠。為此,我們需要運行下面的命令。
在 iptables 中
Ubuntu 14.04 默認安裝和使用的是 iptables。所以,我們將運行下面的 iptables 命令來打開 80 埠:
# iptables -A INPUT -p tcp -m tcp --dport 80-j ACCEPT
# /etc/init.d/iptables save
在 firewalld 中
由於 Fedora 22 和 Debian 8.x 默認安裝了 systemd,它包含了作為防火牆程序的 firewalld。為了使得 80 埠(http 服務) 能夠通過 firewalld,我們需要執行下面的命令。
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success
7. 訪問 GitLab Web 界面
最後,我們將訪問 GitLab 社區版的 web 界面。為此,我們需要將我們的 web 瀏覽器指向 GitLab 伺服器的網址,根據我們的配置,可能是 http://ip-address/ 或 http://domain.com/ 的格式。在我們成功指向該網址後,我們將會看到下面的頁面。
Gitlab Login Screen
現在,為了登錄進面板,我們需要點擊登錄按鈕,它將詢問我們的用戶名和密碼。然後我們將輸入默認的用戶名和密碼,即 root 和 5iveL!fe 。在登錄進控制面板後,我們將被強制要求為我們的 GitLab root 用戶輸入新的密碼。
Setting New Password Gitlab
8. 創建倉庫
在我們成功地更改密碼並登錄到我們的控制面板之後,現在,我們將為我們的新項目創建一個新的倉庫。為此,我們需要來到項目欄,然後點擊 新項目 綠色按鈕。
Creating New Projects
接著,我們將被詢問給我們的項目輸入所需的信息和設定,正如下面展示的那樣。我們甚至可以從其他的 git 倉庫提供商和倉庫中導入我們的項目。
Creating New Project
做完這些後,我們將能夠使用任何包含基本 git 命令行的 Git 客戶端來訪問我們的 Git 倉庫。我們可以看到在倉庫中進行的任何活動,例如創建一個里程碑,管理問題,合並請求,管理成員,便簽,Wiki 等。
Gitlab Menu
總結
GitLab 是一個用來管理 git 倉庫的很棒的開源 web 應用。它有著漂亮的帶有諸多酷炫功能的響應式界面。它還打包有許多酷炫功能,例如管理群組,分發密鑰,持續集成,查看日誌,廣播消息,鉤子,系統 OAuth 應用,模板等。(註:OAuth 是一個開放標准,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯系人列表),而無需將用戶名和密碼提供給第三方應用。--- 摘取自 維基網路上的 OAuth 詞條) 它還可以和大量的工具進行交互如 Slack,Hipchat,LDAP,JIRA,Jenkins,有很多類型的鉤子和完整的 API。它至少需要 2 GB 的內存和 2 核 CPU 來流暢運行,支持多達 500 個用戶,但它也可以被擴展到多個工作伺服器上。
㈥ 個人Gitlab搭建及配置
訪問http:// ip地址
設置密碼,然後通過 root + password 登錄,當然也可以自己新建用戶。
之後,將要訪問此GitLab的伺服器上的公鑰添加進來就可以進行愉快的玩耍了 (Linux 系統一般在 /root/.ssh 目錄下,Windows一般在 C:\Users\用戶名.ssh 目錄下)
當你完成以上操作之後,你會發現你倉庫中的SSH和HTTP地址是下圖這樣的,所以我們要對GitLab進行IP顯示的配置及埠配置。
修改如下項
修改 gitlab.rb
當你完成以上配置後,還是不能通過 http:// ip location : prot 來訪問你的GitLab倉庫。
修改GitLab ngnix 監聽埠
完成以上設置之後,就可以通過 IP + PORT 來訪問你的GitLab庫了,同時倉庫的HTTP地址顯示也正常
修改SSH埠首先要修改伺服器的SSH埠,這會影響到 Xshell 對伺服器的連接。
完成以上操作之後,一切就都正常了
㈦ ubuntu搭建gitlab伺服器,執行 gitlab-ctl reconfigure,顯示chef client failed。
原因:ubuntu14.04版本應該是 trusty 版本,而下載的gitlab軟體包卻是 xenial版本的
解決:下載trusty版本的 gitlab 進行安裝
查看ubuntu版本的方法:
root@kickseed:~# lsb_release -a
No LSB moles are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
㈧ GitLab搭建個人(或公司)版本控制系統
說明:Git,Github,GitLab三者關系。
Git - 是一款自由和開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。(svn是集中化的版本控制系統)。
GitHub - 是一個面向開源及私有軟體項目的託管平台(也就一個網站),提供給用戶空間創建git倉儲,保存用戶的一些數據文檔或者代碼等。它可以託管各種git庫,並提供一個web界面。被戲稱為「全世界最大的同性交流社區」。
GitLab - 基於Git的項目管理軟體。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
當然啦國內開源中國出的「碼雲」,第一次聽得人還以為是「馬雲」。我醬紫。它跟Github功能差不多,都能建立公有和私有的倉庫。不過嘛感覺有點封閉,社區沒有Github熱鬧。
有的人就說啦,我完全可以在Github或者GitLab上做遠端代碼倉庫,為啥還要倒騰GitLab自建代碼託管系統?就一個字: 「代碼安全性」(公司保密規定)。 對於公司來說,GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:
一、自建代碼託管系統都需要做些什麼工作?
1. 選擇開源軟體
Git 大家族的 GitLab ,它提供了完善的用戶許可權管理,除了涵蓋 Git 所有的功能,同時又提供方便的後台管理。分別有CE(社區版)、EE(企業版)、OM(RPM 包完整版)三個版本,目前市面上開發者們的普遍選擇是使用 CE 版的源碼,成本較低且相對方便。
2. 硬體設施方面
如果是對於中小型企業來講,自建機房一般成本較高,所以除非是大型集團企業。現在市面上存在太多的雲伺服器廠商,平均價格多在 5000元/年以上,都是不錯的選擇。
可能遇到的坑:
3.由於個人眼界以及信息不對稱,目前大部分公司都是在公司區域網內自行用GitLab搭建代碼託管系統。部署Gitlab 是對伺服器有配置要求的建議是CPU兩核,內存4G以上。個人經驗,勿噴啦。
二、搭建過程(這里僅是作者接觸的,其實還有很多更高級的盤法)
Gitlab的服務構成
1.搭建方法分為:傳統方式安裝GitLab和Docker安裝(推薦)。
2.傳統安裝過程(平台使用centos7安裝)
安裝和配置必要的依賴項:
安裝Postfix以發送通知郵件:
在安裝Postfix期間,可能會出現配置屏幕。選擇「Internet Site」並按enter鍵。使用您的伺服器的外部DNS以「mail name」並按enter。如果出現額外的屏幕,繼續按enter鍵接受默認值。
添加GitLab鏡像源並安裝gitlab伺服器:
注意這里設置的埠不能被佔用,默認是8080埠,如果8080已經使用,請自定義其它埠,並在防火牆設置開放相對應得埠。
重置並啟動GitLab:
訪問 GitLab頁面:如果沒有域名,直接輸入伺服器ip和指定埠進行訪問
獲取/修改超級管理員root的密碼:
最後我們使用默認的賬號:root 和剛剛設置好的密碼12345678進行登錄。
後面的步驟配置SSH key,git Bash的global config等初始化設置跟GitHub一樣。可是還有一點就是「漢化」。(英文不好的小夥伴)但是有一定風險,後面我打開報502錯誤。有兩種方法:用git比對出英文與中文的補丁,將英文打補丁。第二是直接下載中文版,替換英文。
3.Docker安裝(推薦)
(1)配置docker鏡像
直接從 docker hub 獲取的話速度非常慢,所以需要配置一個鏡像。我使用的是 cloud.io提供的加速器,速度很快。
(2)獲取 GitLab 鏡像
下載完成後,查看鏡像列表
(3)啟動容器
3個--publish指定容器與主機的埠映射,分別是 http、https、ssh
3個--volume指定數據卷的映射,分別是 gitlab 的 配置、日誌、數據
(4)配置外部訪問 URL
修改 gitlab 配置文件:
找到 external_url 這一項修改為自己伺服器的訪問地址:
保存後,重啟容器
(5)訪問
初次訪問時,gitlab 要求我們重置管理員密碼,修改完成後登錄。默認用戶root。
當然以上為個人實驗,公司裡面大部分為CTO等大佬已經搭建完畢,我們主要是折騰。
最後推薦個人用很順手的工具: SourceTree (可視化界面的Git),當然啦要想成為大牛或者裝13也好,還是從Git Bash里敲命令行。
㈨ 搭建GitLab伺服器
GitLab是GitHub的免費私有庫替代方案,並且安裝與配置都很方便。
GitLab要求最少4GB內存,支持小團隊使用沒問題,實測2GB內存的VPS基本沒法用,開swapfile也不行,動不動就60秒超時。因此4GB內存是必須的。
關於這一點,內存大戶主要是Unicorn,基於ruby的http伺服器。Unicorn會在啟動後預先佔用大部分內存,內存會隨著使用逐漸增長,並且不會釋放。根據GitLab和Unicorn的官方文檔,這不是它們的鍋,那麼這個鍋可能是ruby和rails了。解決方法是unicorn-work-kill,會根據請求次數和內存佔用自動重啟Unicorn。Omnibus版的GitLab是默認開啟的。
GitLab分為社區版和企業版,在未付費的情況下,兩者的功能是一樣的。並且社區版整合了CI/CD,因此可以滿足絕大部分的開發需求。
安裝包主要包括Omnibus整合包,Docker、AWS等的雲鏡像,以及一些第三方維護的版本。其中Omnibus直接整合了所有服務端組件,適合自用和練手。
安裝以Omnibus整合包為例,操作系統為Ubuntu16.04。
Gitlab需要 curl,openSSH 和 ca-certificates 這幾個組件:
不過伺服器系統一般自帶,所以是可選的。
郵件服務,用於GitLab發送找回密碼的郵件:
不過如果伺服器沒有域名的話,大部分郵箱會拒收郵件,而管理員帳號可以直接重置其他賬號的密碼,所以是可選的。
官方提供的腳本:
這個腳本會自動添加源到apt 的source list,以及安全key。另外,如果自己伺服器在國內,腳本會自動添加清華的鏡像,速度還行。
先更新apt緩存:
推薦使用 apt 而不是 apt-get ,前者大多數情況下更簡單一點。
然後是安裝:
其中 EXTERNAL_URL ,改成自己的域名。沒有域名的話,可以直接設置成IP的形式: http://1.2.3.4 ,這個推測跟nginx服務以及GitLab中的項目地址有關,所以最好正確設置。當然也可以之後在配置文件里更改。
安裝完成後,可以在配置文件中修改配置 /etc/gitlab/gitlab.rb 。
比如之前的 EXTERNAL_URL :
官方還有一個關於 unicorn 的優化建議:
默認值是2,如果伺服器只用於GitLab的話,官方建議是CPU核心數加一,可以提高伺服器的響應速度。不過如果內存只有4G,或者伺服器同時承載其他服務,就不要改了,以免內存不足。另外,這個參數最小值是2,設為1,伺服器可能會卡死。
配置完成後,刷新配置:
每次修改完 gitlab.rb ,都要刷新配置。
如果沒有報錯的話,GitLab就配置完畢並且正常運行了。接下來可以打開瀏覽器開始訪問了。