Personal tools
You are here: Home Linux Version Control Indigo, a CentOS v6.5 GitLab server

Indigo, a CentOS v6.5 GitLab server

There seems to be two standard ways to install GitLab; the easy way (via an omnibus package) or the hard way (indivdual packages). The easy way didn't jusy work for me which lead me to look why. Although the omnibus install is an rpm install it falls short for me in that

  1. it's won't automatcally upgrade as it is a standalone RPM, the file has not been installed from a repository
  2. it's a large lump of unauditable 'stuff'



A quick look at available packages:

Package CentOS 6.x
Other versions
git 1.7 IUS: v2.0
Fedora 20: v1.9.x
PUIAS: 1.8.3



redis - EPEL: 2.4.10
CentALT: 2.8.9
Fedora 20: 2.6.16

ruby 1.8.7 Fedora 20: 2.0.0 2.1.2
Aredridel: 2.0.0
 An RPM based installation is prefered. This is being deployed into 'production'. Getting a modern version of ruby on CentOS v6 was problematic.

Fall back to installing all development tools and building ruby.
Postgresql: 9.3
Fedora: 9.3.4
CentOS SCL: 9.2.7
The package from the CentOS SCL packages is sufficient. The 9.3 package can be used from the postgresql repositories.
1.6 or 1.7
>= 1.3.9
Use the repo from the site. These RPM's are well maintained.

This component is installed on an independent machine.



Install repositories

Install the repository bootstrap files:

  • EPEL
  • aredridel
  • Postgresql
  • IUS
  • Nginx
# rpm -Uvh
# wget -O /etc/yum.repos.d/aredridel.repo \
# rpm -Uvh
# rpm -Uvh
# rpm -Uvh

Install packages

Install the packages.

# yum install git redis postgresql93-server postgresql93-devel nginx

Build Ruby

Install build tools. This turns a deployment machine into a development machine (yuk!):

yum -y groupinstall 'Development Tools'
yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel \
     tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel \
     libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt \
     libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo \
     wget crontabs logwatch logrotate perl-Time-HiRes

Compile the ruby package as a non-root user. Install as root with a '/' (root) prefix

# chmod o+wt /usr/local/src
$ cd /usr/local/src
$ wget
$ tar -xpzf ruby-2.1.2.tar.gz
$ cd ruby-2.1.2
$ ./configure --disable-install-rdoc
$ make
# make prefix=/ install

Install ruby gems:

# gem install bundler --no-doc
Fetching: bundler-1.6.3.gem (100%)
Successfully installed bundler-1.6.3
Done installing documentation for bundler (0 sec).
1 gem installed

Create git user

The GitLab processes will all run as the 'git' user. The GitLab programs and files will be installed in the git user directory (developer style install). The GitLab tar includes binaries which need to be available in the git users PATH. Set the git users password so that the account is disabled (if it is disabled then users will fail to authenticate using their SSH key).

# adduser --system --shell /bin/bash --comment 'GitLab' --create-home git
# passwd git

Edit '~git/.bash_profile':



Redis is installed not to run. Configure it to start.

# chkconfig redis on
# service redis start


The standard GitLab instructions say to do lots of stuff (rename services, symlink binaries etc). The default install has alternatives setup correctly and name the service 'postgresql-9.3'. It listens on IPv4/IPv4 localhost only.

# service postgresql-9.3 initdb
# chkconfig postgresql-9.3 on
# service postgresql-9.3 start

Create the GitLab database as the postgres user:

# su - postgres
$ psql -d template1
psql (9.3.4)
Type "help" for help.

template1=# CREATE USER git CREATEDB;
template1=# CREATE DATABASE gitlabhq_production OWNER git;
template1=# \q

Verify that the database and auth is correct by running (as the 'git' user) psql to connect to the database:

$ psql -d gitlabhq_production
psql (9.3.4)
Type "help" for help.

gitlabhq_production=> \q


As the 'git' user, download and unpackage the current version of GitLab. This will setup permissions so that the 'git' user owns the files:

# su - git
$ wget -O gitlab-7.0.tar.gz ""
$ tar -xpzf gitlab-7.0.tar.gz
$ mv gitlab-ce.git gitlab

Copy default configuration files and code:


