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
- it's won't automatcally upgrade as it is a standalone RPM, the file has not been installed from a repository
- it's a large lump of unauditable 'stuff'
Packages
A quick look at available packages:
Package | CentOS 6.x |
Other versions |
Required |
Comments |
---|---|---|---|---|
git | 1.7 | IUS: 1.8.5.5 git-scm.com: v2.0 Fedora 20: v1.9.x PUIAS: 1.8.3
|
v1.8.x |
|
redis | - | EPEL: 2.4.10 CentALT: 2.8.9 Fedora 20: 2.6.16 |
||
ruby | 1.8.7 | Fedora 20: 2.0.0 ruby-lang.org: 2.1.2 2.0.0 |
v2.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 |
8.4.20 |
Postgresql: 9.3 Fedora: 9.3.4 CentOS SCL: 9.2.7 |
9.1 |
The package from the CentOS SCL packages is sufficient. The 9.3 package can be used from the postgresql repositories. |
nginx |
old |
1.6 or 1.7 |
>= 1.3.9 |
Use the repo from the nginx.org site. These RPM's are well maintained. This component is installed on an independent machine. |
Install
Install repositories
Install the repository bootstrap files:
- EPEL
- aredridel
- Postgresql
- IUS
- Nginx
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # wget -O /etc/yum.repos.d/aredridel.repo \ http://ftp5.gwdg.de/pub/opensuse/repositories/home:/aredridel/CentOS_CentOS-6/home:aredridel.repo # rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm # rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-11.ius.el6.noarch.rpm # rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
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 ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz $ 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':
PATH=$PATH:$HOME/gitlab/bin:$HOME/bin
Redis
Redis is installed not to run. Configure it to start.
# chkconfig redis on # service redis start
PostgreSQL
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; CREATE ROLE template1=# CREATE DATABASE gitlabhq_production OWNER git; CREATE DATABASE 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
GitLab
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 "https://gitlab.com/gitlab-org/gitlab-ce/repository/archive.tar.gz?ref=7-0-stable" $ 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 user.name "GitLab" $ git config --global user.email "gitlab@lucidsolutions.co.nz" $ git config --global core.autocrlf input
Install Gems
As the 'git' user install the gems:
$ cd ~/gitlab $ bundle config build.pg --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 https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn
# 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
Nginx
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 https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab # usermod -a -G git nginx # chmod 750 /home/git # service nginx start
Browse to the site and login with the initial password:
Omnibus installation
The omnibus install can be distilled down to:
# rpm -ivh https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.0.0_omnibus-1.el6.x86_64.rpm # gitlab-ctl reconfigure
Links
- https://about.gitlab.com/2014/06/22/gitlab-7-dot-0-released/
- https://about.gitlab.com/installation/
- https://gitlab.com/gitlab-org/gitlab-ce/branches
- https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/install/centos
- https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
- https://gitlab.com/gitlab-org/gitlab-ce/blob/7-0-stable/doc/install/installation.md
Appendices
Install packages
# yum install yum install git ruby redis postgresql93-server Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: git x86_64 1.8.3.4-2.1 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 2.0.0.0-45.2 home_aredridel 62 k ruby-devel x86_64 2.0.0.0-45.2 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 1.8.3.4-2.1 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 2.0.0.0-45.2 home_aredridel 85 k ruby-libs x86_64 2.0.0.0-45.2 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 'https://gitlab.com/gitlab-org/gitlab-shell.git' '/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 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 -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: login.........admin@local.host password......5iveL!fe
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 System: 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 URL: http://gitlab.lucidsolutions.co.nz HTTP Clone URL: http://gitlab.lucidsolutions.co.nz/some-project.git SSH Clone URL: git@indigo.lucidsolutions.co.nz:some-project.git 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/installation.md 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 https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.0.0_omnibus-1.el6.x86_64.rpm Retrieving https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.0.0_omnibus-1.el6.x86_64.rpm 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 gitlab.lucidsolutions.co.nz ""; 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; }