diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | doc/install/installation.md | 38 | ||||
-rw-r--r-- | doc/update/6.8-to-6.9.md | 96 | ||||
-rw-r--r-- | doc/update/mysql_to_postgresql.md | 40 |
5 files changed, 152 insertions, 26 deletions
diff --git a/README.md b/README.md index efac636c24e..a745d120f6e 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,8 @@ * [BitNami one-click installers](http://bitnami.com/stack/gitlab) This package contains both GitLab and GitLab CI. It is available as installer, virtual machine or for cloud hosting providers (Amazon Web Services/Azure/etc.). +* [Cloud 66 deployment and management](http://blog.cloud66.com/installing-gitlab-ubuntu/) Use Cloud 66 to deploy GitLab to your own server or any cloud (eg. DigitalOcean, AWS, Rackspace, GCE) and then manage it with database backups, scaling and more. + #### Unofficial installation methods * [GitLab recipes](https://gitlab.com/gitlab-org/gitlab-recipes/) repository with unofficial guides for using GitLab with different software (operating systems, webservers, etc.) than the official version. @@ -1 +1 @@ -6.9.0.pre +6.9.0.rc1 diff --git a/doc/install/installation.md b/doc/install/installation.md index a2615b5d52d..44f5a28fde5 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -86,7 +86,7 @@ Is the system packaged Git too old? Remove it and compile from source. mail server. By default, Debian is shipped with exim4 whereas Ubuntu does not ship with one. The recommended mail server is postfix and you can install it with: - sudo apt-get install -y postfix + sudo apt-get install -y postfix Then select 'Internet Site' and press enter to confirm the hostname. @@ -101,8 +101,8 @@ Remove the old Ruby 1.8 if present Download Ruby and compile it: mkdir /tmp/ruby && cd /tmp/ruby - curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz - cd ruby-2.0.0-p353 + curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz | tar xz + cd ruby-2.0.0-p481 ./configure --disable-install-rdoc make sudo make install @@ -150,13 +150,13 @@ NOTE: because we need to make use of extensions you need at least pgsql 9.1. ## Clone the Source # Clone GitLab repository - sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-8-stable gitlab + sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-9-stable gitlab # Go to gitlab dir cd /home/git/gitlab **Note:** -You can change `6-8-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server! +You can change `6-9-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server! ## Configure it @@ -244,15 +244,6 @@ that were [fixed](https://github.com/bundler/bundler/pull/2817) in 1.5.2. # Or if you use MySQL (note, the option says "without ... postgres") sudo -u git -H bundle install --deployment --without development test postgres aws - -## Initialize Database and Activate Advanced Features - - sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production - - # Type 'yes' to create the database tables. - - # When done you see 'Administrator account created:' - ## Install GitLab shell GitLab Shell is an ssh access and repository management software developed specially for GitLab. @@ -261,11 +252,20 @@ GitLab Shell is an ssh access and repository management software developed speci cd /home/git/gitlab # Run the installation task for gitlab-shell (replace `REDIS_URL` if needed): - sudo -u git -H bundle exec rake gitlab:shell:install[v1.9.3] REDIS_URL=redis://localhost:6379 RAILS_ENV=production + sudo -u git -H bundle exec rake gitlab:shell:install[v1.9.4] REDIS_URL=redis://localhost:6379 RAILS_ENV=production # By default, the gitlab-shell config is generated from your main gitlab config. You can review (and modify) it as follows: sudo -u git -H editor /home/git/gitlab-shell/config.yml + +## Initialize Database and Activate Advanced Features + + sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production + + # Type 'yes' to create the database tables. + + # When done you see 'Administrator account created:' + ## Install Init Script Download the init script (will be /etc/init.d/gitlab): @@ -409,22 +409,22 @@ GitLab uses [Omniauth](http://www.omniauth.org/) for authentication and already These steps are fairly general and you will need to figure out the exact details from the Omniauth provider's documentation. * Stop GitLab - `sudo service gitlab stop` + `sudo service gitlab stop` * Add provider specific configuration options to your `config/gitlab.yml` (you can use the [auth providers section of the example config](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example) as a reference) * Add the gem to your [Gemfile](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/Gemfile) `gem "omniauth-your-auth-provider"` * If you're using MySQL, install the new Omniauth provider gem by running the following command: - `sudo -u git -H bundle install --without development test postgres --path vendor/bundle --no-deployment` + `sudo -u git -H bundle install --without development test postgres --path vendor/bundle --no-deployment` * If you're using PostgreSQL, install the new Omniauth provider gem by running the following command: - `sudo -u git -H bundle install --without development test mysql --path vendor/bundle --no-deployment` + `sudo -u git -H bundle install --without development test mysql --path vendor/bundle --no-deployment` > These are the same commands you used in the [Install Gems section](#install-gems) with `--path vendor/bundle --no-deployment` instead of `--deployment`. * Start GitLab - `sudo service gitlab start` + `sudo service gitlab start` ### Examples diff --git a/doc/update/6.8-to-6.9.md b/doc/update/6.8-to-6.9.md new file mode 100644 index 00000000000..a5e644b8a07 --- /dev/null +++ b/doc/update/6.8-to-6.9.md @@ -0,0 +1,96 @@ +# From 6.8 to 6.9 + +### 0. Backup + +```bash +cd /home/git/gitlab +sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production +``` + +### 1. Stop server + +```bash +sudo service gitlab stop +``` + +### 2. Get latest code + +```bash +cd /home/git/gitlab +sudo -u git -H git fetch --all +``` + +For Gitlab Community Edition: + +```bash +sudo -u git -H git checkout 6-9-stable +``` + +OR + +For GitLab Enterprise Edition: + +```bash +sudo -u git -H git checkout 6-9-stable-ee +``` + +### 3. Update gitlab-shell (and its config) + +```bash +cd /home/git/gitlab-shell +sudo -u git -H git fetch +sudo -u git -H git checkout v1.9.4 +``` + +### 4. 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 +``` + +### 5. Update config files + +#### New configuration options for gitlab.yml + +There are new configuration options available for gitlab.yml. View them with the command below and apply them to your current gitlab.yml if desired. + +``` +git diff 6-8-stable:config/gitlab.yml.example 6-9-stable:config/gitlab.yml.example +``` + +### 6. Start application + + sudo service gitlab start + sudo service nginx restart + +### 7. 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 upgrade is complete! + +## Things went south? Revert to previous version (6.8) + +### 1. Revert the code to the previous version +Follow the [`upgrade guide from 6.7 to 6.8`](6.7-to-6.8.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. diff --git a/doc/update/mysql_to_postgresql.md b/doc/update/mysql_to_postgresql.md index 5b9209d7df4..acd1e33f599 100644 --- a/doc/update/mysql_to_postgresql.md +++ b/doc/update/mysql_to_postgresql.md @@ -1,10 +1,11 @@ # Migrating GitLab from MySQL to Postgres If you are replacing MySQL with Postgres while keeping GitLab on the same -server all you need to do is to export from MySQL and import into Postgres as -described below. If you are also moving GitLab to another server, or if you are -switching to omnibus-gitlab, you may want to use a GitLab backup file. The -second part of this documents explains the procedure to do this. +server all you need to do is to export from MySQL, import into Postgres and +rebuild the indexes as described below. If you are also moving GitLab to +another server, or if you are switching to omnibus-gitlab, you may want to use +a GitLab backup file. The second part of this documents explains the procedure +to do this. ## Export from MySQL and import into Postgres @@ -15,15 +16,41 @@ sudo service gitlab stop # Update /home/git/gitlab/config/database.yml -git clone https://github.com/lanyrd/mysql-postgresql-converter.git +git clone https://github.com/gitlabhq/mysql-postgresql-converter.git cd mysql-postgresql-converter mysqldump --compatible=postgresql --default-character-set=utf8 -r databasename.mysql -u root gitlabhq_production python db_converter.py databasename.mysql databasename.psql psql -f databasename.psql -d gitlabhq_production +# Rebuild indexes (see below) + sudo service gitlab start ``` + +## Rebuild indexes + +The lanyrd database converter script does not preserve all indexes, so we have +to recreate them ourselves after migrating from MySQL. It is not necessary to +shut down GitLab for this process. + +``` +# Clone the database converter on your Postgres-backed GitLab server +cd /tmp +git clone https://github.com/gitlabhq/mysql-postgresql-converter.git + +# Stash changes to db/schema.rb to make sure we can find the right index statements +cd /home/git/gitlab +sudo -u git -H git stash + +# Generate the `CREATE INDEX CONCURRENTLY` statements based on schema.rb +cd /tmp/mysql-to-postgresql-converter +ruby index_create_statements.rb /home/git/gitlab/db/schema.rb > index_create_statements.psql + +# Execute the SQL statements against the GitLab database +sudo -u git psql -f index_create_statements.psql -d gitlabhq_production +``` + ## Converting a GitLab backup file from MySQL to Postgres GitLab backup files (<timestamp>_gitlab_backup.tar) contain a SQL dump. Using @@ -64,5 +91,6 @@ sudo -u git -H python mysql-postgresql-converter/db_converter.py gitlabhq_produc sudo -u git -H tar rf TIMESTAMP_gitlab_backup.tar db/database.sql -# Done! TIMESTAMP_gitlab_backup.tar can now be restored into a Postgres GitLab installation. +# Done! TIMESTAMP_gitlab_backup.tar can now be restored into a Postgres GitLab +# installation. Remember to recreate the indexes after the import. ``` |