SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

How to go the extra mile on monitoring
How to go the extra mile on monitoringHow to go the extra mile on monitoring
How to go the extra mile on monitoringTiago Simões
 
AWS 기반 Docker, Kubernetes
AWS 기반 Docker, KubernetesAWS 기반 Docker, Kubernetes
AWS 기반 Docker, Kubernetes정빈 권
 
How to create a multi tenancy for an interactive data analysis with jupyter h...
How to create a multi tenancy for an interactive data analysis with jupyter h...How to create a multi tenancy for an interactive data analysis with jupyter h...
How to create a multi tenancy for an interactive data analysis with jupyter h...Tiago Simões
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestratorYoungHeon (Roy) Kim
 
Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...
Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...
Software-defined Datacenter Maintenance - No More Sleepless Nights and Long W...SUSE
 
Installing spark 2
Installing spark 2Installing spark 2
Installing spark 2Ahmed Mekawy
 
Installing OpenStack Juno using RDO on RHEL
Installing OpenStack Juno using RDO on RHELInstalling OpenStack Juno using RDO on RHEL
Installing OpenStack Juno using RDO on RHELopenstackstl
 
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open sourceHow to manage Microsoft Azure with open source
How to manage Microsoft Azure with open sourceTaehee Jang
 
MySQL replication & cluster
MySQL replication & clusterMySQL replication & cluster
MySQL replication & clusterelliando dias
 
Openstack installation using rdo multi node
Openstack installation using rdo multi nodeOpenstack installation using rdo multi node
Openstack installation using rdo multi nodeNarasimha sreeram
 
Installing hive on ubuntu 16
Installing hive on ubuntu 16Installing hive on ubuntu 16
Installing hive on ubuntu 16Enrique Davila
 
使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台NUTC, imac
 
Docker on openstack by OpenSource Consulting
Docker on openstack by OpenSource ConsultingDocker on openstack by OpenSource Consulting
Docker on openstack by OpenSource ConsultingOpen Source Consulting
 
Installing apache sqoop
Installing apache sqoopInstalling apache sqoop
Installing apache sqoopEnrique Davila
 
Build your own private openstack cloud
Build your own private openstack cloudBuild your own private openstack cloud
Build your own private openstack cloudNUTC, imac
 
Tutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of IndiaTutorial to setup OpenStreetMap tileserver with customized boundaries of India
Tutorial to setup OpenStreetMap tileserver with customized boundaries of IndiaArun Ganesh
 
Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Enrique Davila
 
{'python': 'dict'}
{'python': 'dict'}{'python': 'dict'}
{'python': 'dict'}nybon
 
Docker 基本概念與指令操作
Docker  基本概念與指令操作Docker  基本概念與指令操作
Docker 基本概念與指令操作NUTC, imac
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지충섭 김
 

Tendances (20)

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

En vedette

Basics About Git & GitHub
Basics About Git & GitHubBasics About Git & GitHub
Basics About Git & GitHubRaiful Hasan
 
Nway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceNway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceHudson Mendes
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Mauro George
 
Fluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitFluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitBruno Ricardo Siqueira
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando gitfredmosc
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow soloviniciusban
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
 

En vedette (14)

git 101
git 101git 101
git 101
 
Git Rápido e Fácil
Git Rápido e FácilGit Rápido e Fácil
Git Rápido e Fácil
 
Basics About Git & GitHub
Basics About Git & GitHubBasics About Git & GitHub
Basics About Git & GitHub
 
Nway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceNway-Project, Git, github & opensource
Nway-Project, Git, github & opensource
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Fluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitFluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando Git
 
GIT Introduction
GIT IntroductionGIT Introduction
GIT Introduction
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando git
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 

Similaire à Gitlab installation

How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneVEXXHOST Private Cloud
 
GIT in a nutshell
GIT in a nutshellGIT in a nutshell
GIT in a nutshellalignan
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CIOlinData
 
Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
Git for a newbie
Git for a newbieGit for a newbie
Git for a newbieAnuj Sharma
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool boxbpowell29a
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CISebastian Witowski
 
Git intro hands on windows with msysgit
Git intro hands on windows with msysgitGit intro hands on windows with msysgit
Git intro hands on windows with msysgitGeshan Manandhar
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and LingvokotLingvokot
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IOded Sagir
 
Hello Git
Hello GitHello Git
Hello Gitbsadd
 
Docker at Digital Ocean
Docker at Digital OceanDocker at Digital Ocean
Docker at Digital OceanCloud 66
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for ArtistsDavid Newbury
 
Git and Github.pptx
Git and Github.pptxGit and Github.pptx
Git and Github.pptxHitesh670643
 

Similaire à Gitlab installation (20)

How To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub CloneHow To Install GitLab As Your Private GitHub Clone
How To Install GitLab As Your Private GitHub Clone
 
GIT in a nutshell
GIT in a nutshellGIT in a nutshell
GIT in a nutshell
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CI
 
Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
Git for a newbie
Git for a newbieGit for a newbie
Git for a newbie
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool box
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git github
Git githubGit github
Git github
 
1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI
 
Git intro hands on windows with msysgit
Git intro hands on windows with msysgitGit intro hands on windows with msysgit
Git intro hands on windows with msysgit
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session I
 
Hello Git
Hello GitHello Git
Hello Git
 
Git training
Git trainingGit training
Git training
 
Docker at Digital Ocean
Docker at Digital OceanDocker at Digital Ocean
Docker at Digital Ocean
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
 
Git hooks
Git hooksGit hooks
Git hooks
 
Git and Github.pptx
Git and Github.pptxGit and Github.pptx
Git and Github.pptx
 

Dernier

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Dernier (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

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