2012-12-05 19:31:08 +01:00
|
|
|
This installation guide was created for Debian/Ubuntu and tested on it.
|
|
|
|
|
2013-02-15 11:20:50 +01:00
|
|
|
Please read [`doc/install/requirements.md`](./requirements.md) for hardware and platform requirements.
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-03-13 19:19:03 +01:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
**Important Note:**
|
2012-12-05 20:34:11 +01:00
|
|
|
The following steps have been known to work.
|
|
|
|
If you deviate from this guide, do it with caution and make sure you don't
|
|
|
|
violate any assumptions GitLab makes about its environment.
|
2012-12-10 01:08:34 +01:00
|
|
|
For things like AWS installation scripts, init scripts or config files for
|
2013-02-15 11:20:50 +01:00
|
|
|
alternative web server have a look at the [`Advanced Setup
|
|
|
|
Tips`](./installation.md#advanced-setup-tips) section.
|
2012-12-10 01:08:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
**Important Note:**
|
|
|
|
If you find a bug/error in this guide please submit an issue or pull request
|
2013-02-15 11:20:50 +01:00
|
|
|
following the [`contribution guide`](../../CONTRIBUTING.md).
|
2012-10-10 16:17:23 +02:00
|
|
|
|
2012-10-25 10:13:11 +02:00
|
|
|
- - -
|
2012-03-13 19:19:03 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# Overview
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-25 12:25:44 +01:00
|
|
|
The GitLab installation consists of setting up the following components:
|
2012-03-28 09:07:24 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
1. Packages / Dependencies
|
2012-10-24 19:59:48 +02:00
|
|
|
2. Ruby
|
2012-12-05 20:34:11 +01:00
|
|
|
3. System Users
|
2013-02-20 02:01:39 +01:00
|
|
|
4. GitLab shell
|
2012-12-05 20:34:11 +01:00
|
|
|
5. Database
|
|
|
|
6. GitLab
|
|
|
|
7. Nginx
|
2012-03-12 13:47:57 +01:00
|
|
|
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# 1. Packages / Dependencies
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-02-15 11:20:50 +01:00
|
|
|
`sudo` is not installed on Debian by default. Make sure your system is
|
|
|
|
up-to-date and install it.
|
2012-09-04 11:26:25 +02:00
|
|
|
|
2012-12-13 00:45:48 +01:00
|
|
|
# run as root
|
2013-02-15 11:20:50 +01:00
|
|
|
apt-get update
|
|
|
|
apt-get upgrade
|
|
|
|
apt-get install sudo
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-13 00:45:48 +01:00
|
|
|
**Note:**
|
|
|
|
Vim is an editor that is used here whenever there are files that need to be
|
|
|
|
edited by hand. But, you can use any editor you like instead.
|
|
|
|
|
|
|
|
# Install vim
|
|
|
|
sudo apt-get install -y vim
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
Install the required packages:
|
2012-10-10 14:45:19 +02:00
|
|
|
|
2012-12-28 13:38:43 +01:00
|
|
|
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server postfix checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev
|
2012-12-07 17:32:38 +01:00
|
|
|
|
|
|
|
Make sure you have the right version of Python installed.
|
|
|
|
|
|
|
|
# Install Python
|
|
|
|
sudo apt-get install python
|
|
|
|
|
2012-12-12 22:36:20 +01:00
|
|
|
# Make sure that Python is 2.5+ (3.x is not supported at the moment)
|
2012-12-07 17:32:38 +01:00
|
|
|
python --version
|
|
|
|
|
|
|
|
# If it's Python 3 you might need to install Python 2 separately
|
|
|
|
sudo apt-get install python2.7
|
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
# Make sure you can access Python via python2
|
2012-12-07 17:32:38 +01:00
|
|
|
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
|
2012-10-10 14:45:19 +02:00
|
|
|
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# 2. Ruby
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-13 00:45:48 +01:00
|
|
|
Download and compile it:
|
|
|
|
|
2012-12-22 15:52:42 +01:00
|
|
|
mkdir /tmp/ruby && cd /tmp/ruby
|
2012-12-28 13:38:43 +01:00
|
|
|
curl --progress http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz | tar xz
|
2012-12-05 20:34:11 +01:00
|
|
|
cd ruby-1.9.3-p327
|
2012-03-12 13:47:57 +01:00
|
|
|
./configure
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
|
2012-12-13 00:45:48 +01:00
|
|
|
Install the Bundler Gem:
|
|
|
|
|
|
|
|
sudo gem install bundler
|
|
|
|
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# 3. System Users
|
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
Create a `git` user for Gitlab:
|
2012-08-26 16:18:13 +02:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo adduser --disabled-login --gecos 'GitLab' git
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-02-28 15:21:58 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
# 4. GitLab shell
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-02-28 15:21:58 +01:00
|
|
|
GitLab Shell is a ssh access and repository management software developed specially for GitLab.
|
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
# Login as git
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo su git
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
# Go to home directory
|
2012-12-13 00:45:48 +01:00
|
|
|
cd /home/git
|
2012-12-22 22:22:51 +01:00
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
# Clone gitlab shell
|
2013-02-07 18:53:37 +01:00
|
|
|
git clone https://github.com/gitlabhq/gitlab-shell.git
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
cd gitlab-shell
|
|
|
|
cp config.yml.example config.yml
|
2013-02-28 15:13:24 +01:00
|
|
|
|
|
|
|
# Edit config and replace gitlab_url
|
|
|
|
# with something like 'http://domain.com/'
|
|
|
|
vim config.yml
|
|
|
|
|
|
|
|
# Do setup
|
2013-02-04 14:18:20 +01:00
|
|
|
./bin/install
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-22 23:35:52 +01:00
|
|
|
|
2012-12-05 17:53:24 +01:00
|
|
|
# 5. Database
|
2012-10-24 19:42:55 +02:00
|
|
|
|
2013-02-15 11:20:50 +01:00
|
|
|
To setup the MySQL/PostgreSQL database and dependencies please see [`doc/install/databases.md`](./databases.md).
|
2012-10-24 19:42:55 +02:00
|
|
|
|
|
|
|
|
2012-10-24 19:59:48 +02:00
|
|
|
# 6. GitLab
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
# We'll install GitLab into home directory of the user "git"
|
|
|
|
cd /home/git
|
2012-09-16 12:39:49 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Clone the Source
|
2012-10-24 19:59:48 +02:00
|
|
|
|
2012-12-23 12:57:40 +01:00
|
|
|
# Clone GitLab repository
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
|
2012-12-23 12:58:41 +01:00
|
|
|
|
|
|
|
# Go to gitlab dir
|
2013-02-04 14:18:20 +01:00
|
|
|
cd /home/git/gitlab
|
2012-12-23 12:57:40 +01:00
|
|
|
|
|
|
|
# Checkout to stable release
|
2013-02-05 12:02:58 +01:00
|
|
|
sudo -u git -H git checkout 5-0-stable
|
2012-09-16 12:39:49 +02:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
**Note:**
|
2013-02-05 12:02:58 +01:00
|
|
|
You can change `5-0-stable` to `master` if you want the *bleeding edge* version, but
|
2012-12-05 20:34:11 +01:00
|
|
|
do so with caution!
|
2012-09-16 12:39:49 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Configure it
|
2012-10-24 19:59:48 +02:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
cd /home/git/gitlab
|
2012-08-26 16:18:13 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# Copy the example GitLab config
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-07 17:28:05 +01:00
|
|
|
# Make sure to change "localhost" to the fully-qualified domain name of your
|
|
|
|
# host serving GitLab where necessary
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H vim config/gitlab.yml
|
2012-12-07 17:28:05 +01:00
|
|
|
|
2012-12-12 22:36:20 +01:00
|
|
|
# Make sure GitLab can write to the log/ and tmp/ directories
|
2013-02-05 12:02:58 +01:00
|
|
|
sudo chown -R git log/
|
|
|
|
sudo chown -R git tmp/
|
2012-12-12 22:36:20 +01:00
|
|
|
sudo chmod -R u+rwX log/
|
|
|
|
sudo chmod -R u+rwX tmp/
|
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
# Create directory for satellites
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H mkdir /home/git/gitlab-satellites
|
2013-01-16 12:30:31 +01:00
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
# 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/
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# Copy the example Unicorn config
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
|
2012-10-10 01:41:33 +02:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
**Important Note:**
|
2012-12-05 20:34:11 +01:00
|
|
|
Make sure to edit both files to match your setup.
|
|
|
|
|
2012-12-22 11:01:54 +01:00
|
|
|
## Configure GitLab DB settings
|
|
|
|
|
|
|
|
# Mysql
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git cp config/database.yml.mysql config/database.yml
|
2012-12-22 11:01:54 +01:00
|
|
|
|
|
|
|
# PostgreSQL
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git cp config/database.yml.postgresql config/database.yml
|
2012-12-22 11:01:54 +01:00
|
|
|
|
|
|
|
Make sure to update username/password in config/database.yml.
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Install Gems
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
cd /home/git/gitlab
|
2012-10-10 14:45:19 +02:00
|
|
|
|
2012-11-09 14:24:28 +01:00
|
|
|
sudo gem install charlock_holmes --version '0.6.9'
|
2012-12-22 11:01:54 +01:00
|
|
|
|
2013-01-19 14:52:25 +01:00
|
|
|
# For MySQL (note, the option says "without")
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H bundle install --deployment --without development test postgres
|
2012-12-22 11:01:54 +01:00
|
|
|
|
2013-01-19 14:52:25 +01:00
|
|
|
# Or for PostgreSQL
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H bundle install --deployment --without development test mysql
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2012-08-26 16:18:13 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Initialise Database and Activate Advanced Features
|
2013-02-15 10:53:35 +01:00
|
|
|
|
|
|
|
sudo -u git -H bundle exec rake db:setup RAILS_ENV=production
|
|
|
|
sudo -u git -H bundle exec rake db:seed_fu RAILS_ENV=production
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
|
2012-09-02 18:31:16 +02:00
|
|
|
|
|
|
|
|
2013-01-11 18:58:13 +01:00
|
|
|
## Install Init Script
|
|
|
|
|
|
|
|
Download the init script (will be /etc/init.d/gitlab):
|
|
|
|
|
2012-12-28 13:38:43 +01:00
|
|
|
sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
|
2013-01-11 18:58:13 +01:00
|
|
|
sudo chmod +x /etc/init.d/gitlab
|
|
|
|
|
|
|
|
Make GitLab start on boot:
|
|
|
|
|
|
|
|
sudo update-rc.d gitlab defaults 21
|
|
|
|
|
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Check Application Status
|
2012-09-04 11:26:25 +02:00
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
Check if GitLab and its environment are configured correctly:
|
2012-12-07 17:28:47 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
|
2012-12-07 17:28:47 +01:00
|
|
|
|
|
|
|
To make sure you didn't miss anything run a more thorough check with:
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-01-10 20:21:54 +01:00
|
|
|
If all items are green, then congratulations on successfully installing GitLab!
|
|
|
|
However there are still a few steps left.
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2013-01-11 18:58:13 +01:00
|
|
|
## Start Your GitLab Instance
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-10-24 19:50:34 +02:00
|
|
|
sudo service gitlab start
|
2012-12-12 22:36:20 +01:00
|
|
|
# or
|
|
|
|
sudo /etc/init.d/gitlab restart
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-10-24 19:50:34 +02:00
|
|
|
# 7. Nginx
|
2012-09-04 19:50:00 +02:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
**Note:**
|
|
|
|
If you can't or don't want to use Nginx as your web server, have a look at the
|
2013-02-15 11:20:50 +01:00
|
|
|
[`Advanced Setup Tips`](./installation.md#advanced-setup-tips) section.
|
2012-12-10 01:08:34 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Installation
|
2012-09-04 19:50:00 +02:00
|
|
|
sudo apt-get install nginx
|
2012-08-26 16:18:13 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Site Configuration
|
|
|
|
|
|
|
|
Download an example site config:
|
|
|
|
|
2012-12-28 13:38:43 +01:00
|
|
|
sudo curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab
|
2012-09-02 18:31:16 +02:00
|
|
|
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
Make sure to edit the config file to match your setup:
|
|
|
|
|
2012-09-02 18:31:16 +02:00
|
|
|
# Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN**
|
|
|
|
# to the IP address and fully-qualified domain name
|
2012-12-05 20:34:11 +01:00
|
|
|
# of your host serving GitLab
|
2013-02-16 06:50:41 +01:00
|
|
|
sudo vim /etc/nginx/sites-available/gitlab
|
2012-03-13 19:19:03 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
## Restart
|
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
sudo service nginx restart
|
2012-03-13 19:19:03 +01:00
|
|
|
|
2012-09-04 19:50:00 +02:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# Done!
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
Visit YOUR_SERVER for your first GitLab login.
|
|
|
|
The setup has created an admin account for you. You can use it to log in:
|
2012-03-12 13:51:21 +01:00
|
|
|
|
2012-08-02 14:30:22 +02:00
|
|
|
admin@local.host
|
|
|
|
5iveL!fe
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
**Important Note:**
|
2012-12-05 20:34:11 +01:00
|
|
|
Please go over to your profile page and immediately chage the password, so
|
|
|
|
nobody can access your GitLab by using this login information later on.
|
|
|
|
|
|
|
|
**Enjoy!**
|
|
|
|
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-10-25 10:13:11 +02:00
|
|
|
- - -
|
|
|
|
|
2012-03-12 13:47:57 +01:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
# Advanced Setup Tips
|
2012-10-24 19:42:55 +02:00
|
|
|
|
2012-12-10 01:08:34 +01:00
|
|
|
## Custom Redis Connection
|
2012-09-19 03:53:27 +02:00
|
|
|
|
|
|
|
If you'd like Resque to connect to a Redis server on a non-standard port or on
|
2012-12-05 20:34:11 +01:00
|
|
|
a different host, you can configure its connection string via the
|
|
|
|
`config/resque.yml` file.
|
2012-03-13 23:07:13 +01:00
|
|
|
|
2012-12-05 20:34:11 +01:00
|
|
|
# example
|
|
|
|
production: redis.example.tld:6379
|
2012-12-10 01:08:34 +01:00
|
|
|
|
2013-01-17 08:11:00 +01:00
|
|
|
## Custom SSH Connection
|
|
|
|
|
2013-02-16 07:24:36 +01:00
|
|
|
If you are running SSH on a non-standard port, you must change the gitlab user's SSH config.
|
2013-01-17 08:11:00 +01:00
|
|
|
|
2013-02-04 14:18:20 +01:00
|
|
|
# Add to /home/git/.ssh/config
|
2013-01-17 19:58:29 +01:00
|
|
|
host localhost # Give your setup a name (here: override localhost)
|
|
|
|
user git # Your remote git user
|
|
|
|
port 2222 # Your port number
|
|
|
|
hostname 127.0.0.1; # Your server name or IP
|
2013-01-17 08:11:00 +01:00
|
|
|
|
2013-01-17 19:58:29 +01:00
|
|
|
You also need to change the corresponding options (e.g. ssh_user, ssh_host, admin_uri) in the `config\gitlab.yml` file.
|
2012-12-10 01:08:34 +01:00
|
|
|
|
|
|
|
## User-contributed Configurations
|
|
|
|
|
|
|
|
You can find things like AWS installation scripts, init scripts or config files
|
|
|
|
for alternative web server in our [recipes collection](https://github.com/gitlabhq/gitlab-recipes/).
|