$ cp config/gitlab.yml.example config/gitlab.yml
$ cp config/unicorn.rb.example config/unicorn.rb
$ cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
$ cp config/database.yml.postgresql config/database.yml


Edit the gitlab.yml config; change:

  • ssh_host
  • email_from

Set the git configuration for the git user (running as the git user):

$ git config --global "GitLab"
$ git config --global ""
$ git config --global core.autocrlf input

Install Gems

As the 'git' user install the gems:

$ cd ~/gitlab
$ bundle config --with-pg-config=/usr/pgsql-9.3/bin/pg_config
$ bundle install --deployment --without development test mysql aws

Install GitLab Shell

As the 'git' user:

$ cd ~/gitlab
$ bundle exec rake gitlab:shell:install[v1.9.6] REDIS_URL=redis://localhost:6379 RAILS_ENV=production

DB Init

$ bundle exec rake gitlab:setup RAILS_ENV=production

OS Integration


Init script

# wget -O /etc/init.d/gitlab
# chmod +x /etc/init.d/gitlab
# chkconfig --add gitlab

# cp /home/git/gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/

As 'git' verify the installation:

$ bundle exec rake gitlab:env:info RAILS_ENV=production

Start the service and compile assets:

# service gitlab start
$ cd ~/gitlab
$ bundle exec rake assets:precompile RAILS_ENV=production

Web Server

Put a http only web server in front of the application. TLS/SSL offload is handled elsewhere with certificate management


The Nginx configuration is a simple default site without any SSL.

  • Get the gitlab configuration template from gitlab.
  • Add the nginx user to the 'git' group so that Nginx can deliver content.
  • Grant access to the 'git' home directory to Nginx via group rights (this is important, otherwise Nginx will fail to deliver anything).


# wget -O /etc/nginx/conf.d/gitlab.conf
# usermod -a -G git nginx
# chmod 750 /home/git
# service nginx start

Browse to the site and login with the initial password:

GitLab Login 2014-06-25_142412.png

Omnibus installation

The omnibus install can be distilled down to:

# rpm -ivh
# gitlab-ctl reconfigure





Install packages

# yum install yum install git ruby redis postgresql93-server
Dependencies Resolved

 Package               Arch     Version               Repository        Size
 git                   x86_64           home_aredridel   6.4 M
 postgresql93-server   x86_64   9.3.4-1PGDG.rhel6     pgdg93           4.1 M
 redis                 x86_64   2.4.10-1.el6          epel             213 k
 ruby                  x86_64          home_aredridel    62 k
 ruby-devel            x86_64          home_aredridel   123 k
Installing for dependencies:
 apr                   x86_64   1.3.9-5.el6_2         base             123 k
 apr-util              x86_64   1.3.9-3.el6_0.1       base              87 k
 expat-devel           x86_64   2.0.1-11.el6_2        base             120 k
 gnutls                x86_64   2.8.5-14.el6_5        updates          346 k
 libdb                 x86_64   5.3.21-10.1           home_aredridel   693 k
 libproxy              x86_64   0.3.0-4.el6_3         base              39 k
 libproxy-bin          x86_64   0.3.0-4.el6_3         base             8.2 k
 libproxy-python       x86_64   0.3.0-4.el6_3         base             8.4 k
 libyaml               x86_64   0.1.6-1.el6           epel              52 k
 neon                  x86_64   0.29.3-3.el6_4        base             119 k
 openssh-clients       x86_64   5.3p1-94.el6          base             402 k
 pakchois              x86_64   0.4-3.2.el6           base              21 k
 perl-Error            noarch   1:0.17015-4.el6       base              29 k
 perl-Git              x86_64           home_aredridel    65 k
 perl-URI              noarch   1.40-2.el6            base             117 k
 perl-YAML             noarch   0.70-4.el6            base              81 k
 postgresql93          x86_64   9.3.4-1PGDG.rhel6     pgdg93           1.0 M
 postgresql93-libs     x86_64   9.3.4-1PGDG.rhel6     pgdg93           190 k
 rsync                 x86_64   3.0.6-9.el6_4.1       base             334 k
 ruby-irb              noarch          home_aredridel    85 k
 ruby-libs             x86_64          home_aredridel   2.7 M
 rubygem-bigdecimal    x86_64   1.2.0-45.2            home_aredridel    73 k
 rubygem-io-console    x86_64   0.4.2-45.2            home_aredridel    45 k
 rubygem-json          x86_64   1.7.7-45.2            home_aredridel    67 k
 rubygem-psych         x86_64   2.0.0-45.2            home_aredridel    71 k
 rubygem-rdoc          noarch   4.0.0-45.2            home_aredridel   321 k
 rubygems              noarch   2.0.0-45.2            home_aredridel   321 k
 subversion            x86_64   1.6.11-10.el6_5       updates          2.3 M
 subversion-perl       x86_64   1.6.11-10.el6_5       updates          796 k

