The GitLab installation consists of setting up the following components:
- Packages / Dependencies
- Ruby
- System Users
- GitLab shell
- Database
- GitLab
- Nginx
# 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.
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
Create a git
users for Gitlab:
useradd -r git
passwd -l git
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
To setup the MySQL.PostgreSQL database and dependencies please see doc/install/databases.md
.
# We'll install GitLab into home directory of the user "git"
cd /home/git
# 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!
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.
# 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
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
bundle exec rake gitlab:setup RAILS_ENV=production
# Type 'yes' to create the database.
# When done you see 'Administrator account created:'
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 if GitLab and its environment are configured correctly:
bundle exec rake gitlab:env:info RAILS_ENV=production
service gitlab start
# or
/etc/init.d/gitlab restart
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.
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.
yum install nginx
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
service nginx restart
Visit YOUR_SERVER for your first GitLab login. The setup has created an admin account for you. You can use it to log in:
[email protected]
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!