上一篇文章 CI 系統(tǒng)搭建:一. 基礎環(huán)境設置、規(guī)劃 大概規(guī)劃了下環(huán)境,本文主要用來記錄安裝 Gitlab 的過程,主要參考官方文檔 并沒有做太多的修改。
設置源
設置國內 163 apt 源
# vim /etc/apt/sources.list deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted # apt-get update
安裝依賴包
Gitlab 依賴包、庫
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev \ libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall \ libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate
安裝 markdown 文檔風格依賴包
sudo apt-get install -y python-docutils
安裝 git,Gerrit 依賴 gitweb,同時 GitLab 依賴 git 版本 >= 1.7.10,Ubuntu apt-get 默認安裝的是 1.7.9.5,當然不升級也是沒有問題的
sudo apt-get install -y git git-core gitweb git-review
升級 Git 版本(可選)
sudo apt-get install -y git gitweb sudo apt-get remove git-core sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential cd /tmp curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz cd git-1.8.4.1/ make prefix=/usr/local all sudo make prefix=/usr/local install # * 如果升級了 git 的版本,相應修改 Gitlab.yml 中的 git 腳本位置,這一步在 clone gitlab 后在操作* sudo -u git -H vim /home/git/gitlab/config/gitlab.yml bin_path: /usr/local/bin/git
Gitlab 需要收發(fā)郵件,安裝郵件服務器
sudo apt-get install -y postfix
如果安裝了 ruby1.8,卸載掉,Gitlab 依賴 2.0 以上
sudo apt-get remove ruby1.8
下載編譯 ruby2.0
mkdir /tmp/ruby && cd /tmp/ruby curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz cd ruby-2.0.0-p353 ./configure --disable-install-rdoc make sudo make install
修改 gem 源指向 taobao
gem source -r https://rubygems.org/ gem source -a http://ruby.taobao.org/
安裝 Bundel 命令
sudo gem install bundler --no-ri --no-rdoc
系統(tǒng)用戶
給 Gitlab 創(chuàng)建一個 git 用戶
sudo adduser --disabled-login --gecos 'GitLab' git
GitLab Shell
下載 Gitlab Shell,用來 ssh 訪問倉庫的管理軟件
cd /home/git sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git cd gitlab-shell sudo -u git -H cp config.yml.example config.yml
修改 gitlab-shell/config.yml
sudo -u git -H vim /home/git/gitlab-shell/config.yml gitlab_url: "http://gitlab.thstack.com/"
安裝 GitLab Shell
cd /home/git/gitlab-shell sudo -u git -H ./bin/install
Mysql
安裝 Mysql 包
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
給 Gitlab 創(chuàng)建 Mysql 數據庫并授權用戶訪問
sudo mysql -uroot -p > create database gitlabdb; > grant all on gitlabdb.* to 'gitlabuser'@'localhost' identified by 'gitlabpass';
GitLab
下載 GitLab 源代碼,并切換到最新的分支上
cd /home/git sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab cd gitlab sudo -u git -H git checkout 6-4-stable
配置 GitLab,修改 gitlab.yml,其中 host: 項和 gitlab-shell 中 gitlab_url 的主機一致
cd /home/git/gitlab sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml sudo -u git -H vim config/gitlab.yml host: gitlab.thstack.com email_from: gitlab@thstack.com support_mail: gitlab@thstack.com signup_enabled: true #開啟用戶注冊
創(chuàng)建相關目錄
cd /home/git/gitlab sudo -u git -H mkdir tmp/pids/ sudo -u git -H mkdir tmp/sockets/ sudo -u git -H mkdir public/uploads sudo -u git -H mkdir /home/git/repositories sudo -u git -H mkdir /home/git/gitlab-satellites
修改相關目錄權限
sudo chown -R git:git log/ tmp/ sudo chmod -R u+rwX log/ tmp/ public/uploads
修改 unicorn.rb 監(jiān)聽端口為:8081
cd /home/git/gitlab/ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb sudo -u git -H vim config/unicorn.rb listen "gitlab.thstack.com:8081", :tcp_nopush => true
配置 GitLab 訪問 mysql 數據庫設置
cd /home/git/gitlab/ sudo -u git cp config/database.yml.mysql config/database.yml sudo -u git -H vim config/database.yml *修改 Production 部分:* production: adapter: mysql2 encoding: utf8 reconnect: false database: gitlabdb pool: 10 username: gitlabuser password: "gitlabpass" host: localhost socket: /var/run/mysqld/mysqld.sock
設置 GitLab 使用指定郵箱發(fā)送郵件,注意 production.rb 的文件格式,開頭空兩格
cd /home/git/gitlab/ sudo -u git -H vim config/environments/production.rb #修改 :sendmail 為 :smtp config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.googlemail.com", :port => 587, :domain => 'thstack.com', :user_name => 'gitlab@thstack.com', :password => 'password', :authentication => :plain, :enable_starttls_auto => true } end # 上面內容加入到 end 里面
安裝 gem
修改 Gemfile 文件中源指向為 taobao
cd /home/git/gitlab/ sudo -u git -H vim Gemfile source "http://ruby.taobao.org/"
雖然在文件中指向了國內 taobao 源,但是依然會卡一會,耐心等待…
cd /home/git/gitlab/ sudo -u git -H bundle install --deployment --without development test postgres aws
初始化數據庫并激活高級功能
cd /home/git/gitlab/ sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
輸入 yes 來初始化數據庫、創(chuàng)建相關表,最后會輸出 GitLab Web 管理員用來登錄的賬號和密碼
Do you want to continue (yes/no)? yes ... Administrator account created: login.........admin@local.host password......5iveL!fe
設置 GitLab 啟動服務
cd /home/git/gitlab/ sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo update-rc.d gitlab defaults 21
設置 GitLab 使用 Logrotate 備份 Log
cd /home/git/gitlab/ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
檢查GitLab及其環(huán)境的配置是否正確:
cd /home/git/gitlab/ sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production System information System: Ubuntu 12.04 Current User: git Using RVM: no Ruby Version: 2.0.0p353 Gem Version: 2.0.14 Bundler Version:1.3.5 Rake Version: 10.1.0 GitLab information Version: 6.4.2 Revision: 214a013 Directory: /home/git/gitlab DB Adapter: mysql2 URL: http://gitlab.thstack.com HTTP Clone URL: http://gitlab.thstack.com/some-project.git SSH Clone URL: git@gitlab.thstack.com:some-project.git Using LDAP: no Using Omniauth: no GitLab Shell Version: 1.8.0 Repositories: /home/git/repositories/ Hooks: /home/git/gitlab-shell/hooks/ Git: /usr/bin/git
啟動 GitLab 服務
/etc/init.d/gitlab restart Shutting down both Unicorn and Sidekiq. GitLab is not running. Starting both the GitLab Unicorn and Sidekiq.. The GitLab Unicorn web server with pid 17771 is running. The GitLab Sidekiq job dispatcher with pid 17778 is running. GitLab and all its components are up and running
最后編譯一下
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Nginx
安裝 Nginx 包
sudo apt-get install -y nginx
配置 Nginx
cd /home/git/gitlab sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab sudo vim /etc/nginx/sites-available/gitlab listen *:80 default_server; server_name gitlab.thstack.com; proxy_pass http://gitlab.thstack.com:8081;
啟動 Nginx
/etc/init.d/apache2 stop /etc/init.d/nginx restart
訪問
用瀏覽器訪問: http://gitlab.thstack.com 用戶名:admin@local.host 密碼:5iveL!fe
2: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/insta llation.md
界面簡單使用
使用 admin@local.host 賬號登錄: 
登錄后系統(tǒng)讓修改密碼,先修改密碼: 
修改完密碼后,用新密碼登錄一下,然后修改 Admin 用戶得郵箱地址為:admin@thstack.com 
點擊保存更改后,系統(tǒng)會自動給剛才輸入的郵箱地址發(fā)送一封確認修改信息,點擊郵件內容中的連接后會自動用新賬號郵箱登錄。
創(chuàng)建一個 GROUP:

輸入 Group 名字為:DevGroup 
點擊創(chuàng)建項目: 
創(chuàng)建一個項目,名為:OpenStack,這個項目屬于 DevGroup: 
創(chuàng)建完項目后,點擊添加 ssh 密鑰: 
生成 admin@thstack.com 郵箱密鑰: 
在界面輸入剛才生成得密鑰: 
再注冊一個賬號,登錄頁面點擊注冊按鈕: 
注冊一個 Longgeek 用戶,輸入郵箱、密碼,然后去輸入得郵箱驗證: 
創(chuàng)建一個 Longgeek 用戶,并生成密鑰: 
用 longgeek@thstack.com 用戶登錄 GitLab,添加剛才生成得密鑰到 sshkey 里: 
用 admin@thstack.com 用戶登錄 GitLab,把 longgeek@thstack.com 添加到 DevGroup 組中,權限是 Reporter,這樣 longgeek 用戶也可以訪問 OpenStack 這個項目,不過沒有權限直接 Push: 
用 longgeek@thstack.com 用戶登錄就可以看到 OpenStack 項目: 
用 longgeek@thstack.com clone 項目,嘗試 push: 
很顯然 longgeek 用戶是沒有 push 到 master 分支得權限。接下來會安裝 Gerrit、Jenkins。以及它們三個如何整合成流程。請參考后面得文章。