Transaction Summary
Install      33 Package(s)

GitLab Shell Install

$ bundle exec rake gitlab:shell:install[v1.9.6] REDIS_URL=redis://localhost:6379 RAILS_ENV=production
Instance method "lock!" is already defined in ActiveRecord::Base, use generic helper instead or 
  set StateMachine::Machine.ignore_method_conflicts = true.
git clone '' '/home/git/gitlab-shell/'
Cloning into '/home/git/gitlab-shell'...
remote: Counting objects: 1251, done.
remote: Compressing objects: 100% (799/799), done.
remote: Total 1251 (delta 742), reused 720 (delta 400)
Receiving objects: 100% (1251/1251), 177.99 KiB | 125.00 KiB/s, done.
Resolving deltas: 100% (742/742), done.
Checking connectivity... done
git fetch origin && git reset --hard $(git describe v1.9.6 || git describe origin/v1.9.6)
HEAD is now at ca42556 Bump version
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 -exec chmod g+s {} ;: OK

DB Init

$ bundle exec rake gitlab:setup RAILS_ENV=production
Instance method "lock!" is already defined in ActiveRecord::Base, use generic helper 
  instead or set StateMachine::Machine.ignore_method_conflicts = true.
This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? yes

gitlabhq_production already exists
-- enable_extension("plpgsql")
   -> 0.0797s
-- create_table("broadcast_messages", {:force=>true})
   -> 0.0891s
-- create_table("deploy_keys_projects", {:force=>true})
   -> 0.0209s
-- add_index("deploy_keys_projects", ["project_id"], {:name=>"index_deploy_keys_projects_on_project_id", :using=>:btree})
   -> 0.0111s
-- create_table("emails", {:force=>true})
   -> 0.0232s
-- add_index("emails", ["email"], {:name=>"index_emails_on_email", :unique=>true, :using=>:btree})
   -> 0.0112s
-- add_index("emails", ["user_id"], {:name=>"index_emails_on_user_id", :using=>:btree})
   -> 0.0096s
-- create_table("events", {:force=>true})
   -> 0.0332s
-- add_index("events", ["action"], {:name=>"index_events_on_action", :using=>:btree})
   -> 0.0093s
-- add_index("events", ["author_id"], {:name=>"index_events_on_author_id", :using=>:btree})
   -> 0.0093s
-- add_index("events", ["created_at"], {:name=>"index_events_on_created_at", :using=>:btree})
   -> 0.0094s
-- add_index("events", ["project_id"], {:name=>"index_events_on_project_id", :using=>:btree})
   -> 0.0090s
-- add_index("events", ["target_id"], {:name=>"index_events_on_target_id", :using=>:btree})
   -> 0.0095s
-- add_index("events", ["target_type"], {:name=>"index_events_on_target_type", :using=>:btree})
   -> 0.0089s
-- create_table("forked_project_links", {:force=>true})
   -> 0.0193s
-- add_index("forked_project_links", ["forked_to_project_id"], {:name=>"index_forked_project_links_on_forked_to_project_id",
   :unique=>true, :using=>:btree})
   -> 0.0093s
-- create_table("issues", {:force=>true})
   -> 0.0481s
-- add_index("issues", ["assignee_id"], {:name=>"index_issues_on_assignee_id", :using=>:btree})
   -> 0.0085s
-- add_index("issues", ["author_id"], {:name=>"index_issues_on_author_id", :using=>:btree})
   -> 0.0089s
-- add_index("issues", ["created_at"], {:name=>"index_issues_on_created_at", :using=>:btree})
   -> 0.0086s
