關於 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
系統基本環境安裝
- sudo apt-get update
- sudo apt-get dist-upgrade
- sudo apt-get install -y vim
- sudo update-alternatives --set editor /usr/bin/vim.basic
- 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
- sudo apt-get install -y python
- # 若 python, python2 是 2.7 版, 下面那個步驟(install python2.7)的可以跳過.
- python --version # Python 2.7.3
- python2 --version # 命令執行會採用 python2, 所以需要確認 python2 的版本
- # 若是 python 3.x, 需要安裝 python 2.x 版, 12.04 目前沒用到, 在此先註解掉.
- # sudo apt-get install -y python2.7
- # python --version # Python 2.7.3
- # python2 --version # 命令執行會採用 python2, 所以需要確認 python2 的版本
- # python2 不存在的話, 需要把 python 2.7 版 的 ln 過去.
- # sudo ln -s /usr/bin/python /usr/bin/python2
- sudo apt-get install -y python-docutils
檢查、安裝 Git 1.7.10 以上的版本
- 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) - # 若版本大於 1.7.10, 就可以直接用 apt 安裝, 但是目前不行, 跳過此步驟, 手動來
- # sudo apt-get install -y git-core
- # 若已經有安裝 Git, 需要移掉
- # sudo apt-get remove git-core
手動安裝 Git
- # 安裝 Git 相依性套件
- sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
- # 手動安裝 Git 步驟
- 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 # 指定安裝到 /usr/local/bin, 否則預設會裝到 ~/bin/
若要提供 Mail 提醒功能, 需要安裝 SMTP 軟體
- sudo apt-get install -y postfix
選擇 Internet Site, 輸入 Domain name
安裝 Ruby
- sudo apt-get remove ruby1.8 # 若有安裝 Ruby 1.8, 需要先移除
- # 開始安裝 Ruby 2.0+
- mkdir /tmp/ruby && cd /tmp/ruby
- curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
- cd ruby-2.0.0-p247
- ./configure --disable-install-rdoc
- make
- sudo make install
- sudo gem install bundler --no-ri --no-rdoc # 安裝 Bundler Gem
開 GitLab 系統帳號 - Git
- sudo adduser --disabled-login --gecos 'GitLab' git
安裝 GitLab shell
- cd /home/git
- sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
- cd gitlab-shell
- sudo -u git -H git checkout v1.7.6 # switch to right version, git tag 找最新版
- sudo -u git -H cp config.yml.example config.yml
- sudo -u git -H editor config.yml # 修改 gitlab_url, 改成自己的 domain, http://your-domain-name/'
- sudo -u git -H ./bin/install # Do setup
安裝 Database
- DB 安裝可參考此文件: gitlabhq/doc/install/databases.md
- sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
- mysql -u root -p
- mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'GITLAB_PASSWORD';
- mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
- mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
- # 使用 gitlab 帳號, 測試 MySQL 連線狀況
- sudo -u git -H mysql -u gitlab -p -D gitlabhq_production # 輸入密碼看有沒有進入 mysql>
安裝 GitLab
- cd /home/git
- sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab # Clone GitLab repository
- cd /home/git/gitlab
- sudo -u git -H git checkout 6-2-stable # git branch -a 或 git branch -r 找 stable 版本, 列表可見: https://github.com/gitlabhq/gitlabhq/branches
設定 GitLab
- cd /home/git/gitlab
- sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
- # 注意: 下述檔案修改, 要改兩個部分 1. 所有 localhost => your domain. 2. /usr/bin/git => /usr/local/bin/git
- sudo -u git -H editor config/gitlab.yml # 將 localhost 都修改成你的 Domain (含 Mail 寄件者地址, 都順便改一改), 另外找到 bin_path: /usr/bin/git, 改成 /usr/loca/bin/git
- sudo chown -R git log/
- sudo chown -R git tmp/
- sudo chmod -R u+rwX log/
- sudo chmod -R u+rwX tmp/
- sudo -u git -H mkdir /home/git/gitlab-satellites
- sudo -u git -H mkdir tmp/pids/
- sudo -u git -H mkdir tmp/sockets/
- sudo chmod -R u+rwX tmp/pids/
- sudo chmod -R u+rwX tmp/sockets/
- sudo -u git -H mkdir public/uploads
- sudo chmod -R u+rwX public/uploads
- sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
- sudo -u git -H editor config/unicorn.rb # 若有超過 2G RAM, worker_processes 可以改成 3
- sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
- sudo -u git -H git config --global user.name "GitLab"
- sudo -u git -H git config --global user.email "gitlab@localhost"
- sudo -u git -H git config --global core.autocrlf input
- # 到此設定完成, 可以在注意檢查看看 gitlab.yml, unicorn.rb 是否存在, 檢查 gitlab.yml 設定是否正確
GitLab DB 設定
- sudo -u git cp config/database.yml.mysql config/database.yml # 再此是用 MySQL, PostgreSQL 請複製其他檔案
- sudo -u git -H editor config/database.yml # 修改 "production" 的 password: "secure password", 改成 MySQL gitlab 帳號的密碼, 其他可以不用管他.
- sudo -u git -H chmod o-rwx config/database.yml
安裝 Gems
- cd /home/git/gitlab
- sudo -u git -H bundle install --deployment --without development test postgres aws # 使用 MySQL 是 --without postgres, PostgreSQL 是反過來的.
初始化 Database
- sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production # 輸入 'yes' 建立 database
- # 於此取得 GitLab 系統預設帳號、密碼
Administrator account created:
login.........admin@local.host
password......5iveL!fe
設定開機自動啟動
- sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
- sudo chmod +x /etc/init.d/gitlab
- sudo update-rc.d gitlab defaults 21
設定 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
啟動 GitLab
- sudo service gitlab start # 或 sudo /etc/init.d/gitlab restart
設定 Apache2 環境
- # 我是用 Apache2, 要用 Nginx 可以再去看官方設定
- sudo apt-get install apache2
- # 可見: gitlab-recipes/web-server/apache at master · gitlabhq/gitlab-recipes
- # 取得 github.conf: https://github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab.conf
- cd /tmp
- wget https://raw.github.com/gitlabhq/gitlab-recipes/master/web-server/apache/gitlab.conf
- sudo vim gitlab.conf # 修改 ServerName, ProxyPassReverse, Log 路徑(/var/log/httpd/logs/ => /var/log/apache2/)等等, 修改下述兩項:
- # 將所有 gitlab.example.com => your-domain-name
- # ErrorLog、CustomLog 的 /var/log/httpd/logs => /var/log/apache2
- sudo mv gitlab.conf /etc/apache2/sites-enabled/
- sudo vim /etc/apache2/sites-enabled/000-default # 將整個檔案全部註解掉 (每行前面都加上 '#')
- sudo a2enmod rewrite proxy proxy_http
- sudo service apache2 restart # 或 sudo /etc/init.d/apache2 restart
到此 GitLab 就架設完成囉~ 連到 http://your-domain-name/ , 用下述帳號密碼登入即可.
login: admin@local.host
password: 5iveL!fe
註: 第一次網頁開啟要跑比較久, 需要有點耐心~
GitLab 重新啟動
- sudo /etc/init.d/gitlab restart
其他 Debug 方式, 可見此篇文章: 將 GitLab 架設 於 Debian Wheezy, 在此就不再詳述~