Skip to content

Instantly share code, notes, and snippets.

@neuralsandwich
Last active September 25, 2019 08:46
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save neuralsandwich/6754210 to your computer and use it in GitHub Desktop.
Save neuralsandwich/6754210 to your computer and use it in GitHub Desktop.
GitLab installation on CentOS 6

Overview

The GitLab installation consists of setting up the following components:

  1. Packages / Dependencies
  2. Ruby
  3. System Users
  4. GitLab shell
  5. Database
  6. GitLab
  7. Nginx

1. Packages / Dependencies

# run as root!
yum update

# Now time to install the required packages:
yum groupinstall "Development Tools"
yum install zlib-devel libyaml-devel openssl-devel gdbm-devel readline-devel \
ncurses-devel libffi-devel curl git openssh-server libxml2-devel libxslt-devel \
libicu-devel redis mysql mysql-devel

Make sure you have the right version of Python installed.

# Install Python
sudo yum install python

# Make sure that Python is 2.5+ (3.x is not supported at the moment)
python --version

# If it's Python 3 you might need to install Python 2 separately
sudo yum install python2.7

# Make sure you can access Python via python2
python2 --version

# If you get a "command not found" error create a link to the python binary
sudo ln -s /usr/bin/python /usr/bin/python2

# For reStructuredText markup language support install required package:
sudo yum install python-docutils

Note: In order to receive mail notifications, make sure to install a mail server.

yum install postfix

The select 'Internet Site' and press enter to confirm the hostname.

2. Ruby

Download Ruby and compile it:

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
cd ruby-2.0.0-p247
./configure
make
sudo make install

Install the Bundler Gem:

gem install bundler --no-ri --no-rdoc

3. System Users

Create a git users for Gitlab:

useradd -r git
passwd -l git

4. GitLab shell

GitLab Shell is an ssh access and repository management software developed specially for GitLab.

# Go to home directory
cd /home/git

# Clone gitlab shell
su git
git clone https://github.com/gitlabhq/gitlab-shell.git

cd gitlab-shell

# switch to right version
git checkout v1.7.1

cp config.yml.example config.yml

# Edit config and replace gitlab_url
# with something like 'http://domain.com/'
vim config.yml

# Do setup
./bin/install

5. Database

To setup the MySQL.PostgreSQL database and dependencies please see doc/install/databases.md.

6. GitLab

# We'll install GitLab into home directory of the user "git"
cd /home/git

Clone the Source

# Clone GitLab repository
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab

# Go to gitlab dir
cd /home/git/gitlab

# Checkout to stable release
sudo -u git -H git checkout 6-1-stable

Note: You can change 6-1-stable to master if you want the bleeding edge version, but never install master on a production server!

Configure it

cd /home/git/gitlab

# Copy the example GitLab config
cp config/gitlab.yml.example config/gitlab.yml

# Make sure to change "localhost" to the fully-qualified domain name of your
# host serving GitLab where necessary
vim config/gitlab.yml

# Make sure GitLab can write to the log/ and tmp/ directories
chown -R git log/
chown -R git tmp/
chmod -R u+rwX  log/
chmod -R u+rwX  tmp/

# Create directory for satellites
mkdir /home/git/gitlab-satellites

# Create directories for sockets/pids and make sure GitLab can write to them
mkdir tmp/pids/
mkdir tmp/sockets/
chmod -R u+rwX  tmp/pids/
chmod -R u+rwX  tmp/sockets/

# Create public/uploads directory otherwise backup will fail
mkdir public/uploads
chmod -R u+rwX  public/uploads

# Copy the example Unicorn config
cp config/unicorn.rb.example config/unicorn.rb

# Enable cluster mode if you expect to have a high load instance
# Ex. change amount of workers to 3 for 2GB RAM server
vim config/unicorn.rb

# Configure Git global settings for git user, useful when editing via web
# Edit user.email according to what is set in gitlab.yml
git config --global user.name "GitLab"
git config --global user.email "gitlab@localhost"
git config --global core.autocrlf input

Important Note: Make sure to edit both gitlab.yml and unicorn.rb to match your setup.

Configure GitLab DB settings

# Mysql
cp config/database.yml.mysql config/database.yml

or

# PostgreSQL
cp config/database.yml.postgresql config/database.yml

# Make sure to update username/password in config/database.yml.
# You only need to adapt the production settings (first part).
# If you followed the database guide then please do as follows:
# Change 'root' to 'gitlab'
# Change 'secure password' with the value you have given to $password
# You can keep the double quotes around the password
vim config/database.yml

# Make config/database.yml readable to git only
chmod o-rwx config/database.yml

Install Gems

cd /home/git/gitlab

gem install charlock_holmes --version '0.6.9.4'

# For MySQL (note, the option says "without ... postgres")
bundle install --deployment --without development test postgres aws

# Or for PostgreSQL (note, the option says "without ... mysql")
bundle install --deployment --without development test mysql aws

Initialize Database and Activate Advanced Features

bundle exec rake gitlab:setup RAILS_ENV=production

# Type 'yes' to create the database.

# When done you see 'Administrator account created:'

Install Init Script

Download the init script (will be /etc/init.d/gitlab):

cp lib/support/init.d/gitlab /etc/init.d/gitlab
chmod +x /etc/init.d/gitlab

Make GitLab start on boot:

update-rc.d gitlab defaults 21

Check Application Status

Check if GitLab and its environment are configured correctly:

bundle exec rake gitlab:env:info RAILS_ENV=production

Start Your GitLab Instance

service gitlab start
# or
/etc/init.d/gitlab restart

Double-check Application Status

To make sure you didn't miss anything run a more thorough check with:

bundle exec rake gitlab:check RAILS_ENV=production

If all items are green, then congratulations on successfully installing GitLab! However there are still a few steps left.

7. Nginx

Note: Nginx is the officially supported web server for GitLab. If you cannot or do not want to use Nginx as your web server, have a look at the GitLab recipes.

Installation

yum install nginx

Site Configuration

Download an example site config:

cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
n -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

Make sure to edit the config file to match your setup:

# Change YOUR_SERVER_FQDN to the fully-qualified
# domain name of your host serving GitLab.
vim /etc/nginx/sites-available/gitlab

Restart

service nginx restart

Done!

Visit YOUR_SERVER for your first GitLab login. The setup has created an admin account for you. You can use it to log in:

admin@local.host
5iveL!fe

Important Note: Please go over to your profile page and immediately change the password, so nobody can access your GitLab by using this login information later on.

Enjoy!


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment