Pages

Rechercher dans ce blog

lundi 9 septembre 2013

GitLab 6 sur scientific linux 6.3 (globalement EL6)



Gitlab est une application de gestion de dépôts git sous licence MIT. 
Elle permet d'héberger sur votre propre serveur des dépôts git avec l'interface web offrant tout le nécessaire pour vos projets : navigation dans le code source, suivi des demandes de bugs et d'évolutions (« issues »), wiki, gestion des droits d'accès par équipe, commentaires, notifications, etc.

On le décris souvent (à tort) comme un fork "open-source" de GitHub.

Je vais vous présenter 2 façons de l' installer, la première avec Bitnami (installation "1 clic" ) et la seconde sera un script d'installation.



Installation Gitlab 6.0 avec Bitnami :

Bitnami permet l'installation de Gitlab (et d'autres..) "en 1 clic" tout en nous proposant de configurer le répertoire de destination et quelques configurations de base.

Bitnami va "packager" tout l'ensemble de l'installation dans un répertoire (outils, programmes tel qu'apache, ruby...) évitant ainsi une interaction néfaste sur d'autres programmes installés sur la machine.

La page de téléchargement de Gitlab se trouve ici :


Une fois le téléchargement effectué :

chmod +x ./bitnami-gitlab-6.0.0-0-linux-x64-installer.run

puis :
./bitnami-gitlab-6.0.0-0-linux-x64-installer.run --mode text

L'installation se poursuit :



L'installation est terminée, pour d'autres réglages (LDAP, SMTP) aller à la fin du tuto.

Installation Gitlab 6.0 avec script :

Si vous préférez une installation de type script en voilà une :
(testé sur machine "propre")


   
#!/bin/bash
# Installer for GitLab on RHEL 6 (Red Hat Enterprise Linux and CentOS)
#

##Export proxy settings


# Define the public hostname
export GL_HOSTNAME=$HOSTNAME

# Install from this GitLab branch
export GL_GIT_BRANCH="6-0-stable"

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

# Exit on error

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)"


## work in /tmp
cd /tmp/

yum -y groupinstall 'Development Tools'

### 'Additional Development'
yum -y install vim-enhanced httpd readline readline-devel ncurses-devel gdbm-devel glibc-devel \
               tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc \
               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 sudo mysql-server wget \
               mysql-devel crontabs logwatch logrotate sendmail-cf qtwebkit qtwebkit-devel \
               perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

yum remove -y git


service redis start

service mysqld start

## Install git 1.8.1.2
wget -O v1.8.1.2.tar.gz https://github.com/git/git/archive/v1.8.1.2.tar.gz
tar -xzvf ./v1.8.1.2.tar.gz
cd git-1.8.1.2/
make prefix=/usr/local all
make prefix=/usr/local install

# Ruby
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

mkdir /home/ruby && cd /home/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.9.3-p286.tar.gz | tar xz
cd ruby-1.9.3-p286
./configure
make
make install

#Rubygems
cd /home/
wget http://production.cf.rubygems.org/rubygems/rubygems-2.0.3.tgz
tar zxf rubygems-2.0.3.tgz
cd rubygems-2.0.3
ruby setup.rb --no-format-executable --no-document


## Install core gems
gem install bundler


## Create a git user for Gitlab
adduser --system --shell /bin/bash --create-home --comment 'GitLab' git

service mysqld start

# Create a user for GitLab. (change supersecret to a real password)
echo "CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';" | mysql -u root

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


# Grant the GitLab user necessary permissopns on the table.
echo "GRANT SELECT,LOCK TABLES,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON gitlabhq_production.* TO 'gitlab'@'localhost';"\
| mysql -u root


# GitLab shell

cd /home/git/

## Clone GitLab
su - git -c "git clone https://github.com/gitlabhq/gitlab-shell.git"
## Checkout
su - git -c "cd gitlab-shell;git checkout v1.7.1"
## configure
su - git -c "cp /home/git/gitlab-shell/config.yml.example /home/git/gitlab-shell/config.yml"

sed -i "s|gitlab_url: http://localhost/|gitlab_url: http://GL_HOSTNAME/|" /home/git/gitlab-shell/config.yml

## Run setup
su - git -c "/home/git/gitlab-shell/bin/install"

# GitLab
su - git -c "cd /home/git/"

## Clone GitLab
su - git -c "git clone https://github.com/gitlabhq/gitlabhq.git /home/git/gitlab"

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

## Configure GitLab

su - git -c "cd /home/git/gitlab"

### Copy the example GitLab config
su git -c "cp /home/git/gitlab/config/gitlab.yml.example /home/git/gitlab/config/gitlab.yml"

