將 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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix 並標籤為 , , , 。將永久鏈結加入書籤。

將 GitLab 架設 於 Ubuntu 12.04 (Precise) 有 5 則回應

  1. teyu15 說道:

    請問一下,照下面的訊息來看,不知道是哪邊出了問題失敗了? 謝謝
    $ sudo /etc/init.d/gitlab restart
    Removing stale Unicorn web server pid. This is most likely caused by the web server crashing the last time it ran.
    Removing stale Sidekiq web server pid. This is most likely caused by the Sidekiq crashing the last time it ran.
    Starting the GitLab Unicorn web server...
    master failed to start, check stderr log for details
    Starting the GitLab Sidekiq event dispatcher...
    The GitLab Unicorn webserver is not running.
    The GitLab Sidekiq job dispatcher with pid 4999 is running.

    • Tsung 說道:

      把 000-default 原本內容註解掉, 其他都留著, 就可以把 trac / gitlab 全都共存了.

      下這行指令看看, 看有哪邊不是出現 ok 的, 就修掉那些問題.
      sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

  2. fetag 說道:

    整合 Active Directory 認證:
    http://coolfire.fetag.org/2014/01/gitlab-integrate-active-directory-auth/

    另外第一次啟動慢的問題,可以透過 Precompile 解決:
    cd /home/git/gitlab;
    sudo bundle exec rake assets:precompile RAILS_ENV=production

發表迴響