-- add_index("issues", ["milestone_id"], {:name=>"index_issues_on_milestone_id", :using=>:btree})
   -> 0.0095s
-- add_index("issues", ["project_id", "iid"], {:name=>"index_issues_on_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0110s
-- add_index("issues", ["project_id"], {:name=>"index_issues_on_project_id", :using=>:btree})
   -> 0.0086s
-- add_index("issues", ["title"], {:name=>"index_issues_on_title", :using=>:btree})
   -> 0.0087s
-- create_table("keys", {:force=>true})
   -> 0.0432s
-- add_index("keys", ["user_id"], {:name=>"index_keys_on_user_id", :using=>:btree})
   -> 0.0112s
-- create_table("merge_request_diffs", {:force=>true})
   -> 0.0274s
-- add_index("merge_request_diffs", ["merge_request_id"], {:name=>"index_merge_request_diffs_on_merge_request_id", 
  :unique=>true, :using=>:btree})
   -> 0.0080s
-- create_table("merge_requests", {:force=>true})
   -> 0.0350s
-- add_index("merge_requests", ["assignee_id"], {:name=>"index_merge_requests_on_assignee_id", :using=>:btree})
   -> 0.0087s
-- add_index("merge_requests", ["author_id"], {:name=>"index_merge_requests_on_author_id", :using=>:btree})
   -> 0.0085s
-- add_index("merge_requests", ["created_at"], {:name=>"index_merge_requests_on_created_at", :using=>:btree})
   -> 0.0092s
-- add_index("merge_requests", ["milestone_id"], {:name=>"index_merge_requests_on_milestone_id", :using=>:btree})
   -> 0.0084s
-- add_index("merge_requests", ["source_branch"], {:name=>"index_merge_requests_on_source_branch", :using=>:btree})
   -> 0.0085s
-- add_index("merge_requests", ["source_project_id"], {:name=>"index_merge_requests_on_source_project_id", :using=>:btree})
   -> 0.0087s
-- add_index("merge_requests", ["target_branch"], {:name=>"index_merge_requests_on_target_branch", :using=>:btree})
   -> 0.0095s
-- add_index("merge_requests", ["target_project_id", "iid"], {:name=>"index_merge_requests_on_target_project_id_and_iid", 
  :unique=>true, :using=>:btree})
   -> 0.0103s
-- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title", :using=>:btree})
   -> 0.0086s
-- create_table("milestones", {:force=>true})
   -> 0.0274s
-- add_index("milestones", ["due_date"], {:name=>"index_milestones_on_due_date", :using=>:btree})
   -> 0.0097s
-- add_index("milestones", ["project_id", "iid"], {:name=>"index_milestones_on_project_id_and_iid", :unique=>true, :using=>:btree})
   -> 0.0091s
-- add_index("milestones", ["project_id"], {:name=>"index_milestones_on_project_id", :using=>:btree})
   -> 0.0088s
-- create_table("namespaces", {:force=>true})
   -> 0.0311s
-- add_index("namespaces", ["name"], {:name=>"index_namespaces_on_name", :using=>:btree})
   -> 0.0090s
-- add_index("namespaces", ["owner_id"], {:name=>"index_namespaces_on_owner_id", :using=>:btree})
   -> 0.0082s
-- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path", :using=>:btree})
   -> 0.0086s
-- add_index("namespaces", ["type"], {:name=>"index_namespaces_on_type", :using=>:btree})
   -> 0.0091s
-- create_table("notes", {:force=>true})
   -> 0.0322s
-- add_index("notes", ["author_id"], {:name=>"index_notes_on_author_id", :using=>:btree})
   -> 0.0088s
-- add_index("notes", ["commit_id"], {:name=>"index_notes_on_commit_id", :using=>:btree})
   -> 0.0085s
-- add_index("notes", ["created_at"], {:name=>"index_notes_on_created_at", :using=>:btree})
   -> 0.0083s
-- add_index("notes", ["noteable_id", "noteable_type"], {:name=>"index_notes_on_noteable_id_and_noteable_type", :using=>:btree})
   -> 0.0098s
-- add_index("notes", ["noteable_type"], {:name=>"index_notes_on_noteable_type", :using=>:btree})
   -> 0.0085s
-- add_index("notes", ["project_id", "noteable_type"], {:name=>"index_notes_on_project_id_and_noteable_type", :using=>:btree})
   -> 0.0087s
-- add_index("notes", ["project_id"], {:name=>"index_notes_on_project_id", :using=>:btree})
   -> 0.0081s
-- add_index("notes", ["updated_at"], {:name=>"index_notes_on_updated_at", :using=>:btree})
   -> 0.0094s
-- create_table("projects", {:force=>true})
   -> 0.0365s
-- add_index("projects", ["creator_id"], {:name=>"index_projects_on_creator_id", :using=>:btree})
   -> 0.0104s
-- add_index("projects", ["last_activity_at"], {:name=>"index_projects_on_last_activity_at", :using=>:btree})
   -> 0.0084s
-- add_index("projects", ["namespace_id"], {:name=>"index_projects_on_namespace_id", :using=>:btree})
   -> 0.0086s
-- create_table("protected_branches", {:force=>true})
   -> 0.0190s
-- add_index("protected_branches", ["project_id"], {:name=>"index_protected_branches_on_project_id", :using=>:btree})
   -> 0.0083s
-- create_table("services", {:force=>true})
   -> 0.0333s
-- add_index("services", ["project_id"], {:name=>"index_services_on_project_id", :using=>:btree})
   -> 0.0125s
-- create_table("snippets", {:force=>true})
   -> 0.0320s
-- add_index("snippets", ["author_id"], {:name=>"index_snippets_on_author_id", :using=>:btree})
   -> 0.0099s
-- add_index("snippets", ["created_at"], {:name=>"index_snippets_on_created_at", :using=>:btree})
   -> 0.0092s
-- add_index("snippets", ["expires_at"], {:name=>"index_snippets_on_expires_at", :using=>:btree})
   -> 0.0095s
-- add_index("snippets", ["project_id"], {:name=>"index_snippets_on_project_id", :using=>:btree})
   -> 0.0087s
-- create_table("taggings", {:force=>true})
   -> 0.0261s
-- add_index("taggings", ["tag_id"], {:name=>"index_taggings_on_tag_id", :using=>:btree})
   -> 0.0082s
-- add_index("taggings", ["taggable_id", "taggable_type", "context"], 
  {:name=>"index_taggings_on_taggable_id_and_taggable_type_and_context", :using=>:btree})
   -> 0.0118s
-- create_table("tags", {:force=>true})
   -> 0.0187s
-- create_table("users", {:force=>true})
   -> 0.0499s
-- add_index("users", ["admin"], {:name=>"index_users_on_admin", :using=>:btree})
   -> 0.0089s
-- add_index("users", ["authentication_token"], {:name=>"index_users_on_authentication_token", :unique=>true, :using=>:btree})
   -> 0.0085s
-- add_index("users", ["confirmation_token"], {:name=>"index_users_on_confirmation_token", :unique=>true, :using=>:btree})
   -> 0.0086s
-- add_index("users", ["current_sign_in_at"], {:name=>"index_users_on_current_sign_in_at", :using=>:btree})
   -> 0.0086s
-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true, :using=>:btree})
   -> 0.0087s
