1. System
1.1 Packages Install
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y -o Acquire::http::Proxy=none build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev
1.2 Python Install
Install python 2.7
sudo apt-get install python2.7
1.3 MySQL Install
Install mysql
apt-get install -y mysql-server mysql-client libmysqlclient-dev
enter password: *****
1.4 Git User Account
Create a user named git
adduser --disabled-login --gecos 'GitLab' git
switch to git account
su - git
added git to sudoer
adduser git sudo
1.5 Install RVM on user git account
install rvm
\curl -sSL https://get.rvm.io | bash -s stable
check the package by
rvm requirements
rvm install 2.0.0
1.6 Setup git alias and command
git config --global alias.st status
git config --global alias.ci 'commit -a'
git config --global alias.co checkout
git config --global color.ui auto
1.7 upgrade git
gitlab 6.4 branch requires git version higher than 1.7.10
root@gitlab:~# git --version
git version 1.7.9.5
So download the latest git from git-core repo
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
After:
root@gitlab:~# git --version
git version 1.8.5.2
2. Gitlab-Shell
gitlab-shell is similar to gitolite. key and repository management tool
2.1 Install Gitlab-Shell
let’s download gitlab-shell from github
git clone https://github.com/gitlabhq/gitlab-shell.git
And set to the stable branch
git checkout v1.8.0
2.2 Configuring Gitlab-Shell
gem install bundle
bundle
cp config.yml.example config.yml
nano config.yml
edit:
gitlab_url: “http://gitlab.bardel.ca/”
repos_path: “/home/git/repositories”
auth_file: “/home/git/.ssh/authorized_keys”
then run the install script in
bin/install
It will set up the repos and keys:
git@gitlab:~/gitlab-shell$ bin/install
mkdir -p /home/git/repositories: OK
mkdir -p /home/git/.ssh: OK
chmod 700 /home/git/.ssh: OK
touch /home/git/.ssh/authorized_keys: OK
chmod 600 /home/git/.ssh/authorized_keys: OK
chmod -R ug+rwX,o-rwx /home/git/repositories: OK
find /home/git/repositories -type d -print0 | xargs -0 chmod g+s: OK
2.3 hiccups
had an error.
git push or2 master
/home/git/gitlab-shell/bin/gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError)
fatal: Could not read from remote repository.
was caused by git-shell trying to use system ruby. Solution for this was
Adding this in /home/git/.bashrc file before
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
3. Gitlab
3.1 Installing Gitlab download gitlab repo cd /home/git git clone https://github.com/gitlabhq/gitlabhq.git gitlab switch to stable branch git co -b 6-4-stable bundle
- I had a problem with installing pg gem.. commented out in Gemfile. 3.2 Configuring Gitlab cp config/gitlab.yml.example config/gitlab.yml nano gitlab.yml edit: gitlab: host: gitlab.bardel.ca email_from: [email protected] support_email: [email protected]
There is a setup for hooking with redmine and ldap wonder how they are suppose to work. connect with LDAP and redmine 3.3 Setting up Database cp config/database.yml.mysql config/database.yml nano config/database.yml RAILS_ENV=production rake db:create RAILS_ENV=production rake db:migrate
3.4 Setting up LDAP auth edit the file in /home/git/gitlab/config/gitlab.yml go to section 2. Auth settings
2. Auth settings
==========================
LDAP settings
You can inspect the first 100 LDAP users with login access by running:
bundle exec rake gitlab:ldap:check[100] RAILS_ENV=production
ldap: enabled: true host: ‘ldap.bardel.ca’ base: ‘ou=Users,dc=bardel,dc=ca’ port: 389 # uid: ‘uid’ method: ‘plain’ # “ssl” or “plain” # Anonymous binding bind_dn: ” # ‘_the_full_dn_of_the_user_you_will_bind_with’ password: ” # ‘_the_password_of_the_bind_user’ allow_username_or_email_login: true
To test bundle exec rake gitlab:ldap:check[100] RAILS_ENV=production
3.4.2 Setting up AD auth edit the file in /home/git/gitlab/config/gitlab.yml go to section 2. Auth settings
2. Auth settings
==========================
LDAP settings
You can inspect the first 100 LDAP users with login access by running:
bundle exec rake gitlab:ldap:check[100] RAILS_ENV=production
ldap: enabled: true host: ‘dc01.corp.bardel.ca’ base: ‘DC=corp,DC=bardel,DC=ca’ port: 389 uid: ‘sAMAccountName’ password: ‘B1ndus3r’ method: ‘plain’ # “ssl” or “plain” bind_dn: ‘CN=binduser,DC=corp,DC=bardel,DC=ca’ #_the_full_dn_of_the_user_you_will_bind_with’ allow_username_or_email_login: true
To test bundle exec rake gitlab:ldap:check RAILS_ENV=production 3.5 Install Init script Download the init script sudo sp lib/support/init.d/gitlab /etc/init.d/gitlab
To make gitlab start on boot sudo update-rc.d gitlab defaults 21
git@gitlab:~/gitlab/lib/support/init.d$ sudo update-rc.d gitlab defaults 21 Adding system startup for /etc/init.d/gitlab … /etc/rc0.d/K21gitlab -> ../init.d/gitlab /etc/rc1.d/K21gitlab -> ../init.d/gitlab /etc/rc6.d/K21gitlab -> ../init.d/gitlab /etc/rc2.d/S21gitlab -> ../init.d/gitlab /etc/rc3.d/S21gitlab -> ../init.d/gitlab /etc/rc4.d/S21gitlab -> ../init.d/gitlab /etc/rc5.d/S21gitlab -> ../init.d/gitlab
3.6 Unicorn setup or Puma setup? copy the example unicorn config cp config/unicorn.rb.example config/unicorn.rb edit: nano config/unicorn.rb 3.7 Sidekiq setup 3.8 Checking the settings run these commands to verify the settings: check system, gitlab and gitlab-Shell bundle exec rake gitlab:env:info RAILS_ENV=production
git@gitlab:~/gitlab$ be rake gitlab:env:info
System information System: Ubuntu 12.04 Current User: git Using RVM: yes RVM Version: 1.25.6 Ruby Version: 2.0.0p353 Gem Version: 2.1.11 Bundler Version:1.3.5 Rake Version: 10.1.0
GitLab information Version: 6.4.3 Revision: eef1d9c Directory: /home/git/gitlab DB Adapter: mysql2 URL: http://gitlab.bardel.ca HTTP Clone URL: http://gitlab.bardel.ca/some-project.git SSH Clone URL: [email protected]:some-project.git Using LDAP: yes Using Omniauth: no
GitLab Shell Version: 1.8.0 Repositories: /home/git/repositories/ Hooks: /home/git/gitlab-shell/hooks/ Git: /usr/bin/git
3.9 Gitlab self check check gitlab configure information bundle exec rake gitlab:check RAILS_ENV=production
Many errors: 5 errors and how to fix them: git@gitlab:~/gitlab$ be rake gitlab:check RAILS_ENV=production Checking Environment …
Git configured for git user? … no Try fixing it: sudo -u git -H git config —global user.name “GitLab” sudo -u git -H git config —global user.email “[email protected]” For more information see: doc/install/installation.md in section “GitLab” Please fix the error above and rerun the checks. Has python2? … yes python2 is supported version? … yes
Checking Environment … Finished
Checking GitLab Shell …
GitLab Shell version >= 1.7.9 ? … OK (1.8.0)
Repo base directory exists? … yes
Repo base directory is a symlink? … no
Repo base owned by git:git? … yes
Repo base access is drwxrws---? … yes
update hook up-to-date? … yes
update hooks in repos are links: … can’t check, you have no projects
Running /home/git/gitlab-shell/bin/check
Check GitLab API access: /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:878:in initialize': getaddrinfo: Name or service not known (SocketError) from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:878:in
open’
from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:878:in block in connect' from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/timeout.rb:52:in
timeout’
from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:877:in connect' from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:862:in
do_start’
from /home/git/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/net/http.rb:851:in start' from /home/git/gitlab-shell/lib/gitlab_net.rb:62:in
get’
from /home/git/gitlab-shell/lib/gitlab_net.rb:29:in check' from /home/git/gitlab-shell/bin/check:11:in
Checking GitLab Shell … Finished
Checking Sidekiq …
Running? … no Try fixing it: sudo -u git -H RAILS_ENV=production script/background_jobs start For more information see: doc/install/installation.md in section “Install Init Script” see log/sidekiq.log for possible errors Please fix the error above and rerun the checks.
Checking Sidekiq … Finished
Checking LDAP …
LDAP is disabled in config/gitlab.yml
Checking LDAP … Finished
Checking GitLab …
Database config exists? … yes Database is SQLite … no All migrations up? … yes GitLab config exists? … yes GitLab config outdated? … no Log directory writable? … yes Tmp directory writable? … yes Init script exists? … no Try fixing it: Install the init script For more information see: doc/install/installation.md in section “Install Init Script” Please fix the error above and rerun the checks. Init script up-to-date? … can’t check because of previous errors projects have namespace: … can’t check, you have no projects Projects have satellites? … can’t check, you have no projects Redis version >= 2.0.0? … yes Your git bin path is “/usr/bin/git” Git version >= 1.7.10 ? … no Try fixing it: Update your git to a version >= 1.7.10 from 1.7.9 Please fix the error above and rerun the checks.
Checking GitLab … Finished
3.9.1 Problems
- git version -> updated to 1.8.5.2
- gitlab-shell config => can’t find the hostname. weird
- init script -> copied the file to /etc/init.d folder and run sudo update-rc.d
- sidekiq ->
- have no projects -> install one more projects
3.9.2 Current problem
- gitlab-shell hostname issue
- no project issue
3.10 Start gitlab service sudo service gitlab start This will start unicorn web-server and sidekiq
##3.11 Precompile Assets sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
3.12 Test rails server
be rails s
Error:
Update 6.3 -> 6.4: uninitialized constant Unicorn (NameError)
Fix:
added “require(‘unicorn’) before require ‘unicorn/worker_killer”
4. Nginx
4.1 Install Nginx
sudo apt-get install -y nginx
4.2 copy the configuration
cp /home/git/gitlab/lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
4.3 edit the config
nano /etc/nginx/sites-available/gitlab
4.4 restart nginx
sudo service nginx restart
4.5 hiccups: nginx wouldn’t start
problem:
root@gitlab:/etc/nginx# service nginx start
Starting nginx: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed
Solution:
found /etc/nginx/nginx.conf & the 'server_names_hash_bucket_size: 32 ' has a value of 64 although it appears commented out...
uncommenting 'server_names_hash_bucket_size: 32 ' did the trick & she's now running…
4.6 more hiccups: fork didn’t work
there was a problem with forking. -> when user fork on the website, it didn’t work
problem: each repo needs a satellites which is a git repo.
to create a satellites run the following command:
git@gitlab:~/gitlab$ be rake gitlab:satellites:create RAILS_ENV=production
Creating satellites for ...
Michael Kang / bardelweb ...
rake aborted!
No such file or directory - chdir
/home/git/gitlab/lib/gitlab/popen.rb:9:in `popen'
/home/git/gitlab/lib/gitlab/satellite/satellite.rb:36:in `create'
/home/git/gitlab/lib/tasks/gitlab/enable_automerge.rake:31:in `block in create_satellites'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/relation/batches.rb:26:in `block (2 levels) in find_each'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/relation/batches.rb:26:in `each'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/relation/batches.rb:26:in `block in find_each'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/relation/batches.rb:75:in `find_in_batches'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-deprecated_finders-1.0.3/lib/active_record/deprecated_finders/relation.rb:70:in `find_in_batches'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/relation/batches.rb:25:in `find_each'
/home/git/.rvm/gems/ruby-2.0.0-p353/gems/activerecord-4.0.2/lib/active_record/querying.rb:8:in `find_each'
/home/git/gitlab/lib/tasks/gitlab/enable_automerge.rake:19:in `create_satellites'
/home/git/gitlab/lib/tasks/gitlab/enable_automerge.rake:5:in `block (3 levels) in <top (required)>'
/home/git/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
/home/git/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => gitlab:satellites:create
(See full trace by running task with --trace)
solution:
mkdir /home/git/gitlab-satellites
then it worked:
git@gitlab:~/gitlab$ be rake gitlab:satellites:create RAILS_ENV=production
Creating satellites for ...
Michael Kang / bardelweb ...
... created
web / bardelweb ...
... created
pipeline / bpt-maya ...
... created
pipeline / bpt-nuke ...
... created
pipeline / bpt-aftereffects ...
... created
4.7 more hiccups: merge request didn’t work
problem: when user click on merge request, it didn’t work
the log says
January 07, 2014 14:56 -> ERROR -> Command failed [1]: /usr/bin/git --git-dir=/home/git/gitlab-satellites/pipeline/bpt-maya/.git push origin master
remote: /home/git/.rvm/gems/ruby-2.0.0-p353/gems/bundler-1.3.5/lib/bundler/shared_helpers.rb:2:in `require': no such file to load -- rubygems (LoadError)
remote: from /home/git/.rvm/gems/ruby-2.0.0-p353/gems/bundler-1.3.5/lib/bundler/shared_helpers.rb:2
remote: from /home/git/.rvm/gems/ruby-2.0.0-p353/gems/bundler-1.3.5/lib/bundler/setup.rb:1:in `require'
remote: from /home/git/.rvm/gems/ruby-2.0.0-p353/gems/bundler-1.3.5/lib/bundler/setup.rb:1
remote: error: hook declined to update refs/heads/master
To /home/git/repositories/pipeline/bpt-maya.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to '/home/git/repositories/pipeline/bpt-maya.git'
solution: remove default system ruby 1.8
I can confirm that removing ruby1.8 worked for me as well with the very same problem - ssh worked but not http
gitlab-shell/hooks/update
Running on Ubuntu 12, the git-shell update had this line:
#!/usr/bin/env ruby
I am running ruby 2.0.0 and resolved this issue by running:
sudo apt-get remove ruby1.8
9.References
http://insanehong.kr/post/gitlab5.1-install-guide/ https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md