SlideShare a Scribd company logo
GitLab Installation with Git & Gitolite on CentOS – 6.3




                       Raiful Hasan

                     DIVINE IT LIMITED
GitLab Installation on CentOS – 6.3


Preperation:


The main problem with installing GitLab on CentOS is that - other than Ubuntu or Fedora - it
doesn't have the ICU(lib) installed and
that's why ruby crashes/doesn't run around.

We will work as root most of the time, so make sure you have the permissions to do so


First of all we need to add the epel repo to yum to get all the packages we want.



1: rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

Then we install all required packages:



1: yum -y groupinstall 'Development Tools' 'Additional Development'
2: yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel
expat-devel db4-devel byacc gitolite sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-
devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui python-devel redis



Up next: Downloading and extracting ruby:


1: curl -O http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
2: tar xzvf ruby-1.9.3-p0.tar.gz
3: cd ruby-1.9.3-p0




1) Configure without binary suffix

1: ./configure --enable-shared --disable-pthread

Now install ruby:

1: make && make install




DIVINE IT LIMITED                                                                                              Page 2
GitLab Installation on CentOS – 6.3


Some may need to install qt-devel qtwebkit-devel by running (Replace the 64 in the path with
32 if you're running on a 32 bit box)


1: yum install qt-devel qtwebkit-devel
2: export PATH=$PATH:/usr/lib64/qt4/bin

Now we have to install all the gems GitLab needs to run:


1: gem update --system
2: gem update
3: gem install rails

Now everything is set up and we can start to configure the environment for GitLab. First we
create a user, that will run GitLab:


1: adduser --shell /bin/bash --create-home --home-dir /home/gitlab gitlab

Because this user will be the Admin of the repos on the server, we need to have a RSA key pair
to authenticate:


1: su gitlab
2: ssh-keygen -t rsa # as gitlab user



Now switch back to root account. Because GitLab is only a graphical user interface to manage
repos, we need a powerfull backend. gitolite will do this for us.
We also need a user for gitolite.


1: adduser --system --shell /bin/sh --comment 'gitolite' --create-home --home-dir /home/git git



Gitolite needs to know one key, that it knows as admin. We will pass the key of GitLab to
gitolite. To do so we first copy the private key of our gitlab user to the home
directory of our gitolite user:


1: # make sure you do this as root
2: cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub




DIVINE IT LIMITED                                                                                 Page 3
GitLab Installation on CentOS – 6.3


Now we need to initialize gitolite:


1: su git
2: gl-setup ~/gitlab.pub # this passes the admin key to gitolite

When the prompt appears edit the provided file (it's in a vi-Editor) and set $REPO_UMASK to
0007

Switch back to root user now.

We now need to give our management software (GitLab) access to the repos:



1: usermod -a -G git gitlab
2: chmod -R g+rwX /home/git/repositories/
3: chmod 770 /home/git



Because the gitlab user will need a password later on, we configure it right now, so we are
finished with all the user stuff.


1: passwd gitlab # please choose a good password :)



As next step we need to introduce GitLab to gitolite (that is, we let them change their SSH-keys)


1: su gitlab
2: ssh git@localhost



and back to the root user, so we don't need to care about permissions.

GitLab needs a few gems, we haven't installed yet:

1:   curl http://python-distribute.org/distribute_setup.py | python
2:   easy_install pip
3:   pip install pygments
4:   gem install bundler



As mentioned before, the gitlab user will have to do a bit of administration stuff, so we need to

DIVINE IT LIMITED                                                                          Page 4
GitLab Installation on CentOS – 6.3


give him sudo rights. To do so, we edit the sudoers file with visudo:


1: visudo



Add gitlab ALL=(ALL) ALL after root ALL=(ALL) ALL so it looks like this:


1:   ...
2:   root ALL=(ALL) ALL
3:   gitlab ALL=(ALL) ALL
4:   ...



Do not edit anything else!!!

After another two gems we are finished with the gem stuff:



1: gem install ruby-debug19
2: gem install charlock_holmes



We now switch to our gitlab user and we won't use our root account anymore:


1: su gitlab



Get the GitLab software:

1: cd && git clone git://github.com/gitlabhq/gitlabhq.git
2: cd gitlabhq
We're nearly done. Next we bundle our application.


1: bundle install



GitLab will use a MySQL database (in our case), which we need to install and start:

1: yum -y install mysql-server
2: /etc/init.d/mysqld start


DIVINE IT LIMITED                                                                     Page 5
GitLab Installation on CentOS – 6.3


To configure the MySQL server easily we use:



1: mysql_secure_installation



Remember the password type in for root!

We now connect to our database server to create a user for GitLab:



1: mysql -u root -p # when prompted enter the root password we've chosen in mysql_secure_installation



We now have a mysql shell. Mind the trailing ; !



1: mysql> CREATE DATABASE gitlab CHARACTER SET UTF8;
2: mysql> GRANT ALL PRIVILEGES ON gitlab.* TO 'gitlabusr'@'localhost' IDENTIFIED BY 'supersecret' WITH GRANT
OPTION;
3: mysql> quit



Remember the password and username (here: gitlabusr and supersecret)!


To create the database a script is deployed with GitLab. However it needs an additional service
to run:



1: sudo nohup redis-server > /dev/null



Enter the password created for the gitlab user and hit CTRL+Z. Then type



1: bg



The service is now running in background.

DIVINE IT LIMITED                                                                                       Page 6
GitLab Installation on CentOS – 6.3


We now configure GitLab by copying the configurion files from example to real:



1: cp ~/gitlabhq/config/database.yml.example ~/gitlabhq/config/database.yml
2: cp ~/gitlabhq/config/gitlab.yml.example ~/gitlabhq/config/gitlab.yml

In database.yml we have to edit the production settings of database (at the very top of the file).
We have to change the database-name, username and password.

We will now create the database structure:



1: RAILS_ENV=production rake db:setup
2: RAILS_ENV=production rake db:seed_fu



To start the server we use



1: bundle exec rails s -e production




That's it. We're done. All have to do now, is set up firewall and navigate to http://ip-or-
domain:3000/ and log in with

user: admin@local.host
pass: 5iveL!fe




DIVINE IT LIMITED                                                                             Page 7

More Related Content

PDF
Git lab installation guide
PPTX
Intro to Git DevOps Tally Presentation 101615
PDF
Introduction to Sumatra
ODP
Releasing and deploying python tools
PDF
Kubernetes installation
PDF
Git: An introduction of plumbing and porcelain commands
ZIP
Deploying Rails applications with Moonshine
PPTX
How to create a secured multi tenancy for clustered ML with JupyterHub
Git lab installation guide
Intro to Git DevOps Tally Presentation 101615
Introduction to Sumatra
Releasing and deploying python tools
Kubernetes installation
Git: An introduction of plumbing and porcelain commands
Deploying Rails applications with Moonshine
How to create a secured multi tenancy for clustered ML with JupyterHub

What's hot (20)

PPTX
How to go the extra mile on monitoring
PPTX
AWS 기반 Docker, Kubernetes
PPTX
How to create a multi tenancy for an interactive data analysis with jupyter h...
PPTX
My sql failover test using orchestrator
PDF
Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...
PDF
Installing spark 2
PPTX
Installing OpenStack Juno using RDO on RHEL
PPTX
How to manage Microsoft Azure with open source
PDF
MySQL replication & cluster
PDF
Openstack installation using rdo multi node
PPTX
Installing hive on ubuntu 16
PDF
使用 CLI 管理 OpenStack 平台
PPTX
Docker on openstack by OpenSource Consulting
PPTX
Installing apache sqoop
PDF
Build your own private openstack cloud
DOCX
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
PPTX
Installing hadoop on ubuntu 16
PPTX
{'python': 'dict'}
PDF
Docker 基本概念與指令操作
PDF
CoreOS : 설치부터 컨테이너 배포까지
How to go the extra mile on monitoring
AWS 기반 Docker, Kubernetes
How to create a multi tenancy for an interactive data analysis with jupyter h...
My sql failover test using orchestrator
Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...
Installing spark 2
Installing OpenStack Juno using RDO on RHEL
How to manage Microsoft Azure with open source
MySQL replication & cluster
Openstack installation using rdo multi node
Installing hive on ubuntu 16
使用 CLI 管理 OpenStack 平台
Docker on openstack by OpenSource Consulting
Installing apache sqoop
Build your own private openstack cloud
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
Installing hadoop on ubuntu 16
{'python': 'dict'}
Docker 基本概念與指令操作
CoreOS : 설치부터 컨테이너 배포까지
Ad

Viewers also liked (13)

PDF
git 101
ODP
Git Rápido e Fácil
PDF
Basics About Git & GitHub
PDF
Nway-Project, Git, github & opensource
PPTX
Introdução ao Git
PDF
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
PPTX
Fluxo de desenvolvimento de software utilizando Git
PDF
GIT Introduction
PDF
Controle de versão utilizando git
PDF
Gitlab flow
PDF
Gitlab flow solo
PPTX
Up GitLab Presentation 2015
PDF
Aprendendo Git
git 101
Git Rápido e Fácil
Basics About Git & GitHub
Nway-Project, Git, github & opensource
Introdução ao Git
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Fluxo de desenvolvimento de software utilizando Git
GIT Introduction
Controle de versão utilizando git
Gitlab flow
Gitlab flow solo
Up GitLab Presentation 2015
Aprendendo Git
Ad

Similar to Gitlab installation (20)

PPTX
How To Install GitLab As Your Private GitHub Clone
PPTX
GIT in a nutshell
PDF
FOSDEM 2017: GitLab CI
KEY
Matt Gauger - Git & Github web414 December 2010
PDF
Gitlab Training with GIT and SourceTree
PPTX
Git for a newbie
PPTX
Os dev tool box
PPT
Introduction to Git and Github
DOCX
Git github
PPTX
1-Intro to VC & GIT PDF.pptx
PDF
5 Things I Wish I Knew About Gitlab CI
PPTX
Git intro hands on windows with msysgit
PDF
Gitlab and Lingvokot
PDF
The Secrets of The FullStack Ninja - Part A - Session I
PPTX
Hello Git
PDF
Git training
PDF
Docker at Digital Ocean
PDF
Introduction to Git for Artists
PDF
Git hooks
PPTX
Git and Github.pptx
How To Install GitLab As Your Private GitHub Clone
GIT in a nutshell
FOSDEM 2017: GitLab CI
Matt Gauger - Git & Github web414 December 2010
Gitlab Training with GIT and SourceTree
Git for a newbie
Os dev tool box
Introduction to Git and Github
Git github
1-Intro to VC & GIT PDF.pptx
5 Things I Wish I Knew About Gitlab CI
Git intro hands on windows with msysgit
Gitlab and Lingvokot
The Secrets of The FullStack Ninja - Part A - Session I
Hello Git
Git training
Docker at Digital Ocean
Introduction to Git for Artists
Git hooks
Git and Github.pptx

Recently uploaded (20)

PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
cuic standard and advanced reporting.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Cloud computing and distributed systems.
PPT
Teaching material agriculture food technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MIND Revenue Release Quarter 2 2025 Press Release
cuic standard and advanced reporting.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The Rise and Fall of 3GPP – Time for a Sabbatical?
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Encapsulation_ Review paper, used for researhc scholars
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Cloud computing and distributed systems.
Teaching material agriculture food technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton

Gitlab installation

  • 1. GitLab Installation with Git & Gitolite on CentOS – 6.3 Raiful Hasan DIVINE IT LIMITED
  • 2. GitLab Installation on CentOS – 6.3 Preperation: The main problem with installing GitLab on CentOS is that - other than Ubuntu or Fedora - it doesn't have the ICU(lib) installed and that's why ruby crashes/doesn't run around. We will work as root most of the time, so make sure you have the permissions to do so First of all we need to add the epel repo to yum to get all the packages we want. 1: rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm Then we install all required packages: 1: yum -y groupinstall 'Development Tools' 'Additional Development' 2: yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc gitolite sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2- devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui python-devel redis Up next: Downloading and extracting ruby: 1: curl -O http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz 2: tar xzvf ruby-1.9.3-p0.tar.gz 3: cd ruby-1.9.3-p0 1) Configure without binary suffix 1: ./configure --enable-shared --disable-pthread Now install ruby: 1: make && make install DIVINE IT LIMITED Page 2
  • 3. GitLab Installation on CentOS – 6.3 Some may need to install qt-devel qtwebkit-devel by running (Replace the 64 in the path with 32 if you're running on a 32 bit box) 1: yum install qt-devel qtwebkit-devel 2: export PATH=$PATH:/usr/lib64/qt4/bin Now we have to install all the gems GitLab needs to run: 1: gem update --system 2: gem update 3: gem install rails Now everything is set up and we can start to configure the environment for GitLab. First we create a user, that will run GitLab: 1: adduser --shell /bin/bash --create-home --home-dir /home/gitlab gitlab Because this user will be the Admin of the repos on the server, we need to have a RSA key pair to authenticate: 1: su gitlab 2: ssh-keygen -t rsa # as gitlab user Now switch back to root account. Because GitLab is only a graphical user interface to manage repos, we need a powerfull backend. gitolite will do this for us. We also need a user for gitolite. 1: adduser --system --shell /bin/sh --comment 'gitolite' --create-home --home-dir /home/git git Gitolite needs to know one key, that it knows as admin. We will pass the key of GitLab to gitolite. To do so we first copy the private key of our gitlab user to the home directory of our gitolite user: 1: # make sure you do this as root 2: cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub DIVINE IT LIMITED Page 3
  • 4. GitLab Installation on CentOS – 6.3 Now we need to initialize gitolite: 1: su git 2: gl-setup ~/gitlab.pub # this passes the admin key to gitolite When the prompt appears edit the provided file (it's in a vi-Editor) and set $REPO_UMASK to 0007 Switch back to root user now. We now need to give our management software (GitLab) access to the repos: 1: usermod -a -G git gitlab 2: chmod -R g+rwX /home/git/repositories/ 3: chmod 770 /home/git Because the gitlab user will need a password later on, we configure it right now, so we are finished with all the user stuff. 1: passwd gitlab # please choose a good password :) As next step we need to introduce GitLab to gitolite (that is, we let them change their SSH-keys) 1: su gitlab 2: ssh git@localhost and back to the root user, so we don't need to care about permissions. GitLab needs a few gems, we haven't installed yet: 1: curl http://python-distribute.org/distribute_setup.py | python 2: easy_install pip 3: pip install pygments 4: gem install bundler As mentioned before, the gitlab user will have to do a bit of administration stuff, so we need to DIVINE IT LIMITED Page 4
  • 5. GitLab Installation on CentOS – 6.3 give him sudo rights. To do so, we edit the sudoers file with visudo: 1: visudo Add gitlab ALL=(ALL) ALL after root ALL=(ALL) ALL so it looks like this: 1: ... 2: root ALL=(ALL) ALL 3: gitlab ALL=(ALL) ALL 4: ... Do not edit anything else!!! After another two gems we are finished with the gem stuff: 1: gem install ruby-debug19 2: gem install charlock_holmes We now switch to our gitlab user and we won't use our root account anymore: 1: su gitlab Get the GitLab software: 1: cd && git clone git://github.com/gitlabhq/gitlabhq.git 2: cd gitlabhq We're nearly done. Next we bundle our application. 1: bundle install GitLab will use a MySQL database (in our case), which we need to install and start: 1: yum -y install mysql-server 2: /etc/init.d/mysqld start DIVINE IT LIMITED Page 5
  • 6. GitLab Installation on CentOS – 6.3 To configure the MySQL server easily we use: 1: mysql_secure_installation Remember the password type in for root! We now connect to our database server to create a user for GitLab: 1: mysql -u root -p # when prompted enter the root password we've chosen in mysql_secure_installation We now have a mysql shell. Mind the trailing ; ! 1: mysql> CREATE DATABASE gitlab CHARACTER SET UTF8; 2: mysql> GRANT ALL PRIVILEGES ON gitlab.* TO 'gitlabusr'@'localhost' IDENTIFIED BY 'supersecret' WITH GRANT OPTION; 3: mysql> quit Remember the password and username (here: gitlabusr and supersecret)! To create the database a script is deployed with GitLab. However it needs an additional service to run: 1: sudo nohup redis-server > /dev/null Enter the password created for the gitlab user and hit CTRL+Z. Then type 1: bg The service is now running in background. DIVINE IT LIMITED Page 6
  • 7. GitLab Installation on CentOS – 6.3 We now configure GitLab by copying the configurion files from example to real: 1: cp ~/gitlabhq/config/database.yml.example ~/gitlabhq/config/database.yml 2: cp ~/gitlabhq/config/gitlab.yml.example ~/gitlabhq/config/gitlab.yml In database.yml we have to edit the production settings of database (at the very top of the file). We have to change the database-name, username and password. We will now create the database structure: 1: RAILS_ENV=production rake db:setup 2: RAILS_ENV=production rake db:seed_fu To start the server we use 1: bundle exec rails s -e production That's it. We're done. All have to do now, is set up firewall and navigate to http://ip-or- domain:3000/ and log in with user: admin@local.host pass: 5iveL!fe DIVINE IT LIMITED Page 7