X

將 GitLab 架設 於 Ubuntu 12.04 (Precise)

關於 GitLab 的文章、說明, 之前的文章已經有寫過, 在此就不再詳述, 詳細可見此篇: 將 GitLab 架設 於 Debian Wheezy

註: 關於 GitLab 安裝詳細說明、Debug 等訊息, 也都於上述文章記錄, 在此就不再多加撰寫.

將 GitLab 架設 於 Ubuntu 12.04 (Precise)

GitLab 安裝主要參考此文件: gitlabhq/doc/install/installation.md

系統、套件版本需求

  • Ubuntu/Debian
  • python 2.5+ (3.x is not supported at the moment)
  • ruby 1.9.3+
  • git 1.7.10+
  • redis 2.0+
  • MySQL or PostgreSQL

系統基本環境安裝

  1. sudo apt-get update
  2. sudo apt-get dist-upgrade
  3. sudo apt-get install -y vim
  4. sudo update-alternatives --set editor /usr/bin/vim.basic
  5. 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
  6. sudo apt-get install -y python
  7. # 若 python, python2 是 2.7 版, 下面那個步驟(install python2.7)的可以跳過.
  8. python --version # Python 2.7.3
  9. python2 --version # 命令執行會採用 python2, 所以需要確認 python2 的版本
  10. # 若是 python 3.x, 需要安裝 python 2.x 版, 12.04 目前沒用到, 在此先註解掉.
  11. # sudo apt-get install -y python2.7
  12. # python --version # Python 2.7.3
  13. # python2 --version # 命令執行會採用 python2, 所以需要確認 python2 的版本
  14. # python2 不存在的話, 需要把 python 2.7 版 的 ln 過去.
  15. # sudo ln -s /usr/bin/python /usr/bin/python2
  16. sudo apt-get install -y python-docutils

檢查、安裝 Git 1.7.10 以上的版本

  1. apt-cache showpkg git-core # 目前版本是 1.7.9, 所以不能用, 需要手動安裝

    Package: git-core
    Versions:
    1:1.7.9.5-1 (/var/lib/apt/lists/ftp.tku.edu.tw_ubuntu_dists_precise_main_binary-amd64_Packages)

  2. # 若版本大於 1.7.10, 就可以直接用 apt 安裝, 但是目前不行, 跳過此步驟, 手動來
  3. # sudo apt-get install -y git-core
  4. # 若已經有安裝 Git, 需要移掉
  5. # sudo apt-get remove git-core

手動安裝 Git

  1. # 安裝 Git 相依性套件
  2. sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
  3. # 手動安裝 Git 步驟
  4. cd /tmp
  5. curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
  6. cd git-1.8.4.1/
  7. make prefix=/usr/local all
  8. sudo make prefix=/usr/local install # 指定安裝到 /usr/local/bin, 否則預設會裝到 ~/bin/

若要提供 Mail 提醒功能, 需要安裝 SMTP 軟體

  1. sudo apt-get install -y postfix

    選擇 Internet Site, 輸入 Domain name

安裝 Ruby

  1. sudo apt-get remove ruby1.8 # 若有安裝 Ruby 1.8, 需要先移除
  2. # 開始安裝 Ruby 2.0+
  3. mkdir /tmp/ruby && cd /tmp/ruby
  4. curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
  5. cd ruby-2.0.0-p247
  6. ./configure --disable-install-rdoc
  7. make
  8. sudo make install
  9. sudo gem install bundler --no-ri --no-rdoc # 安裝 Bundler Gem

開 GitLab 系統帳號 - Git

  1. sudo adduser --disabled-login --gecos 'GitLab' git

安裝 GitLab shell

  1. cd /home/git
  2. sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
  3. cd gitlab-shell
  4. sudo -u git -H git checkout v1.7.6 # switch to right version, git tag 找最新版
  5. sudo -u git -H cp config.yml.example config.yml
  6. sudo -u git -H editor config.yml # 修改 gitlab_url, 改成自己的 domain, http://your-domain-name/'
  7. sudo -u git -H ./bin/install # Do setup

安裝 Database

  1. DB 安裝可參考此文件: gitlabhq/doc/install/databases.md
  2. sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
  3. mysql -u root -p
    1. mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'GITLAB_PASSWORD';
    2. mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
    3. mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
  4. # 使用 gitlab 帳號, 測試 MySQL 連線狀況
  5. sudo -u git -H mysql -u gitlab -p -D gitlabhq_production # 輸入密碼看有沒有進入 mysql>

安裝 GitLab

  1. cd /home/git
  2. sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab # Clone GitLab repository
  3. cd /home/git/gitlab
  4. sudo -u git -H git checkout 6-2-stable # git branch -a 或 git branch -r 找 stable 版本, 列表可見: https://github.com/gitlabhq/gitlabhq/branches

設定 GitLab

  1. cd /home/git/gitlab
  2. sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
  3. # 注意: 下述檔案修改, 要改兩個部分 1. 所有 localhost => your domain. 2. /usr/bin/git => /usr/local/bin/git
  4. sudo -u git -H editor config/gitlab.yml # 將 localhost 都修改成你的 Domain (含 Mail 寄件者地址, 都順便改一改), 另外找到 bin_path: /usr/bin/git, 改成 /usr/loca/bin/git
  5. sudo chown -R git log/
  6. sudo chown -R git tmp/
  7. sudo chmod -R u+rwX  log/
  8. sudo chmod -R u+rwX  tmp/
  9. sudo -u git -H mkdir /home/git/gitlab-satellites
  10. sudo -u git -H mkdir tmp/pids/
  11. sudo -u git -H mkdir tmp/sockets/
  12. sudo chmod -R u+rwX  tmp/pids/
  13. sudo chmod -R u+rwX  tmp/sockets/
  14. sudo -u git -H mkdir public/uploads
  15. sudo chmod -R u+rwX  public/uploads
  16. sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
  17. sudo -u git -H editor config/unicorn.rb # 若有超過 2G RAM, worker_processes 可以改成 3
  18. sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
  19. sudo -u git -H git config --global user.name "GitLab"
  20. sudo -u git -H git config --global user.email "gitlab@localhost"
  21. sudo -u git -H git config --global core.autocrlf input
  22. # 到此設定完成, 可以在注意檢查看看 gitlab.yml, unicorn.rb 是否存在, 檢查 gitlab.yml 設定是否正確

GitLab DB 設定

  1. sudo -u git cp config/database.yml.mysql config/database.yml # 再此是用 MySQL, PostgreSQL 請複製其他檔案
  2. sudo -u git -H editor config/database.yml # 修改 "production" 的 password: "secure password", 改成 MySQL gitlab 帳號的密碼, 其他可以不用管他.
  3. sudo -u git -H chmod o-rwx config/database.yml

安裝 Gems

  1. cd /home/git/gitlab
  2. sudo -u git -H bundle install --deployment --without development test postgres aws # 使用 MySQL 是 --without postgres, PostgreSQL 是反過來的.

初始化 Database

  1. sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production # 輸入 'yes' 建立 database
  2. # 於此取得 GitLab 系統預設帳號、密碼

    Administrator account created:
    login.........admin@local.host
    password......5iveL!fe

設定開機自動啟動

  1. sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
  2. sudo chmod +x /etc/init.d/gitlab
  3. sudo update-rc.d gitlab defaults 21

設定 Logrotate

  1. sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

檢查 GitLab 應用程式設定狀態

  1. sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

啟動 GitLab

  1. sudo service gitlab start # 或 sudo /etc/init.d/gitlab restart

設定 Apache2 環境

  1. # 我是用 Apache2, 要用 Nginx 可以再去看官方設定
  2. sudo apt-get install apache2
  3. # 可見: gitlab-recipes/web-server/apache at master · gitlabhq/gitlab-recipes
  4. # 取得 github.conf: https://github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab.conf
  5. cd /tmp
  6. wget https://raw.github.com/gitlabhq/gitlab-recipes/master/web-server/apache/gitlab.conf
  7. sudo vim gitlab.conf # 修改 ServerName, ProxyPassReverse, Log 路徑(/var/log/httpd/logs/ => /var/log/apache2/)等等, 修改下述兩項:
    1. # 將所有 gitlab.example.com => your-domain-name
    2. # ErrorLog、CustomLog 的 /var/log/httpd/logs => /var/log/apache2
  8. sudo mv gitlab.conf /etc/apache2/sites-enabled/
  9. sudo vim /etc/apache2/sites-enabled/000-default # 將整個檔案全部註解掉 (每行前面都加上 '#')
  10. sudo a2enmod rewrite proxy proxy_http
  11. sudo service apache2 restart # 或 sudo /etc/init.d/apache2 restart

到此 GitLab 就架設完成囉~ 連到 http://your-domain-name/ , 用下述帳號密碼登入即可.

login: admin@local.host
password: 5iveL!fe

註: 第一次網頁開啟要跑比較久, 需要有點耐心~

GitLab 重新啟動

  1. sudo /etc/init.d/gitlab restart

其他 Debug 方式, 可見此篇文章: 將 GitLab 架設 於 Debian Wheezy, 在此就不再詳述~

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post