BigW Consortium Gitlab

4.2-to-5.0.md 5.1 KB
Newer Older
1
# From 4.2 to 5.0
2
*Make sure you view this [upgrade guide from the `master` branch](../../../master/doc/update/4.2-to-5.0.md) for the most up to date instructions.*
3

4
## Warning
5

6
GitLab 5.0 is affected by critical security vulnerability CVE-2013-4490.
7

8 9
## Important changes

10
- We don't use `gitlab` user any more. Everything will be moved to `git` user
11
- Self signed SSL certificates are not supported until GitLab 5.1
12
- **requires ruby1.9.3**
13

14
## 0. Stop GitLab
15 16 17

    sudo service gitlab stop

18
## 1. add bash to git user
19 20 21 22 23

```
sudo chsh -s /bin/bash git
```

24
## 2. git clone gitlab-shell
25 26

```
27
cd /home/git/
28 29 30
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git /home/git/gitlab-shell
```

31
## 3. setup gitlab-shell
32 33 34 35 36 37 38 39

```bash
# chmod all repos and files under git
sudo chown git:git -R /home/git/repositories/

# login as git
sudo su git
cd /home/git/gitlab-shell
40
git checkout v1.1.0
41 42 43 44

# copy config
cp config.yml.example config.yml

45 46
# change URL to GitLab instance
# ! make sure the URL ends with '/' like 'https://gitlab.example/'
47 48 49 50 51 52
vim config.yml

# rewrite hooks
./support/rewrite-hooks.sh

# check ruby version for git user ( 1.9 required!! )
53
# GitLab shell requires system ruby 1.9
54 55 56 57 58 59
ruby -v

# exit from git user
exit
```

60
## 4. Copy GitLab instance to git user
61 62 63 64 65 66 67 68 69 70

```bash
sudo cp -R /home/gitlab/gitlab /home/git/gitlab
sudo chown git:git -R /home/git/gitlab
sudo rm -rf /home/gitlab/gitlab-satellites

# if exists
sudo rm /tmp/gitlab.socket
```

71
## 5. Update GitLab to recent version
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

```bash
cd /home/git/gitlab

# backup current config
sudo -u git -H cp config/gitlab.yml config/gitlab.yml.old

sudo -u git -H git fetch
sudo -u git -H git checkout 5-0-stable

# replace config with recent one
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# edit it
sudo -u git -H vim config/gitlab.yml


sudo -u git -H bundle install --without development test postgres --deployment
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u git -H bundle exec rake gitlab:shell:setup RAILS_ENV=production
sudo -u git -H bundle exec rake gitlab:shell:build_missing_projects RAILS_ENV=production

94
sudo -u git -H mkdir -p /home/git/gitlab-satellites
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
sudo -u git -H bundle exec rake gitlab:satellites:create RAILS_ENV=production

# migrate wiki to git
sudo -u git -H bundle exec rake gitlab:wiki:migrate RAILS_ENV=production


# check permissions for /home/git/.ssh/
sudo -u git -H chmod 700 /home/git/.ssh
sudo -u git -H chmod 600 /home/git/.ssh/authorized_keys

# check permissions for /home/git/gitlab/
sudo chown -R git /home/git/gitlab/log/
sudo chown -R git /home/git/gitlab/tmp/
sudo chmod -R u+rwX  /home/git/gitlab/log/
sudo chmod -R u+rwX  /home/git/gitlab/tmp/
110
sudo -u git -H mkdir -p /home/git/gitlab/tmp/pids/
111 112 113 114
sudo chmod -R u+rwX  /home/git/gitlab/tmp/pids

```

115
## 6. Update init.d script and Nginx config
116 117 118 119

```bash
# init.d
sudo rm /etc/init.d/gitlab
Ben Bodenmiller committed
120
sudo curl -L --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-0-stable/init.d/gitlab
121 122 123 124 125 126
sudo chmod +x /etc/init.d/gitlab

# unicorn
sudo -u git -H cp /home/git/gitlab/config/unicorn.rb /home/git/gitlab/config/unicorn.rb.old
sudo -u git -H cp /home/git/gitlab/config/unicorn.rb.example /home/git/gitlab/config/unicorn.rb

127
# Nginx
128 129 130 131 132 133
# Replace path from '/home/gitlab/' to '/home/git/'
sudo vim /etc/nginx/sites-enabled/gitlab
sudo service nginx restart

```

134
## 7. Start GitLab instance
135 136 137 138 139 140

```
sudo service gitlab start

# check if unicorn and sidekiq started
# If not try to logout, also check replaced path from '/home/gitlab/' to '/home/git/'
141
# in Nginx, unicorn, init.d etc
142 143 144 145 146
ps aux | grep unicorn
ps aux | grep sidekiq

```

147
## 8. Check installation
148 149 150 151 152 153 154 155 156 157 158 159 160


```bash
# In 5-10 seconds lets check gitlab-shell
sudo -u git -H /home/git/gitlab-shell/bin/check

# Example of success output
# Check GitLab API access: OK
# Check directories and files:
#         /home/git/repositories: OK
#         /home/git/.ssh/authorized_keys: OK


161
# Now check GitLab instance
162 163 164 165
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

```

166 167 168 169
## 9. Cleanup

**If everything works as expected you can cleanup some old things**
Recommend you wait a bit and do a backup before completing the following.
Ben Bodenmiller committed
170 171

```bash
172
# remove GitLab user from system
Ben Bodenmiller committed
173
sudo userdel -r gitlab
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

cd /home/git

# cleanup .profile
## remove text from .profile added during gitolite installation:
##   PATH=\$PATH:/home/git/bin
##   export PATH
## to see what a clean .profile for new users on your system would look like see /etc/skel/.profile
sudo -u git -H vim .profile

# remove gitolite
sudo rm -R bin
sudo rm -Rf gitolite
sudo rm -R .gitolite
sudo rm .gitolite.rc
sudo rm -f gitlab.pub
sudo rm projects.list

# reset tmp folders
sudo service gitlab stop
cd /home/git/gitlab
sudo rm -R tmp
sudo -u git -H mkdir tmp
sudo chmod -R u+rwX  tmp/

199 200 201 202 203 204
# create directory for pids, make sure GitLab can write to it
sudo -u git -H mkdir tmp/pids/
sudo chmod -R u+rwX  tmp/pids/

# if you are already running a newer version of GitLab check that installation guide for other tmp folders you need to create

205 206 207 208 209 210
# reboot system
sudo reboot

# login, check that GitLab is running fine
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Ben Bodenmiller committed
211
```