### Change gitlabhq hostname to GL_HOSTNAME
sed -i "s|host: localhost|host: GL_HOSTNAME|" /home/git/gitlab/config/gitlab.yml

### Change the from email address
sed -i "s|email_from: gitlab@localhost|email_from: gitlab@arkea.com|" /home/git/gitlab/config/gitlab.yml
#and support too 
sed -i "s|support_email: gitlab@localhost|support_email: gitlab@arkea.com|" /home/git/gitlab/config/gitlab.yml

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

#Create directory for satellites
su git -c "mkdir /home/git/gitlab-satellites"

# Create directories for sockets/pids and make sure GitLab can write to them
su git -c "mkdir /home/git/gitlab/tmp/pids/"
su git -c "mkdir /home/git/gitlab/tmp/sockets/"
chmod -R u+rwX  /home/git/gitlab/tmp/pids/
chmod -R u+rwX  /home/git/gitlab/tmp/sockets/

# Create public/uploads directory otherwise backup will fail
su git -c "mkdir /home/git/gitlab/public/uploads"
chmod -R u+rwX  /home/git/gitlab/public/uploads

su git -c "cp /home/git/gitlab/config/unicorn.rb.example /home/git/gitlab/config/unicorn.rb"
sed -i "s|timeout 30|timeout 60|" /home/git/gitlab/config/database.yml


### Copy database congiguration
su git -c "cp /home/git/gitlab/config/database.yml.mysql /home/git/gitlab/config/database.yml"

### Set MySQL username and password in configuration file
sed -i "s|username: root|username: gitlab|" /home/git/gitlab/config/database.yml
sed -i "s|password: \"secure password\"|password: \"gitlab\"|" /home/git/gitlab/config/database.yml

## Install Charlock holmes
yum -y install libicu-devel
gem install charlock_holmes --version '0.6.9.4'

## For MySQL
cd /home/git/gitlab/
yum -y install mysql-devel
su git -c "bundle install --deployment --without development test postgres"

# Initialise Database and Activate Advanced Features
# Force it to be silent (issue 31)
export force=yes
su git -c "bundle exec rake gitlab:setup RAILS_ENV=production"

## Install init script
curl https://raw.github.com/gitlabhq/gitlab-recipes/master/init/sysvinit/centos/gitlab-unicorn > /etc/init.d/gitlab
chmod +x /etc/init.d/gitlab

## Nginx
yum install -y nginx
service nginx start
mkdir /etc/nginx/sites-{available,enabled}
usermod -a -G git nginx
chmod g+rx /home/git/
cp /home/git/gitlab/lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
sed -i "s|include /etc/nginx/conf.d/*.conf;|include /etc/nginx/sites-enabled/*;|" /etc/nginx/nginx.conf
sed -i "s|server_name YOUR_SERVER_FQDN;|server_name GL_HOSTNAME;|" /etc/nginx/sites-available/gitlab

# Unicorn failed " upstream client closed connection ..."
sed -i "s|timeout 30|timeout 60|" /home/git/gitlab/config/unicorn.rb


chkconfig --add redis
chkconfig --add mysqld
chkconfig --add gitlab
chkconfig --add nginx
chkconfig redis on
chkconfig mysqld on
chkconfig gitlab on
chkconfig nginx on

service redis restart
service mysqld restart
service gitlab start
service nginx restart

echo "### Done ###############################################"
echo "#"
echo "#"
echo "# Point your browser to:" 
echo "# http://$GL_HOSTNAME (or: http://)"
echo "# Default admin username: admin@local.host"
echo "# Default admin password: 5iveL!fe"
echo "#"
echo "###   TODO : ####"
echo "configure LDAP"
echo "configure EMAIL"  


A noter :
sed -i "s|include /etc/nginx/conf.d/*.conf;|include /etc/nginx/sites-enabled/*;|" /etc/nginx/nginx.conf 
passe rarement, donc modifier le fichier à la main :-) 

script également disponible sur GIST

Configuration LDAP :

Afin de configurer l'authentification LDAP, modifier le fichier gitlab.yml.
cd /opt/gitlab-6.0.0-0/apps/gitlab/htdocs/config/
nano gitlab.yml
 

 

Configuration SMTP :

Afin de recevoir des notifications (mails) lors de changements sur un repository, de création d'"issue", de commits.., il convient de configurer gitlab afin qu'il puisse utiliser le serveur SMTP interne. Configuration de gitlab.yml :
nano /opt/gitlab-6.0.0/apps/gitlab/htdocs/config/gitlab.yml
puis :
nano /opt/gitlab-6.0.0/apps/gitlab/htdocs/config/environements/production.rb
 
 

Aucun commentaire:

Enregistrer un commentaire

Fork me on GitHub