summaryrefslogtreecommitdiff
path: root/doc/update/7.14-to-8.0.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/update/7.14-to-8.0.md')
-rw-r--r--doc/update/7.14-to-8.0.md130
1 files changed, 95 insertions, 35 deletions
diff --git a/doc/update/7.14-to-8.0.md b/doc/update/7.14-to-8.0.md
index 29a38d07b3d..0e65c32098c 100644
--- a/doc/update/7.14-to-8.0.md
+++ b/doc/update/7.14-to-8.0.md
@@ -10,9 +10,9 @@ 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.
+Run the following command to get your current Git version:
-```
+```sh
/usr/local/bin/git --version
```
@@ -63,39 +63,70 @@ sudo -u git -H git checkout 8-0-stable-ee
```bash
cd /home/git/gitlab-shell
sudo -u git -H git fetch
-sudo -u git -H git checkout v2.6.4
+sudo -u git -H git checkout v2.6.5
```
### 5. Install gitlab-git-http-server
-First we download Go 1.5 and install it into /usr/local/go.
+First we download Go 1.5 and install it into `/usr/local/go`:
+
+```bash
+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`:
+
+```bash
+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
+```
+
+Make sure your unicorn.rb file contains a 'listen' line for
+'127.0.0.1:8080' and that this line is not commented out.
+
+```
+cd /home/git/gitlab
+grep ^listen config/unicorn.rb
- 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
+# If there is no 'listen' line for 127.0.0.1:8080, add it:
+sudo -u git tee -a config/unicorn.rb <<EOF
+listen "127.0.0.1:8080", :tcp_nopush => true
+EOF
+```
-Now we download gitlab-git-http-server and install it in /home/git/gitlab-git-http-server.
+If your Git repositories are in a directory other than `/home/git/repositories`,
+you need to tell `gitlab-git-http-server` about it via `/etc/default/gitlab`.
+See `lib/support/init.d/gitlab.default.example` for the options.
- 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
+### 6. Copy secrets
-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.
+The `secrets.yml` file is used to store keys to encrypt sessions and encrypt secure variables.
+When you run migrations make sure to store it someplace safe.
+Don't store it in the same place as your database backups,
+otherwise your secrets are exposed if one of your backups is compromised.
-### 6. Install libs, migrations, etc.
+```
+cd /home/git/gitlab
+sudo -u git -H cp config/secrets.yml.example config/secrets.yml
+sudo -u git -H chmod 0600 config/secrets.yml
+```
+
+### 7. 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
+# MySQL installations (note: the line below states '--without postgres')
+sudo -u git -H bundle install --without postgres development test --deployment
-# PostgreSQL installations (note: the line below states '--without ... mysql')
-sudo -u git -H bundle install --without development test mysql --deployment
+# PostgreSQL installations (note: the line below states '--without mysql')
+sudo -u git -H bundle install --without mysql development test --deployment
# Run database migrations
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
@@ -107,38 +138,55 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
```
-### 7. Update config files
+### 8. 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`.
+There are new configuration options available for [`gitlab.yml`](config/gitlab.yml.example). View them with the command below and apply them manually to your current `gitlab.yml`:
-```
+```sh
git diff origin/7-14-stable:config/gitlab.yml.example origin/8-0-stable:config/gitlab.yml.example
-``````
+```
-#### New NGINX configuration
+The new options include configuration of GitLab CI that are now being part of GitLab CE and EE.
-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.
+#### New Nginx configuration
-```
-# Remove '-ssl' twice in the diff command below if you use HTTP instead of HTTPS
+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.
+
+View changes between the previous recommended Nginx configuration and the
+current one:
+
+```sh
+# For HTTPS configurations
git diff origin/7-14-stable:lib/support/nginx/gitlab-ssl origin/8-0-stable:lib/support/nginx/gitlab-ssl
+
+# For HTTP configurations
+git diff origin/7-14-stable:lib/support/nginx/gitlab origin/8-0-stable:lib/support/nginx/gitlab
```
-### 8. Start application
+If you are using Apache instead of NGINX please see the updated [Apache templates](https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache).
+Also note that because Apache does not support upstreams behind Unix sockets you will need to let gitlab-git-http-server listen on a TCP port. You can do this via [/etc/default/gitlab](https://gitlab.com/gitlab-org/gitlab-ce/blob/8-0-stable/lib/support/init.d/gitlab.default.example#L34).
+
+### 9. Migrate GitLab CI to GitLab CE/EE
+
+Now, GitLab CE and EE has CI integrated. However, migrations don't happen automatically and you need to do it manually.
+Please follow the following guide [to migrate](../migrate_ci_to_ce/README.md) your GitLab CI instance to GitLab CE/EE.
+
+### 10. Start application
sudo service gitlab start
sudo service nginx restart
-### 9. Check application status
+### 11. 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:
+To make sure you didn't miss anything run a more thorough check:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
@@ -147,13 +195,25 @@ 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:
+### 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.
+
+If you have more than one backup `*.tar` file(s) please add `BACKUP=timestamp_of_backup` to the command above.
+
+## Troubleshooting
+
+### "You appear to have cloned an empty repository."
+
+If you see this message when attempting to clone a repository hosted by GitLab,
+this is likely due to an outdated Nginx or Apache configuration, or a missing or
+misconfigured `gitlab-git-http-server` instance. Double-check that you correctly
+completed [Step 5](#5-install-gitlab-git-http-server) to install the daemon and
+[Step 8](#new-nginx-configuration) to reconfigure Nginx.