GitLab安裝說明
http://blog.csdn.net/huangzhijie3918/article/details/51330425
GitLab,是一個使用 Ruby on Rails 開發的開源應用程序,與Github類似,能夠瀏覽源代碼,管理缺陷和註釋,非常適合在團隊內部使用。
gitlab是基於Ruby on Rails的,安裝和配置非常麻煩,不過有傻瓜安裝包,https://about.gitlab.com/downloads/,或者,https://bitnami.com/stack/gitlab/installer。但是這兩個包都是英文界面的,gitlab把界面提示寫在每一個rb文件裏了,所以,要用中文版的不能像redmine那樣設定一下就行了。
由於公司的操作系統普遍采用centos,為統一管理,我們仍在centos上進行安裝,官方沒有8.5.5在centos上的安裝文檔,參考Ubuntu安裝手冊https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md,以及7.0版在centos上的安裝手冊https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos
開始之前
在開始之前請先查看官方的剛需文檔: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md ,該文檔說明了系統,軟件和硬件等各方面的需求。詳細的了解這些,可以避免碰到很多怪異的問題。
安裝步驟總覽
- 更新倉庫源
- 安裝必須的軟件包
- 安裝Ruby
- 安裝Go語言
- 創建系統用戶
- 安裝數據庫Mysql
- 安裝Redis
- 安裝GitLab
- 安裝Nginx
0、更新倉庫源
這個比較簡單,安裝完成之後記的配置下網絡,使其可以在啟動時自動連接。而後需要升級系統和安裝一些相應的軟件和依賴包,以下逐一說明。
a、升級操作系統和安裝wget
$ sudo yum -y update
$ sudo yum -y install wget
升級完成後,系統版本是6.7。
b、增加EPEL安裝源
EPEL,即Extra Packages for Enterprise Linux,這個軟件倉庫裏有很多非常常用的軟件,而且是專門針對RHEL設計的,對RHEL標準yum源是一個很好的補充,完全免費使用,由Fedora項目維護,所以如果你使用的是RHEL,或者CentOS,Scientific等RHEL系的linux,可以非常放心的使用EPEL的yum源。
下載並安裝GPG key
$ sudo wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
檢驗下是否安裝成功
$ sudo rpm -qa gpg*
安裝epel-release-6-8.noarch包
$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
提示:不要在意x86_64,在i686的機器上一樣能使用。
c、增加PUIAS安裝源
PUIAS Linux是面向桌面和服務器的完整的操作系統,它靠編譯Red Hat Enterprise Linux的源代碼包來創建。除了這些上遊的軟件包外,該項目還提供一些其他的軟件倉庫:“Addons”包含了通常的Red Hat發行中未收入的額外軟件包,“Computational”提供專門針對科學計算的軟件,“Unsupported”則收入各種各樣的測試性軟件 包。該發行由美國普林斯頓 大學的高等研究所維護。
獲取/etc/yum.repos.d/PUIAS_6_computational.repo
$ sudo wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/install/centos/PUIAS_6_computational.repo
下載並安裝GPG key
$ sudo wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias
檢驗下是否安裝成功
$ sudo rpm -qa gpg*
Tips:安裝完EPEL和PUIAS兩個源後,可以檢測下:
$ sudo yum repolist
c、增加REMI安裝源
$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
默認地,REMI是禁用的。要檢查REMI是否已經成功安裝,使用這個命令。你會看到幾個REMI倉庫,比如remi、remi-php55和remi-php56。
$ yum repolist disabled | grep remi
從REMI倉庫中安裝一個包
如上所述,最好保持禁用REMI倉庫,只有在需要的時候再啟用。
要搜索或安裝REMI倉庫中的包,使用這些命令:
代碼如下:
$ sudo yum --enablerepo=remi search
$ sudo yum --enablerepo=remi install
Note: 安裝過程中需要手工編輯某些文件。通過下面命令可以將VIM設置為默認編輯器
安裝vim並設置為默認編輯器(不知都什麽原因,沒生效)
sudo yum -y install vim-enhanced
sudo update-alternatives --set editor /usr/bin/vim.basic
# For reStructuredText markup language support, install required package:
yum -y install python-docutils
1、安裝GitLab的所需依賴包和工具
a、安裝依賴包
$ su -
# yum -y groupinstall ‘Development Tools‘
# yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs
b、安裝git
確定Git版本在2.7.3及以上
git --version
系統默認版本為1.8.3,版本太老,刪除並通過源代碼安裝
刪除安裝的git
yum -y remove git
安裝git依賴包
$ sudo yum install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel
下載源碼並編譯安裝
mkdir /tmp/git && cd /tmp/git
curl --progress https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.gz | tar xz
cd git-2.8.2/
./configure
make
make prefix=/usr/local install
為確保$PATH環境變量生效,需要重新連接後執行git --version
當編輯文件 config/gitlab.yml 時(第5步), 修改 git -> bin_path 為 /usr/local/bin/git
c、安裝郵件服務器
接下來我們還要安裝一個郵件服務器,官方推薦使用postfix
yum install -y postfix
接下來選擇 ‘Internet Site‘ 並回車確定主機名
2、安裝Ruby
註意:當前支持的Ruby版本為2.1.x. Ruby 2.2 和2.3尚不支持。
下載並編譯:
su -
mkdir /tmp/ruby && cd /tmp/ruby
curl --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.8.tar.gz | tar xz
cd ruby-2.1.8
./configure --disable-install-rdoc
make
make prefix=/usr/local install
安裝完成後,重新登錄終端確保$PATH生效,檢測ruby的安裝成功與否:
$ which ruby
/usr/local/bin/ruby
$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
Gitlab的包使用bundler進行依賴關系管理,所以還得安裝。如果在國內的用戶請先修改Ruby的源服務器
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
gem sources -l
安裝bundle:
$ sudo gem install bundler --no-ri --no-rdoc
如果提示sudo: gem: command not found,使用root賬號登錄執行該命令即可。
3.安裝Go語言支持
在GitLab8.0以後HTTP請求開始依賴Go編譯,所以我們要進行安裝,這裏要註意go會區分操作系統位數
mkdir /tmp/golang && cd /tmp/golang
curl -O --progress https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
4、創建系統用戶
adduser --system --shell /bin/bash --comment ‘GitLab‘ --create-home --home-dir /home/git/ git
修改git用戶的PATH路徑
visudo
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
修改為
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
5.安裝數據庫
註意:因為gitlab需要最低9.1版本,centos默認的8.x版postgreSQL無法支持, 需要添加 PGDG yum庫,如果系統已安裝postgresql需要先進行卸載:
yum remove postgresql
安裝 pgdg 資源庫:
rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
wget https://www.postgresql.org/ftp/source/v9.3.8/postgresql-9.3.8.tar.gz
安裝 postgresql93-server 以及 postgreqsql93-devel 包:
yum install postgresql93-server postgresql93-devel
可執行文件被安裝在 /usr/pgsql-9.3/bin/。 為保證正常執行,需要將該路徑添加到 $PATH 環境變量或創建鏈接。這裏我們為gitlab創建鏈接:
ln -s /usr/local/postgresql-9.3.8/bin/pg_dump /usr/bin/pg_dump
ln -s /usr/local/postgresql-9.3.8/bin/pg_restore /usr/bin/pg_restore
ln -s /usr/local/postgresql-9.3.8/bin/psql /usr/bin/psql
重命名服務腳本為postgresql:
mv /etc/init.d/{postgresql-9.3,postgresql}
ln -s /usr/local/postgresql-9.3.8/bin/psql /usr/bin/psql
初始化數據庫:
service postgresql initdb
啟動postgresql服務,並設置開機自動啟動:
service postgresql start
chkconfig postgresql on
配置數據庫用戶及密碼
su - postgres
export PATH=$PATH:/usr/pgsql-9.3/bin/
psql -d template1
psql (9.4.3)
Type "help" for help.
template1=# CREATE USER git CREATEDB;
CREATE ROLE
template1=# CREATE DATABASE gitlabhq_production OWNER git;
CREATE DATABASE
template1=# \q
exit # exit uid=postgres, return to root
使用 gitlab 用戶 (uid=git) 測試連接,檢查當前用戶:
whoami
用 git 用戶連接Postgres:
sudo -u git psql -d gitlabhq_production
顯示如下提示:
gitlabhq_production=>
說明已經連接成功,可以通過 \q 命令退出
在 /var/lib/pgsql/9.3/data/pg_hba.conf 中配置認證方式及認證信息:
host all all 127.0.0.1/32 trust
6.安裝Redis
Gitlab要求Redis版本不低於2.8,系統默認安裝版本為2.4.1,卸載當前版本並采用remi源安裝最新版本:
卸載當前redis:
yum -y remove redis
采用remi源安裝最新版本:
yum --enablerepo=remi install redis
設置開機自動啟動:
chkconfig redis on
Configure redis to use sockets:
cp /etc/redis.conf /etc/redis.conf.orig
Disable Redis listening on TCP by setting ‘port‘ to 0:
sed ‘s/^port .*/port 0/‘ /etc/redis.conf.orig | sudo tee /etc/redis.conf
Enable Redis socket for default CentOS path:
echo ‘unixsocket /var/run/redis/redis.sock‘ | sudo tee -a /etc/redis.conf
echo -e ‘unixsocketperm 0770‘ | sudo tee -a /etc/redis.conf
Create the directory which contains the socket
mkdir /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis
Persist the directory which contains the socket, if applicable
if [ -d /etc/tmpfiles.d ]; then
echo ‘d /var/run/redis 0755 redis redis 10d -‘ | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
Activate the changes to redis.conf:
service redis restart
Add git to the redis group:
usermod -aG redis git
7. GitLab
我們將 GitLab 安裝到 "git" 用戶的home中:
cd /home/git
獲取源代碼
選擇中文版代碼地址進行克隆,默認采用master版本,對應gitlab8.5.5
sudo -u git -H git clone https://gitlab.com/larryli/gitlab.git gitlab
配置gitlab
進入gitlab安裝目錄
cd /home/git/gitlab
復制gitlab配置文件
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
Update GitLab config file, follow the directions at top of file
sudo -u git -H vim config/gitlab.yml
修改 gitlab -> host 為主機域名
更新 gitlab -> email_from 為[email protected]
修改 git -> bin_path 為 /usr/local/bin/git
復制安全文件
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml
保證 GitLab 對 log/ 和 tmp/ 目錄具備寫權限
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
保證 GitLab 對 tmp/pids/ 和 tmp/sockets/ 目錄具備寫權限
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
創建 public/uploads/ 目錄
sudo -u git -H mkdir public/uploads/
保證只有 GitLab 用戶能夠訪問 public/uploads/ 目錄
因此 public/uploads 中的文件通過 gitlab-workhorse 提供服務
sudo chmod 0700 public/uploads
修改 CI 構建跟蹤存儲目錄權限
sudo chmod -R u+rwX builds/
修改 CI artifacts 存儲目錄權限
sudo chmod -R u+rwX shared/artifacts/
復制並創建 unicorn 配置文件
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
查詢內核數了
nproc
如果支持高負載可以啟用集群設置
將 workers 數據設置為不小於CPU內核數量
Ex. change amount of workers to 3 for 2GB RAM server
sudo -u git -H vim config/unicorn.rb
通過復制 example 創建 Rack attack 配置文件
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
為 git 用戶配置全局 Git 配置,當使用 web 編輯器進行編輯時使用
sudo -u git -H git config --global core.autocrlf input
配置 Redis 連接
sudo -u git -H cp config/resque.yml.example config/resque.yml
Change the Redis socket path if you are not using the default Debian / Ubuntu configuration
sudo -u git -H vim config/resque.yml
Important Note: Make sure to edit both gitlab.yml and unicorn.rb to match your setup.
Note: If you want to use HTTPS, see Using HTTPS for the additional steps.
配置 GitLab 數據庫連接配置
只采用 PostgreSQL 配置信息:
sudo -u git cp config/database.yml.postgresql config/database.yml
只為 git 用戶分配 config/database.yml 的讀權限
sudo -u git -H chmod o-rwx config/database.yml
安裝 Gems
修改 git 用戶的Ruby的源服務器
sudo -u git -H gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
sudo -u git -H gem sources -l
sudo -u git -H bundle config mirror.https://rubygems.org https://ruby.taobao.org
PostgreSQL 數據庫(不使用MySQL)
sudo -u git -H bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
安裝 GitLab Shell
GitLab Shell 是一個 SSH 訪問以及倉庫管理軟件,專門用於 GitLab。
啟動 gitlab-shell 安裝任務 (請根據需要替換 REDIS_URL
):
sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
默認情況下, gitlab-shell 是根據 GitLab 配置信息生成的。
可以通過以下命令檢查及修改 gitlab-shell :
sudo -u git -H vim /home/git/gitlab-shell/config.yml
Note: Make sure your hostname can be resolved on the machine itself by either a proper DNS record or an additional line in /etc/hosts ("127.0.0.1 hostname"). This might be necessary for example if you set up GitLab behind a reverse proxy. If the hostname cannot be resolved, the final installation check will fail with "Check GitLab API access: FAILED. code: 401" and pushing commits will be rejected with "[remote rejected] master -> master (hook declined)".
安裝 gitlab-workhorse
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout 0.6.5
sudo -u git -H make
初始化數據庫及高級特性
進入 Gitlab 安裝目錄
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
輸入 ‘yes‘ 創建數據庫表結構
完成時顯示輸出 ‘Administrator account created:‘
默認密碼
login.........root
password......5iveL!fe
本系統登錄後修改為[email protected]
Note: You can set the Administrator/root password and e-mail by supplying them in environmental variables, GITLAB_ROOT_PASSWORD and GITLAB_ROOT_EMAIL respectively, as seen below. If you don‘t set the password (and it is set to the default one) please wait with exposing GitLab to the public internet until the installation is done and you‘ve logged into the server the first time. During the first login you‘ll be forced to change the default password.
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail
Secure secrets.yml
The secrets.yml file stores encryption keys for sessions and secure variables. Backup secrets.yml someplace safe, but don‘t store it in the same place as your database backups. Otherwise your secrets are exposed if one of your backups is compromised.
安裝啟動腳本
下載啟動腳本 (位於 /etc/init.d/gitlab
):
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
chkconfig --add gitlab
配置 GitLab 自動運行:
chkconfig gitlab on
安裝 Logrotate
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
檢查應用狀態
檢查 Gitlab 程序及環境是否正確配置:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
編譯Assets
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
啟動 GitLab 服務
sudo service gitlab start
或者
sudo /etc/init.d/gitlab restart
8. 配置WebServer
這裏官方建議使用nginx,當然如果你對apache足夠熟悉也可以改用apache。
首先配置nginx 源:
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
yum -y --enablerepo=nginx install nginx
chkconfig nginx on
如果你的機器上沒能IPV6地址,一定要註釋掉IPV6協議部分
cp lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
添加用戶nginx到git組
usermod -a -G git nginx
chmod g+rx /home/git/
檢查配置
sudo nginx -t
重啟nginx:
sudo service nginx restart
安裝完成!
再次驗證應用狀態,保證安裝過程中沒有錯過任何步驟,可以通過以下命令驗證:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
如果所有檢查項均顯示為綠色,那麽恭喜你完成了 Gitlab 中文版安裝!
GitLab安裝說明