-- add_index("users", ["extern_uid", "provider"], {:name=>"index_users_on_extern_uid_and_provider", :unique=>true, :using=>:btree})
   -> 0.0088s
-- add_index("users", ["name"], {:name=>"index_users_on_name", :using=>:btree})
   -> 0.0084s
-- add_index("users", ["reset_password_token"], {:name=>"index_users_on_reset_password_token", :unique=>true, :using=>:btree})
   -> 0.0092s
-- add_index("users", ["username"], {:name=>"index_users_on_username", :using=>:btree})
   -> 0.0086s
-- create_table("users_groups", {:force=>true})
   -> 0.0208s
-- add_index("users_groups", ["user_id"], {:name=>"index_users_groups_on_user_id", :using=>:btree})
   -> 0.0086s
-- create_table("users_projects", {:force=>true})
   -> 0.0230s
-- add_index("users_projects", ["project_access"], {:name=>"index_users_projects_on_project_access", :using=>:btree})
   -> 0.0090s
-- add_index("users_projects", ["project_id"], {:name=>"index_users_projects_on_project_id", :using=>:btree})
   -> 0.0080s
-- add_index("users_projects", ["user_id"], {:name=>"index_users_projects_on_user_id", :using=>:btree})
   -> 0.0076s
-- create_table("web_hooks", {:force=>true})
   -> 0.0292s
