summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-03-13 20:19:38 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-03-13 20:19:38 +0200
commitd0be70bb22b8dbc2571de446f2841c424e46caa1 (patch)
treee1bb72e11c1b55beca2ad6a1f18ec8423c75b355
parente44ee826ac1cb21d3af54381608c225e0644b79b (diff)
parent4b4dc9e483521c660da97ce8263a42f45f3dec52 (diff)
downloadgitlab-ce-d0be70bb22b8dbc2571de446f2841c424e46caa1.tar.gz
Merge branch 'manual'
-rw-r--r--doc/installation.md288
1 files changed, 288 insertions, 0 deletions
diff --git a/doc/installation.md b/doc/installation.md
new file mode 100644
index 00000000000..3208bf9a30d
--- /dev/null
+++ b/doc/installation.md
@@ -0,0 +1,288 @@
+## Platform requirements:
+
+**The project is designed for the Linux operating system. **
+
+It may work on FreeBSD and Mac OS, but we don't test our application for these systems and can't guarantee stability and full functionality.
+
+We officially support next Linux Distributions:
+
+- Ubuntu
+- Debian
+
+It should work on:
+
+- Fedora
+- CentOs
+- Red Hat
+
+It can work on:
+
+ - Mac Os
+ - FreeBSD
+
+It 100% **wont** work on Windows
+
+
+## This installation guide created for Debian/Ubuntu and properly tested.
+
+The installation consists of 6 steps:
+
+1. install packeges.
+2. install ruby
+3. install gitolite
+4. install gitlab and configuration. Check status configuration.
+5. server up.
+6. run resque process (for processing queue).
+
+** Before submit an installation issue - please check if you followed all steps **
+
+> - - -
+> First 3 steps can be easily skipped with simply install script:
+>
+> # Install curl and sudo
+> apt-get install curl sudo
+>
+> # 3 steps in 1 command :)
+> curl http://dl.dropbox.com/u/936096/debian_ubuntu.sh | sh
+>
+> Now you can go to step 4"
+> - - -
+
+# 1. Install packages
+
+*Keep in mind that `sudo` is not installed for debian by default. You should install it with as root:* **apt-get update && apt-get upgrade && apt-get install sudo**
+
+ sudo apt-get update
+ sudo apt-get upgrade
+
+ sudo apt-get install -y git-core wget curl gcc checkinstall libxml2-dev libxslt-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core python-dev python-pip sendmail
+
+# 2. Install ruby
+
+ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
+ tar xfvz ruby-1.9.2-p290.tar.gz
+ cd ruby-1.9.2-p290
+ ./configure
+ make
+ sudo make install
+
+# 3. Install gitolite
+
+Create user for git:
+
+ sudo adduser \
+ --system \
+ --shell /bin/sh \
+ --gecos 'git version control' \
+ --group \
+ --disabled-password \
+ --home /home/git \
+ git
+
+
+
+Create user for gitlab:
+ # ubuntu/debian
+ sudo adduser --disabled-login --gecos 'gitlab system' gitlab
+
+Add your user to git group:
+ sudo usermod -a -G git gitlab
+
+Generate key:
+ sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
+
+Get gitolite source code:
+ cd /home/git
+ sudo -H -u git git clone git://github.com/gitlabhq/gitolite /home/git/gitolite
+
+Setup:
+ sudo -u git -H /home/git/gitolite/src/gl-system-install
+ sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
+ sudo chmod 777 /home/git/gitlab.pub
+
+ sudo -u git -H sed -i 's/0077/0007/g' /home/git/share/gitolite/conf/example.gitolite.rc
+ sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gl-setup -q /home/git/gitlab.pub"
+Permissions:
+ sudo chmod -R g+rwX /home/git/repositories/
+ sudo chown -R git:git /home/git/repositories/
+
+#### CHECK: Logout & login again to apply git group to your user
+
+ # clone admin repo to add localhost to known_hosts
+ # & be sure your user has access to gitolite
+ sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
+
+ # if succeed you can remove it
+ sudo rm -rf /tmp/gitolite-admin
+
+** IMPORTANT! If you cant clone `gitolite-admin` repository - DONT PROCEED INSTALLATION**
+
+
+# 4. Install gitlab and configuration. Check status configuration.
+
+ sudo gem install charlock_holmes
+ sudo pip install pygments
+ sudo gem install bundler
+ cd /home/gitlab
+ sudo -H -u gitlab git clone git://github.com/gitlabhq/gitlabhq.git gitlab
+ cd gitlab
+
+ # Rename config files
+ sudo -u gitlab cp config/gitlab.yml.example config/gitlab.yml
+
+#### Select db you want to use
+ # SQLite
+ sudo -u gitlab cp config/database.yml.sqlite config/database.yml
+
+ # Or
+ # Mysql
+ sudo -u gitlab cp config/database.yml.example config/database.yml
+ # Change username/password of config/database.yml to real one
+
+#### Install gems
+ sudo -u gitlab -H bundle install --without development test --deployment
+
+#### Setup DB
+ sudo -u gitlab bundle exec rake db:setup RAILS_ENV=production
+ sudo -u gitlab bundle exec rake db:seed_fu RAILS_ENV=production
+
+Checking status:
+ sudo -u gitlab bundle exec rake gitlab_status
+
+
+ # OUTPUT EXAMPLE
+ Starting diagnostic
+ config/database.yml............exists
+ config/gitlab.yml............exists
+ /home/git/repositories/............exists
+ /home/git/repositories/ is writable?............YES
+ remote: Counting objects: 603, done.
+ remote: Compressing objects: 100% (466/466), done.
+ remote: Total 603 (delta 174), reused 0 (delta 0)
+ Receiving objects: 100% (603/603), 53.29 KiB, done.
+ Resolving deltas: 100% (174/174), done.
+ Can clone gitolite-admin?............YES
+ UMASK for .gitolite.rc is 0007? ............YES
+
+If you got all YES - congrats! You can go to next step.
+
+# 5. Server up
+
+Application can be started with next command:
+ # For test purposes
+ sudo -u gitlab bundle exec rails s -e production
+
+ # As daemon
+ sudo -u gitlab bundle exec rails s -e production -d
+
+# 6. Run resque process (for processing queue).
+
+ # Manually
+ sudo -u gitlab bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production BACKGROUND=yes
+
+ # Gitlab start script
+ ./resque.sh
+
+
+** Ok - we have a working application now. **
+** But keep going - there are some thing that should be done **
+
+# Nginx && Unicorn
+
+### Install Nginx
+
+ sudo apt-get install nginx
+
+## Unicorn
+ cd /home/gitlab/gitlab
+ sudo -u gitlab cp config/unicorn.rb.orig config/unicorn.rb
+ sudo -u gitlab unicorn_rails -c config/unicorn.rb -E production -D
+
+Edit /etc/nginx/nginx.conf. Add next code to **http** section:
+
+ upstream gitlab {
+ server unix:/tmp/gitlab.socket;
+ }
+
+ server {
+ listen 80;
+ server_name mygitlab.com;
+
+ location / {
+
+ root /home/gitlab/gitlab/public;
+
+ if (!-f $request_filename) {
+ proxy_pass http://gitlab;
+ break;
+ }
+ }
+
+ }
+
+mygitlab.com - change to your domain.
+
+Restart nginx:
+ /etc/init.d/nginx restart
+
+Create init script in /etc/init.d/gitlab:
+ #! /bin/bash
+ ### BEGIN INIT INFO
+ # Provides: unicorn
+ # Required-Start: $local_fs $remote_fs $network $syslog
+ # Required-Stop: $local_fs $remote_fs $network $syslog
+ # Default-Start: 2 3 4 5
+ # Default-Stop: 0 1 6
+ # Short-Description: starts the unicorn web server
+ # Description: starts unicorn
+ ### END INIT INFO
+
+ DAEMON_OPTS="-c /home/gitlab/gitlab/config/unicorn.rb -E production -D"
+ NAME=unicorn
+ DESC="Gitlab service"
+ PID=/home/gitlab/gitlab/tmp/pids/unicorn.pid
+
+ case "$1" in
+ start)
+ CD_TO_APP_DIR="cd /home/gitlab/gitlab"
+ START_DAEMON_PROCESS="bundle exec unicorn_rails $DAEMON_OPTS"
+
+ echo -n "Starting $DESC: "
+ if [ `whoami` = root ]; then
+ sudo -u gitlab sh -c "$CD_TO_APP_DIR > /dev/null 2>&1 && $START_DAEMON_PROCESS"
+ else
+ $CD_TO_APP_DIR > /dev/null 2>&1 && $START_DAEMON_PROCESS
+ fi
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ kill -QUIT `cat $PID`
+ echo "$NAME."
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ kill -USR2 `cat $PID`
+ echo "$NAME."
+ ;;
+ reload)
+ echo -n "Reloading $DESC configuration: "
+ kill -HUP `cat $PID`
+ echo "$NAME."
+ ;;
+ *)
+ echo "Usage: $NAME {start|stop|restart|reload}" >&2
+ exit 1
+ ;;
+ esac
+
+ exit 0
+
+Adding permission:
+ sudo chmod +x /etc/init.d/gitlab
+
+When server is rebooted then gitlab must starting:
+ sudo update-rc.d gitlab defaults
+
+Now you can start/restart/stop gitlab like:
+ sudo /etc/init.d/gitlab restart