在寫了《如何在Ubuntu Server 11.10上安裝Gitorious》這篇博文之後,很多兄弟反應這個安裝的過程過于複雜,能否找到一個在Ubuntu上安裝比較簡單的Git系統,得益于Google和百度,本人在網上找到了GitLab,正如其名字長度那樣,相對于Gitorious來說在Ubuntu上的安裝要簡單不少,故将其安裝過程記下即也可以滿足兄弟們的要求,也可以備查。
一、準備工作
根據GitLab的官方文檔要求,安裝GitLab需要以下軟體:
ruby 1.9.2
sqlite
ubuntu/debian
pygments lib - sudo pip install pygments
gitolite
是以在安裝GitLab之前需要做一些準備工作。
1、設定安裝環境(安裝一些必要軟體)
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install git-core openssh-server sendmail curl gcc libxml2-dev libxslt-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev python-setuptools
*安裝VMWare Tools(這是在虛拟機環境下需要安裝的,如果不是的可忽略)
sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get install dkms build-essential gcc linux-headers-$(uname -r) -y
sudo mkdir -p /media/cdrom
sudo mount /dev/cdrom /media/cdrom
cp /media/cdrom/VM* /tmp
sudo umount /media/cdrom
cd /tmp
tar -xzvf VMware*.gz
cd vmware-tools-distrib/
sudo ./vmware-install.pl -d
sudo apt-get autoremove -y
sudo shutdown -r now
上面關于虛拟機的部分是摘抄官網的,因為沒環境測試,是以也隻是原樣照搬了。:)
2、設定專門的帳号
接下來我們需要建立一個專門的gitlabhq使用者帳号來運作程式,這個帳戶需要設定密碼,因為需要将它加入到admin組來運作sudo:
sudo useradd -s /bin/bash -m -G admin gitlabhq
sudo passwd gitlabhq
現在使用gitlabhq使用者帳号登入機器:
ssh gitlabhq@localhost
3、配置git全局變量并生成SSH密鑰
git config --global user.email "[email protected]"
git config --global user.name "GitLabHQ Admin User"
由于gitlabhq使用者稍後要使用SSH密鑰通路稍後建立git使用者帳号,執行git指令,是以需要生成gitlabhq使用者的SSH密鑰:
ssh-keygen -t rsa
注意:在出現提示詢問檔案儲存位置時直接回車,在要求輸入和确認passphrase時也按回車。
4、安裝Ruby 1.9.2、RubyGem和Rails
Ubuntu 11.10中的Ruby包,其版本是1.8的,是以需要安裝包ruby1.9.2。由于在Ubuntu 11.10中的Ruby1.9.1包中ruby版本實際上是Ruby1.9.2,之是以包名為Ruby1.9.1是因為該版本為1.9.1的“庫相容版本”,是以可以直接安裝包Ruby1.9.1即可,然後更新rubygem并安裝rails。
sudo apt-get install ruby1.9.1-full
sudo update-alternatives --config ruby
sudo update-alternatives --config gem
sudo gem install rails
注意兩點:1)、02-03行指令是在安裝了其他ruby版本包時使用;2)、如果在安裝rails時出現“RubyGems will revert to legacy indexes degrading performance.”之類的錯誤時,修改~/.gemrc檔案後重試(有時要試多次才進行安裝,一般來說都會3-6次之間,下面的bundle指令也是如此,不知道是不是偉大的牆在起作用,看你的運氣了!):
vi ~/.gemrc
---
:backtrace: false
:benchmark: false
:bulk_threshold: 1000
:sources:
- http://gems.rubyforge.org/
- http://gems.github.com/
- http://gems.rubyonrails.org/
:update_sources: true
:verbose: true
5、安裝和設定Gitolite
Gitolite 是一款 Perl 語言開發的 Git 服務管理工具,通過公鑰對使用者進行認證,并能夠通過配置檔案對寫操作進行基于分支和路徑的的精細授權,它是采用 SSH 協定并且使用 SSH 公鑰認證的。Gitolite開始于 2009年8月,其作者當時是受到了 Gitosis 的啟發,開發了這款功能更為強大和易于安裝的軟體。對于Gitolite的命名,作者原意是 Gitosis 和 lite 的組合,不過因為 Gitolite 的功能越來越強大,已經超越了 Gitosis,是以作者笑稱 Gitolite 可以看作是 Github-lite —— 輕量級的 Github。
安裝Gitolite也十分簡單,首先添加git使用者帳号并将其加入git組:
sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
sudo usermod -a -G git `eval whoami`
然後将生成的gitlabhq使用者的公鑰拷到git使用者目錄中:
sudo cp ~/.ssh/id_rsa.pub /home/git/rails.pub
接下來以git使用者的名義将gitolite源檔案下載下傳的git使用者家目錄中:
sudo -u git -H git clone git://github.com/gitlabhq/gitolite ~git/gitolite
再以git使用者的名義安裝gitolite
sudo -u git -H /home/git/gitolite/src/gl-system-install
在這裡該指令會提示關于目錄的警告資訊,不用理會。直接運作下列指令:
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gl-setup ~/rails.pub"
在這裡将會出現vim文本編輯器的編輯界面,請将其中的REPO_UMASK=0077改為REPO_UMASK=0007,然後儲存退出(退出編輯狀态ESC,然後使用:x)。關于如何在vim中編輯這裡就不做說明了,我偷個懶,反正有谷歌和百度。:)
最後設定庫目錄的權限:
sudo chmod -R g+rwX ~git/repositories/
sudo chown -R git:git ~git/repositories/
OK,設定完了之後,重新進入一次gitlabhq使用者,以使gitlabhq使用者生效:
exit
二、安裝和設定GitLab
1、安裝GitLab
cd ~
git clone git://github.com/gitlabhq/gitlabhq.git ~/gitlabhq
cd gitlabhq
sudo easy_install pygments
sudo gem install bundler
sudo gem install linecache19 -- --with-ruby-include=/usr/include/ruby-1.9.1/ruby/
bundle install --without development test
注意:linecache19的安裝是必須要指定with-ruby-include參數的,否則将會在後面的bundle install中出錯!
2、設定資料庫
bundle exec rake db:setup RAILS_ENV=production
bundle exec rake db:seed_fu RAILS_ENV=production
注意:運作01行的rake db:setup語句時,如果出現“unititialized constant Rake::DSL”,則需要在GitLab根目錄中的Rakefile檔案中添加以下語句(參見http://stackoverflow.com /questions/6268518/uninitialized-constant-rakedsl-in-ruby-gem)來解決,如未出現上述出錯資訊,可忽略:
require 'rake/dsl_definition'
require 'rake'
3、配置GitLab
編輯GitLab的配置程式:
vi ~gitlabhq/gitlabhq/config/gitlab.yml
将下列内容
git_host:
system: gitolite
admin_uri: git@localhost:gitolite-admin
base_path: /home/git/repositories/
host: gitlab
git_user: git
# port: 22
修改為:
host: gitlabhq.your.domain
其中03和05行中的gitlabhq.your.domain是伺服器的域名。
啟動服務
cd ~gitlabhq/gitlabhq
bundle exec rails s -e production
三、測試服務
如果一切OK的話,就可以在浏覽器上輸入:http://server.ip:3000/ 來測試該服務了,使用以下資訊登入:
Email: [email protected]
Password: 5iveL!fe
接下來您可以在admin中建立一個新的使用者,注意該使用者在建立時要花費一段時間,請耐心等待。在該使用者生成成功後,您需要按照前面的方法在客戶機上生成該使用者的密鑰(Windows下可以使用Git for Windows中的Git Bash來代替):
ssh-keygen -t rsa -C "[email protected]"
然後用新使用者登入,點選GitLab中My profile>Keys>Add new按鈕,将生成的SSH公鑰貼到彈出對話框的Key中,Title可随便填,我一般是使用使用者_機器名這種格式,然後點選Save按鈕。
在儲存使用者公鑰之後,就可測試是否可以通過公鑰來通路伺服器上的git使用者,執行git指令:
ssh -T [email protected]
其中,gitlabhq.your.domain是伺服器的域名。如果出現"Agent admitted failure to sign using the key"錯誤,并提示輸入git使用者密碼,那麼請在客戶機上使用以下指令将使用者私鑰加進來 (根據個人的密匙命名不同更改 id_rsa):
ssh-add ~/.ssh/id_rsa
ssh -T [email protected] hello your_email_youremail_com_1324608633, this is gitolite v2.2-11-g8c4d1aa running on git 1.7.5.4 the gitolite config gives you the following access: @R_ @W_ testing
再次通路git,如出現類似02行資訊時,則表明設定成功。
四、安裝和配置 Nginx和Passenger
1、解除安裝Apache2
sudo apt-get autoremove apache2*
sudo dpkg --purge apache2*
2、安裝Nginx和Passenger子產品
sudo gem install passenger
sudo passenger-install-ngnix-module
注意:02行語句會檢查編譯Ngnix和Passenger子產品所需要的工具,然後詢問你是否有Ngnix的源碼,如果沒有的話,就選1,會自動下載下傳,如果有的話,就選2,并告之源碼所在位置。在這裡選擇1。
3、建立運作Nginx服務的使用者
sudo adduser --system --no-create-home --disabled-login --disabled-password --group nginx
4、将Nginx設定開機啟動腳本
wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
5、将Nginx設定為GitLab的伺服器
sudo vi /opt/nginx/conf/nginx.conf
user gitlabhq staff;
# ---
server {
listen 80;
server_name gitlabhq.your.domain;
root /home/gitlabhq/gitlabhq/public;
passenger_enabled on;
}
# ---
其中,07行的gitlab.yourdomain.com要改為你的域名。
6、啟動Nginx
sudo /etc/init.d/nginx start
五、測試服務
在浏覽器中輸入http://gitlab.yourdomain.com/來測試GitLab能是否正常工作。如果一切正常的話,就可以打完收功了!
本文轉自 firehare 51CTO部落格,原文連結:http://blog.51cto.com/firehare/743509,如需轉載請自行聯系原作者