-- add_index("web_hooks", ["project_id"], {:name=>"index_web_hooks_on_project_id", :using=>:btree})
   -> 0.0093s
-- initialize_schema_migrations_table()
   -> 0.0026s
Adding limits to schema.rb for mysql

== Seed from /home/git/gitlab/db/fixtures/production/001_admin.rb
2014-06-24T06:31:20Z 23328 TID-ox1z0abbk INFO: Sidekiq client with redis 
  options {:url=>"redis://localhost:6379", :namespace=>"resque:gitlab"}

Administrator account created:

GitLab Verify

$ /home/git/gitlab/lib/support/logrotate/gitlabbundle exec rake gitlab:env:info RAILS_ENV=production
-bash: /home/git/gitlab/lib/support/logrotate/gitlabbundle: No such file or directory
[git@indigo gitlab]$ bundle exec rake gitlab:env:info RAILS_ENV=production
Instance method "lock!" is already defined in ActiveRecord::Base, use generic helper 
instead or set StateMachine::Machine.ignore_method_conflicts = true.

System information
Current User:   git
Using RVM:      no
Ruby Version:   2.1.2p95
Gem Version:    2.2.2
Bundler Version:1.6.3
Rake Version:   10.3.2
Sidekiq Version:2.17.0

GitLab information
Version:        7.0.0
Revision:       fatal: Not a git repository (or any of the parent directories): .git
Directory:      /home/git/gitlab
DB Adapter:     postgresql
SSH Clone URL:
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        1.9.6
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/
Git:            /usr/bin/git

Full Check

$ bundle exec rake gitlab:check RAILS_ENV=production
Instance method "lock!" is already defined in ActiveRecord::Base, use generic helper instead or set 
  StateMachine::Machine.ignore_method_conflicts = true.
Checking Environment ...

Git configured for git user? ... yes

Checking Environment ... Finished

Checking GitLab Shell ...

GitLab Shell version >= 1.9.6 ? ... OK (1.9.6)
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
Satellites access is drwxr-x---? ... can't check because of previous errors
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: FAILED. code: 404
gitlab-shell self-check failed
  Try fixing it:
  Make sure GitLab is running;
  Check the gitlab-shell configuration file:
  sudo -u git -H editor /home/git/gitlab-shell/config.yml
  Please fix the error above and rerun the checks.

Checking GitLab Shell ... Finished

Checking Sidekiq ...

Running? ... yes
Number of Sidekiq processes ... 1

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
Database contains orphaned UsersGroups? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Init script exists? ... yes
Init script up-to-date? ... no
  Try fixing it:
  Redownload the init script
  For more information see:
  doc/install/ in section "Install Init Script"
  Please fix the error above and rerun the checks.
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 ? ... yes (1.8.3)

Checking GitLab ... Finished

Install Ominbus

Note: The install package is 273Megabytes

# rpm -ivh
Preparing...                ########################################### [100%]
   1:gitlab                 ########################################### [100%]
Thank you for installing GitLab!
You can configure GitLab for your system by running the following command:

sudo gitlab-ctl reconfigure

Nginx Configuration (non-SSL)

upstream gitlab {
  server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;

server {
  listen [::]:80 default_server;
  server_name "";

  client_max_body_size 20m;

  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  root /home/git/gitlab/public;
  location / {
    try_files $uri $uri/index.html $uri.html @gitlab;

  location @gitlab {
    proxy_read_timeout 300; # Some requests take more than 30 seconds.
    proxy_connect_timeout 300; # Some requests take more than 30 seconds.
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Frame-Options   SAMEORIGIN;

    proxy_pass         http://gitlab;

  location ~ ^/(assets)/  {
    root        /home/git/gitlab/public;
    gzip_static on; # to serve pre-gzipped version
    expires     max;
    add_header  Cache-Control public;

  error_page    502 /502.html;

GitLab CentOS Install

GitLab CentOS Install Instructions 2014-06-23_114420.png

Document Actions