verioussmith
1/31/2014 - 6:34 PM

Gitlab 6.5 Ubuntu Installer

Gitlab 6.5 Ubuntu Installer

#!/bin/bash

if [ $# -eq 0 ]
then
  echo "gitlab.sh [options] postgres|mysql|restart
  postgres - Automatically install gitlab with postgres on ubuntu
  mysql    - Automatically install gitlab with mysql on ubuntu (Not Finished)"

elif [ $1 == 'postgres' ]; then

  echo "Updating Operating System..."
  sudo apt-get update -y
  sudo apt-get upgrade -y
  
  echo "Switching to VIM..."
  sudo apt-get install -y vim
  sudo update-alternatives --set editor /usr/bin/vim.basic

  echo "Installing Dependencies..."
  sudo apt-get remove -y git-core
  sudo apt-get install -y python-software-properties
  sudo add-apt-repository -y ppa:git-core/ppa
  sudo apt-get update -y
  sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate nginx python-docutils libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential git postgresql-9.1 postgresql-client libpq-dev
  git --version

  echo "Install Ruby 2.0..."
  sudo apt-get remove -y ruby1.8 ruby1.9
  mkdir /tmp/ruby && cd /tmp/ruby
  curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
  cd ruby-2.0.0-p353
  ./configure --disable-install-rdoc
  make
  sudo make install
  sudo gem install bundler --no-ri --no-rdoc

  echo "Creating git user..."
  sudo adduser --disabled-login --gecos 'GitLab' git
  
  echo "Installing gitlab-shell..."
  cd /home/git
  sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
  cd gitlab-shell
  sudo -u git -H cp config.yml.example config.yml
  export IP=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
  sudo -u git -H sed -ri "/localhost/c\gitlab_url: \"http://$IP/\"" config.yml
  sudo -u git -H ./bin/install

  echo "Installing Gitlab..."
  cd /home/git
  sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-5-stable gitlab
  cd /home/git/gitlab
  sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
  sudo -u git -H sed -ri "/host: localhost/c\    host: $IP" config/gitlab.yml
  sudo chown -R git log/
  sudo chown -R git tmp/
  sudo chmod -R u+rwX  log/
  sudo chmod -R u+rwX  tmp/
  sudo -u git -H mkdir /home/git/gitlab-satellites
  sudo -u git -H mkdir tmp/pids/
  sudo -u git -H mkdir tmp/sockets/
  sudo chmod -R u+rwX  tmp/pids/
  sudo chmod -R u+rwX  tmp/sockets/
  sudo -u git -H mkdir public/uploads
  sudo chmod -R u+rwX  public/uploads
  sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
  sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
  sudo -u git -H git config --global user.name "GitLab"
  sudo -u git -H git config --global user.email "gitlab@localhost"
  sudo -u git -H git config --global core.autocrlf input
  
  echo "Configuring Postgres..."
  sudo -u postgres psql -c "CREATE USER git;"
  sudo -u postgres psql -c "CREATE DATABASE gitlabhq_production OWNER git;" 
  sudo -u git cp config/database.yml.postgresql config/database.yml
  sudo -u git -H chmod o-rwx config/database.yml
  
  echo "Configuring Gitlab..."
  sudo -u git -H bundle install --deployment --without development test mysql aws
  sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
  sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
  sudo update-rc.d gitlab defaults 21
  sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
  sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
  sudo service gitlab start
  sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
  sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
  sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
  sudo sed -ri "/YOUR_SERVER_FQDN/c\  server_name $IP;" /etc/nginx/sites-enabled/gitlab
  sudo service nginx restart
  
  echo "Check if Gitlab fully installed..."
  sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
  echo "Done. Visit the below address with username: admin@local.host and password: 5iveL!fe"
  /sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print "http://" $1}'
  
elif [ $1 == 'mysql' ]; then

  echo "Updating Operating System..."
  sudo apt-get update -y
  sudo apt-get upgrade -y
  
  echo "Switching to VIM..."
  sudo apt-get install -y vim
  sudo update-alternatives --set editor /usr/bin/vim.basic

  echo "Installing Dependencies..."
  export $MYSQL_PASSWORD=
  sudo apt-get remove -y git-core
  sudo apt-get install -y python-software-properties
  sudo add-apt-repository -y ppa:git-core/ppa
  sudo apt-get update -y
  sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password '
  sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '
  sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate nginx python-docutils libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential git mysql-server mysql-client libmysqlclient-dev
  git --version

  echo "Install Ruby 2.0..."
  sudo apt-get remove -y ruby1.8 ruby1.9
  mkdir /tmp/ruby && cd /tmp/ruby
  curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
  cd ruby-2.0.0-p353
  ./configure --disable-install-rdoc
  make
  sudo make install
  sudo gem install bundler --no-ri --no-rdoc

  echo "Creating git user..."
  sudo adduser --disabled-login --gecos 'GitLab' git
  
  echo "Installing gitlab-shell..."
  cd /home/git
  sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
  cd gitlab-shell
  sudo -u git -H cp config.yml.example config.yml
  export IP=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
  sudo -u git -H sed -ri "/localhost/c\gitlab_url: \"http://$IP/\"" config.yml
  sudo -u git -H ./bin/install
  
  echo "Configuring MySQL..."
  sudo mysql_secure_installation -y 

# Login to MySQL
#mysql -u root -p

# Type the database root password

# Create a user for GitLab
# do not type the 'mysql>', this is part of the prompt
# change $password in the command below to a real password you pick
#mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';

# Create the GitLab production database
#mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `u

echo "Configuring Gitlab..."
  sudo -u git -H bundle install --deployment --without development test mysql aws
  sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
  sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
  sudo update-rc.d gitlab defaults 21
  sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
  sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
  sudo service gitlab start
  sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
  sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
  sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
  sudo sed -ri "/YOUR_SERVER_FQDN/c\  server_name $IP;" /etc/nginx/sites-enabled/gitlab
  sudo service nginx restart
  
  echo "Check if Gitlab fully installed..."
  sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
  echo "Done. Visit the below address with username: admin@local.host and password: 5iveL!fe"
  /sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print "http://" $1}'

fi