Skip to content
This repository has been archived by the owner on Sep 6, 2024. It is now read-only.

5.0 Install tests

mattias-ohlsson edited this page Apr 14, 2013 · 15 revisions

#!/bin/bash

Installer for GitLab on RHEL 6 (Red Hat Enterprise Linux and CentOS)

Only run this on a clean machine. I take no responsibility for anything.

Submit issues here: github.com/mattias-ohlsson/gitlab-installer

Define the public hostname

export GL_HOSTNAME=$HOSTNAME

Install from this GitLab branch

export GL_GIT_BRANCH="5-0-stable"

Define the version of ruby the environment that we are installing for

export RUBY_VERSION="1.9.3-p392"

Define MySQL root password

MYSQL_ROOT_PW=$(cat /dev/urandom | tr -cd [:alnum:] | head -c ${1:-16})

Exit on error

set -e

die() {

$1 - the exit code

$2 $... - the message string

retcode=$1 shift printf >&2 "%s\n" "$@" exit $retcode }

echo "### Check OS (we check if the kernel release contains el6)" uname -r | grep "el6" || die 1 "Not RHEL or CentOS 6 (el6)"

Install base packages

yum -y install git

Install epel-release

yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Ruby

packages (from rvm install message):

yum -y install patch gcc-c++ readline-devel zlib-devel libffi-devel openssl-devel make autoconf automake libtool bison libxml2-devel libxslt-devel libyaml-devel

Install rvm (instructions from https://rvm.io)

curl -L get.rvm.io | bash -s stable

Load RVM

source /etc/profile.d/rvm.sh

Fix for missing psych

*It seems your ruby installation is missing psych (for YAML output).

*To eliminate this warning, please install libyaml and reinstall your ruby.

Run rvm pkg and add --with-libyaml-dir

rvm pkg install libyaml

Install Ruby (use command to force non-interactive mode)

command rvm install $RUBY_VERSION --with-libyaml-dir=/usr/local/rvm/usr rvm use $RUBY_VERSION

Install core gems

gem install bundler

Users

Create a git user for Gitlab

adduser --system --create-home --comment 'GitLab' git

GitLab Shell

Clone gitlab-shell

su - git -c "git clone https://github.com/gitlabhq/gitlab-shell.git"

Edit configuration

su - git -c "cp gitlab-shell/config.yml.example gitlab-shell/config.yml" sed -i "s/localhost/$GL_HOSTNAME/g" /home/git/gitlab-shell/config.yml

Run setup

su - git -c "rvm use 1.9.3-p392;gitlab-shell/bin/install"

Fix wrong chmod

chmod 600 /home/git/.ssh/authorized_keys chmod 700 /home/git/.ssh

Database

Install redis

yum -y install redis

Start redis

service redis start

Automatically start redis

chkconfig redis on

Install mysql-server

yum install -y mysql-server

Turn on autostart

chkconfig mysqld on

Start mysqld

service mysqld start

Create the database

echo "CREATE DATABASE IF NOT EXISTS gitlabhq_production DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';" | mysql -u root

Set MySQL root password in MySQL

echo "UPDATE mysql.user SET Password=PASSWORD('$MYSQL_ROOT_PW') WHERE User='root'; FLUSH PRIVILEGES;" | mysql -u root

##TODO: GitLab-user

GitLab

Clone GitLab

su - git -c "git clone https://github.com/gitlabhq/gitlabhq.git gitlab"

Checkout

su - git -c "cd gitlab;git checkout $GL_GIT_BRANCH"

Configure GitLab

cd /home/git/gitlab

Copy the example GitLab config

su git -c "cp config/gitlab.yml.example config/gitlab.yml"

Change gitlabhq hostname to GL_HOSTNAME

sed -i "s/ host: localhost/ host: $GL_HOSTNAME/g" config/gitlab.yml

Change the from email address

sed -i "s/from: gitlab@localhost/from: gitlab@$GL_HOSTNAME/g" config/gitlab.yml TODO: Add variables for email_from and support_email

Create directory for satellites

#su git -c "mkdir /home/git/gitlab-satellites"

Create directory for pids and make sure GitLab can write to it

#sudo -u git -H mkdir tmp/pids/ #sudo chmod -R u+rwX tmp/pids/

Copy the example Unicorn config

su git -c "cp config/unicorn.rb.example config/unicorn.rb"

Listen on localhost:3000

sed -i "s/^listen/#listen/g" /home/git/gitlab/config/unicorn.rb sed -i "s/#listen "127.0.0.1:8080"/listen "127.0.0.1:3000"/g" /home/git/gitlab/config/unicorn.rb

Copy database congiguration

su git -c "cp config/database.yml.mysql config/database.yml"

Set MySQL root password in configuration file

sed -i "s/secure password/$MYSQL_ROOT_PW/g" config/database.yml

Install Gems

Install Charlock holmes

yum -y install libicu-devel gem install charlock_holmes --version '0.6.9'

For MySQL

yum -y install mysql-devel su git -c "bundle install --deployment --without development test postgres"

Initialise Database and Activate Advanced Features

su git -c "bundle exec rake gitlab:setup RAILS_ENV=production" DOIT: Stop: Do you want to continue (yes/no)? yes

Install init script

curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab-centos chmod +x /etc/init.d/gitlab chkconfig gitlab on

Fix: bundle not in path (edit init-script)

Add after ". /etc/rc.d/init.d/functions" (row 17)

sed -i "17 a source /etc/profile.d/rvm.sh\nrvm use $RUBY_VERSION" /etc/init.d/gitlab service gitlab start

Apache

Install

yum -y install httpd chkconfig httpd on

Configure

cat > /etc/httpd/conf.d/gitlab.conf << EOF ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ ProxyPreserveHost On EOF

Configure SElinux

setsebool -P httpd_can_network_connect 1

Start

service httpd start

Configure iptables

Open port 80

iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Save iptables

service iptables save

echo "### Done ###############################################" echo "#" echo "# You have your MySQL root password in this file:" echo "# $GL_INSTALL_ROOT/config/database.yml" echo "#" echo "# Point your browser to:" echo "# http://$GL_HOSTNAME (or: http://)" echo "# Default admin username: [email protected]" echo "# Default admin password: 5iveL!fe" echo "#" echo "# Flattr me if you like this! https://flattr.com/profile/mattiasohlsson" echo "###"

Clone this wiki locally