From 4027a26e7b5a1a2a54dd57e480507095c91af26b Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Mon, 31 Aug 2015 15:30:15 +0200 Subject: Replace grack with gitlab-git-http-server --- doc/install/installation.md | 29 ++++++-- doc/update/7.14-to-8.0.md | 159 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 doc/update/7.14-to-8.0.md (limited to 'doc') diff --git a/doc/install/installation.md b/doc/install/installation.md index 73e36fa7e51..52031e9b9a1 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -125,13 +125,25 @@ Install the Bundler Gem: sudo gem install bundler --no-ri --no-rdoc -## 3. System Users +## 3. Go + +Since GitLab 8.0, Git HTTP requests are handled by gitlab-git-http-server. +This is a small daemon written in Go. +To install gitlab-git-http-server we need a Go compiler. + + curl -O --progress https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz + echo '5817fa4b2252afdb02e11e8b9dc1d9173ef3bd5a go1.5.linux-amd64.tar.gz' | shasum -c - && \ + sudo tar -C /usr/local -xzf go1.5.linux-amd64.tar.gz + sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/ + rm go1.5.linux-amd64.tar.gz + +## 4. System Users Create a `git` user for GitLab: sudo adduser --disabled-login --gecos 'GitLab' git -## 4. Database +## 5. Database We recommend using a PostgreSQL database. For MySQL check [MySQL setup guide](database_mysql.md). *Note*: because we need to make use of extensions you need at least pgsql 9.1. @@ -157,7 +169,7 @@ We recommend using a PostgreSQL database. For MySQL check [MySQL setup guide](da # Quit the database session gitlabhq_production> \q -## 5. Redis +## 6. Redis sudo apt-get install redis-server @@ -187,7 +199,7 @@ We recommend using a PostgreSQL database. For MySQL check [MySQL setup guide](da # Add git to the redis group sudo usermod -aG redis git -## 6. GitLab +## 7. GitLab # We'll install GitLab into home directory of the user "git" cd /home/git @@ -297,6 +309,13 @@ GitLab Shell is an SSH access and repository management software developed speci **Note:** Make sure your hostname can be resolved on the machine itself by either a proper DNS record or an additional line in /etc/hosts ("127.0.0.1 hostname"). This might be necessary for example if you set up gitlab behind a reverse proxy. If the hostname cannot be resolved, the final installation check will fail with "Check GitLab API access: FAILED. code: 401" and pushing commits will be rejected with "[remote rejected] master -> master (hook declined)". +### Install gitlab-git-http-server + + cd /home/git + sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-git-http-server.git + cd gitlab-git-http-server + sudo -u git -H make + ### Initialize Database and Activate Advanced Features sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production @@ -345,7 +364,7 @@ Check if GitLab and its environment are configured correctly: # or sudo /etc/init.d/gitlab restart -## 7. Nginx +## 8. Nginx **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](https://gitlab.com/gitlab-org/gitlab-recipes/). diff --git a/doc/update/7.14-to-8.0.md b/doc/update/7.14-to-8.0.md new file mode 100644 index 00000000000..29a38d07b3d --- /dev/null +++ b/doc/update/7.14-to-8.0.md @@ -0,0 +1,159 @@ +# From 7.14 to 8.0 + +### 0. Double-check your Git version + +**This notice applies only to /usr/local/bin/git** + +If you compiled Git from source on your GitLab server then please double-check +that you are using a version that protects against CVE-2014-9390. For six +months after this vulnerability became known the GitLab installation guide +still contained instructions that would install the outdated, 'vulnerable' Git +version 2.1.2. + +Run the following command to get your current Git version. + +``` +/usr/local/bin/git --version +``` + +If you see 'No such file or directory' then you did not install Git according +to the outdated instructions from the GitLab installation guide and you can go +to the next step 'Stop server' below. + +If you see a version string then it should be v1.8.5.6, v1.9.5, v2.0.5, v2.1.4, +v2.2.1 or newer. You can use the [instructions in the GitLab source +installation +guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#1-packages-dependencies) +to install a newer version of Git. + +### 1. Stop server + + sudo service gitlab stop + +### 2. Backup + +```bash +cd /home/git/gitlab +sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production +``` + +### 3. Get latest code + +```bash +sudo -u git -H git fetch --all +sudo -u git -H git checkout -- db/schema.rb # local changes will be restored automatically +``` + +For GitLab Community Edition: + +```bash +sudo -u git -H git checkout 8-0-stable +``` + +OR + +For GitLab Enterprise Edition: + +```bash +sudo -u git -H git checkout 8-0-stable-ee +``` + +### 4. Update gitlab-shell + +```bash +cd /home/git/gitlab-shell +sudo -u git -H git fetch +sudo -u git -H git checkout v2.6.4 +``` + +### 5. Install gitlab-git-http-server + +First we download Go 1.5 and install it into /usr/local/go. + + curl -O --progress https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz + echo '5817fa4b2252afdb02e11e8b9dc1d9173ef3bd5a go1.5.linux-amd64.tar.gz' | shasum -c - && \ + sudo tar -C /usr/local -xzf go1.5.linux-amd64.tar.gz + sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/ + rm go1.5.linux-amd64.tar.gz + +Now we download gitlab-git-http-server and install it in /home/git/gitlab-git-http-server. + + cd /home/git + sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-git-http-server.git + cd gitlab-git-http-server + sudo -u git -H make + +If you put your Git repositories in a directory different from /home/git/repositories, you need to tell gitlab-git-http-server about it via /etc/gitlab/default. +See lib/support/init.d/gitlab.default.example for the options. + +### 6. Install libs, migrations, etc. + +```bash +cd /home/git/gitlab + +# MySQL installations (note: the line below states '--without ... postgres') +sudo -u git -H bundle install --without development test postgres --deployment + +# PostgreSQL installations (note: the line below states '--without ... mysql') +sudo -u git -H bundle install --without development test mysql --deployment + +# Run database migrations +sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production + +# Clean up assets and cache +sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production + +# Update init.d script +sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab +``` + +### 7. Update config files + +#### New configuration options for `gitlab.yml` + +There are new configuration options available for [`gitlab.yml`](config/gitlab.yml.example). View them with the command below and apply them to your current `gitlab.yml`. + +``` +git diff origin/7-14-stable:config/gitlab.yml.example origin/8-0-stable:config/gitlab.yml.example +`````` + +#### New NGINX configuration + +Because of the new gitlab-git-http-server you need to update your NGINX configuration. +If you skip this step 'git clone' and 'git push' over HTTP(S) will stop working. + +``` +# Remove '-ssl' twice in the diff command below if you use HTTP instead of HTTPS +git diff origin/7-14-stable:lib/support/nginx/gitlab-ssl origin/8-0-stable:lib/support/nginx/gitlab-ssl +``` + +### 8. Start application + + sudo service gitlab start + sudo service nginx restart + +### 9. Check application status + +Check if GitLab and its environment are configured correctly: + + sudo -u git -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 git -H bundle exec rake gitlab:check RAILS_ENV=production + +If all items are green, then congratulations, the upgrade is complete! + +## Things went south? Revert to previous version (7.14) + +### 1. Revert the code to the previous version +Follow the [upgrade guide from 7.13 to 7.14](7.13-to-7.14.md), except for the database migration +(The backup is already migrated to the previous version) + +### 2. Restore from the backup: + +```bash +cd /home/git/gitlab +sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production +``` +If you have more than one backup *.tar file(s) please add `BACKUP=timestamp_of_backup` to the command above. -- cgit v1.2.3