Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.md | 2013-02-11 | 8.2 kB | |
gitlab | 2013-02-11 | 3.2 kB | |
Totals: 2 Items | 11.4 kB | 0 |
Important Note:
Run as root, OpenSUSE 12.2 32Bits + Mysql
Update 11-02-2013 18:15
Howto
Overview
The GitLab installation consists of setting up the following components:
- Packages / Dependencies
- System Users
- Gitolite
- Database
- GitLab
- Make GitLab start on boot
- Nginx
1. Packages / Dependencies
Install the required packages:
# run as root
zypper install -y sudo vim vim-data ctags postfix python
zypper install -y mysql-community-server ntp python-Pygments
zypper install -y ruby redis curl git-core wget nginx
zypper install -y rubygem-bundler rubygem-mysql2
zypper install -y ruby-devel make gcc libicu-devel libmysqlclient-devel gcc-c++
2. System Users
Create a user for Git and Gitolite:
groupadd git
useradd -m -G git \
--system \
-s /bin/sh \
-c 'Git Version Control' \
-d /home/git \
git
Create a user for GitLab:
useradd -m -c 'GitLab' gitlab
# Add it to the git group
usermod -A git gitlab
# Generate the SSH key
sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
# Disable Errors SSL
sudo -u git git config --global http.sslVerify false
sudo -u gitlab git config --global http.sslVerify false
3. Gitolite
Clone GitLab's fork of the Gitolite source code:
cd /home/git
sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
Setup Gitolite with GitLab as its admin:
Important Note: GitLab assumes full and unshared control over this Gitolite installation.
# Add Gitolite scripts to $PATH
sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile'
sudo -u git -H sh -c 'gitolite/install -ln /home/git/bin'
# Copy the gitlab user's (public) SSH key ...
cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
chmod 0444 /home/git/gitlab.pub
# ... and use it as the admin key for the Gitolite setup
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"
Fix the directory permissions for the configuration directory:
# Make sure the Gitolite config dir is owned by git
chmod 750 /home/git/.gitolite/
chown -R git:git /home/git/.gitolite/
Fix the directory permissions for the repositories:
# Make sure the repositories dir is owned by git and it stays that way
chmod -R ug+rwXs,o-rwx /home/git/repositories/
chown -R git:git /home/git/repositories/
Add domains to list to the list of known hosts
sudo -u gitlab -H ssh git@localhost
sudo -u gitlab -H ssh git@YOUR_DOMAIN_NAME
sudo -u gitlab -H ssh git@YOUR_GITOLITE_DOMAIN_NAME
Test if everything works so far
# Clone the admin repo so SSH adds localhost to known_hosts ...
# ... and to be sure your users have access to Gitolite
sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
# If it succeeded without errors you can remove the cloned repo
sudo rm -rf /tmp/gitolite-admin
Important Note:
If you can't clone the gitolite-admin
repository: DO NOT PROCEED WITH INSTALLATION!
Check the Trouble Shooting Guide
and make sure you have followed all of the above steps carefully.
4. Database Mysql
# Login to MySQL
/etc/init.d/mysql start
# Configure mysql
mysql_secure_installation
mysql -u root -p123456
# Create a user for GitLab. (change gitlab to a real password)
CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
# Try connecting to the new database with the new user
sudo -u gitlab -H mysql -u gitlab -p -D gitlabhq_production
5. GitLab
# We'll install GitLab into home directory of the user "gitlab"
cd /home/gitlab
Clone the Source
# Clone GitLab repository
sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
# Go to gitlab dir
cd /home/gitlab/gitlab
# Checkout to stable release
sudo -u gitlab -H git checkout 4-1-stable
Note:
You can change 4-1-stable
to master
if you want the bleeding edge version, but
do so with caution!
Configure it
cd /home/gitlab/gitlab
# Copy the example GitLab config
sudo -u gitlab -H 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
sudo -u gitlab -H vim config/gitlab.yml
# Make sure GitLab can write to the log/ and tmp/ directories
chown -R gitlab log/
chown -R gitlab tmp/
chmod -R u+rwX log/
chmod -R u+rwX tmp/
# Make directory for satellites
sudo -u gitlab -H mkdir /home/gitlab/gitlab-satellites
# Copy the example Unicorn config
sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rb
Important Note: Make sure to edit both files to match your setup.
Configure GitLab DB settings
# Mysql
sudo -u gitlab cp config/database.yml.mysql config/database.yml
Make sure to update username/password in config/database.yml.
Install Gems
cd /home/gitlab/gitlab
sudo gem install charlock_holmes --version '0.6.9'
# For MySQL (note, the option says "without")
sudo -u gitlab -H bundle install --deployment --without development test postgres
Configure Git
GitLab needs to be able to commit and push changes to Gitolite. In order to do
that Git requires a username and email. (We recommend using the same address
used for the email.from
setting in config/gitlab.yml
)
sudo -u gitlab -H git config --global user.name "GitLab"
sudo -u gitlab -H git config --global user.email "gitlab@localhost"
Setup GitLab Hooks
cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
chown git:git /home/git/.gitolite/hooks/common/post-receive
Initialise Database and Activate Advanced Features
sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production
Install Init Script
Download the init script (will be /etc/init.d/gitlab):
wget http://downloads.sourceforge.net/project/bsdcontrol/screencast/gitlab/gitlab
mv gitlab /etc/init.d/
chmod +x /etc/init.d/gitlab
6. Make GitLab start on boot
chkconfig --add mysql
chkconfig --add redis
chkconfig --add nginx
chkconfig --add gitlab
Check Application Status
Check if GitLab and its environment is configured correctly:
sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production
To make sure you didn't miss anything run a more thorough check with:
sudo -u gitlab -H 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.
Start Your GitLab Instance
/etc/init.d/gitlab restart
7. Nginx
Site Configuration
Download an example site config:
mkdir -p /etc/nginx/vhosts.d/
curl --insecure --output /etc/nginx/vhosts.d/gitlab.conf https://raw.github.com/gitlabhq/gitlab-recipes/4-1-stable/nginx/gitlab
Make sure to edit the config file to match your setup:
# Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN**
# to the IP address and fully-qualified domain name
# of your host serving GitLab
vim /etc/nginx/vhosts.d/gitlab.conf
Restart
/etc/init.d/nginx restart
Done!
Visit YOUR_SERVER for your first GitLab login. The setup has created an admin account for you. You can use it to log in:
admin@local.host
5iveL!fe
Important Note: 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!