Merge pull request #2801 from kgalli/feature/update-operation-guildes
Feature/update operation guildespull/2771/merge
commit
a7b7df4329
@ -0,0 +1,158 @@ |
|||||||
|
# Backup Guide |
||||||
|
|
||||||
|
We advice to backup your OpenProject installation regularly — especially |
||||||
|
before upgrading to a newer version. |
||||||
|
|
||||||
|
## Backup the Database |
||||||
|
|
||||||
|
###OpenProject Version 3.0.15 and newer |
||||||
|
|
||||||
|
Execute the following command in a shell in the directory where |
||||||
|
OpenProject is installed: |
||||||
|
|
||||||
|
````bash |
||||||
|
RAILS_ENV=production bundle exec rake backup:database:create |
||||||
|
``` |
||||||
|
|
||||||
|
The command will create dump of your database which can be found at |
||||||
|
|
||||||
|
`OPENPROJECT_DIRECTORY/backup/openproject-production-db-<DATE>.sql` (for |
||||||
|
MySQL) or |
||||||
|
`OPENPROJECT_DIRECTORY/backup/openproject-production-db-<DATE>.backup` |
||||||
|
(for PostgreSQL). |
||||||
|
|
||||||
|
Optionally, you can specify the path of the backup file. Therefore |
||||||
|
you have to replace the `/path/to/file.backup` with the path of your |
||||||
|
choice |
||||||
|
|
||||||
|
```bash |
||||||
|
RAILS_ENV=production bundle exec rake backup:database:create[/path/to/backup/file.backup] |
||||||
|
``` |
||||||
|
*Note:* You can restore any database backup with the following |
||||||
|
command. Be aware that you have to replace the |
||||||
|
`/path/to/backup/file.backup` path with your actual backup path. |
||||||
|
|
||||||
|
```bash |
||||||
|
RAILS_ENV=production bundle exec rake backup:database:restore[/path/to/backup/file.backup] |
||||||
|
``` |
||||||
|
|
||||||
|
If your database dump is from an old version of OpenProject, also run |
||||||
|
the following command after the restore: |
||||||
|
|
||||||
|
```bash |
||||||
|
RAILS_ENV=production bundle exec rake db:migrate |
||||||
|
``` |
||||||
|
|
||||||
|
to migrate your data to the database structure of your installed |
||||||
|
OpenProject version. |
||||||
|
|
||||||
|
### OpenProject prior Version 3.0.15 |
||||||
|
|
||||||
|
Determine which Database you are using. You can find the relevant |
||||||
|
information in the `OPENPROJECT_DIRECTORY/config/database.yml` file. It |
||||||
|
looks similar to this: |
||||||
|
|
||||||
|
```yaml |
||||||
|
production: |
||||||
|
adapter: postgresql |
||||||
|
database: openproject-production |
||||||
|
host: localhost |
||||||
|
username: my_postgres_user |
||||||
|
password: my_secret_password |
||||||
|
encoding: utf8 |
||||||
|
min_messages: warning |
||||||
|
``` |
||||||
|
|
||||||
|
Locate the database entry for your production database. If your adapter |
||||||
|
is postgresql, then you have a PostgreSQL database. If it is mysql2, you |
||||||
|
use a MySQL database. Now follow the steps for your database adapter. |
||||||
|
|
||||||
|
#### PostgreSQL |
||||||
|
You can backup your PostgreSQL database with the `pg_dump` command and |
||||||
|
restore backups with the `pg_restore` command. (There might be other (and |
||||||
|
more convenient) tools, like pgAdmin, depending on your specific setup.) |
||||||
|
|
||||||
|
An example backup command with `pg_dump` looks like this: |
||||||
|
|
||||||
|
```bash |
||||||
|
pg_dump --clean --format=custom --no-owner --file=/path/to/your/backup/file.backup --username=POSTGRESQL_USER --host=HOST DATABASE_NAME |
||||||
|
``` |
||||||
|
|
||||||
|
Please, replace the path to your backup file, the username, host, and |
||||||
|
database name with your actual data. You can find all relevant |
||||||
|
information in the database.yml file. |
||||||
|
Consult the man page of `pg_dump` for more advanced parameters, if |
||||||
|
necessary. |
||||||
|
|
||||||
|
The database dump can be restored similarly with `pg_restore`: |
||||||
|
|
||||||
|
```bash |
||||||
|
pg_restore --clean --no-owner --single-transaction |
||||||
|
--dbname=DATABASE_NAME --host=HOST --username=POSTGRESQL_USER |
||||||
|
/path/to/your/backup/file.backup |
||||||
|
``` |
||||||
|
|
||||||
|
Consult the man page of `pg_restore` for more advanced parameters, if |
||||||
|
necessary. |
||||||
|
|
||||||
|
#### MySQL |
||||||
|
You can backup your MySQL database for example with the mysqldump |
||||||
|
command and restore backups with the mysql command line client. (There |
||||||
|
might be other (and more convenient) tools, like phpMyAdmin, adminer, or |
||||||
|
other tools, depending on your specific setup.) |
||||||
|
|
||||||
|
An example backup command with `mysqldump` looks like this: |
||||||
|
|
||||||
|
```bash |
||||||
|
mysqldump --single-transaction --add-drop-table --add-locks --result-file=/path/to/your/backup/file.sql --host=HOST --user=MYSQL_USER --password DATABASE_NAME |
||||||
|
``` |
||||||
|
|
||||||
|
Please, replace the path to your backup file, the MySQL username, host |
||||||
|
and database name with your actual data. You can find all relevant |
||||||
|
information in the `database.yml` file. |
||||||
|
Consult the man page of `mysqldump` for more advanced parameters, if |
||||||
|
necessary. |
||||||
|
|
||||||
|
The database dump can be restored similarly with `mysql` (on a \*nix |
||||||
|
compatible shell): |
||||||
|
|
||||||
|
```bash |
||||||
|
mysql --host=HOST --user=MYSQL_USER --password DATABASE_NAME < /path/to/your/backup/file.sql |
||||||
|
``` |
||||||
|
Consult the man page of mysql for more advanced parameters, if |
||||||
|
necessary. |
||||||
|
|
||||||
|
## Backup your Configuration Files |
||||||
|
Please make sure to create a backup copy of at least the following |
||||||
|
configuration files (all listed as a relative path from the OpenProject |
||||||
|
installation directory): |
||||||
|
|
||||||
|
`Gemfile.local` (if present) |
||||||
|
`Gemfile.plugins` (if present) |
||||||
|
`config/database.yml` (if present) |
||||||
|
`config/configuration.yml` (if present) |
||||||
|
`config/settings.yml` (if present) |
||||||
|
|
||||||
|
Some OpenProject options can be given as environment variables. If you |
||||||
|
have configured environment variables for OpenProject, consider to |
||||||
|
backup them too. |
||||||
|
|
||||||
|
## Backup Files Uploaded by Users (attachments) |
||||||
|
Files uploaded by users (e.g. when adding an attachment to a |
||||||
|
WorkPackage) are stored on the hard disk. |
||||||
|
The directory where those files are stored can be configured in the |
||||||
|
`config/configuration.yml` via the `attachments_storage_path` setting (or an |
||||||
|
appropriate environment variable). |
||||||
|
|
||||||
|
If you have not changed the `attachment_storage_path` setting, all files |
||||||
|
will be uploaded to the files directory (relative to your OpenProject |
||||||
|
installation). |
||||||
|
|
||||||
|
Make sure to backup this directory. |
||||||
|
|
||||||
|
## Backup Repositories |
||||||
|
You can manage Repositories with OpenProject — so one or more of your |
||||||
|
projects may have a repository. Please make sure to backup these too. |
||||||
|
The path to a project’s repository can be found in the repository |
||||||
|
settings of the respective project (it can be individually defined for |
||||||
|
every project). Each of the defined locations has to be backed up. |
@ -0,0 +1,152 @@ |
|||||||
|
# OpenProject 4.0 to OpenProject 4.1 Debian/Ubuntu Upgrade Guide |
||||||
|
|
||||||
|
This guide describes the upgrade process from OpenProject 4.0 to 4.1 on Debian 7.7 and |
||||||
|
Ubuntu 14.04 LTS step by step. |
||||||
|
|
||||||
|
Note: We strongly recommend to update your OpenProject installation to the latest |
||||||
|
available 4.0 version (currently 4.0.9), before attempting an update to 4.1. |
||||||
|
|
||||||
|
|
||||||
|
## Preparation |
||||||
|
|
||||||
|
* Backup your current Openproject installation. Typically you should backup the attachment |
||||||
|
folder of your installation, the subversion repositories (if applicable) and your database. |
||||||
|
For more information please have a look at our [backup guide](backup-guide.md) |
||||||
|
|
||||||
|
* Before Upgrading, check that all the installed OpenProject plugins support the new |
||||||
|
OpenProject version. Remove incompatible plugins before attempting an upgrade. Stop |
||||||
|
the OpenProject Server. You may even add a maintenance page, if you feel comfortable |
||||||
|
with that. |
||||||
|
|
||||||
|
* If you run the worker process with a cronjob, disable the cronjob temporarily. |
||||||
|
* Stop the (delayed\_job) worker process. In case you run the woker process through |
||||||
|
`RAILS_ENV=production bundle exec script/delayed_job start`, execute the following: |
||||||
|
`RAILS_ENV=production bundle exec script/delayed_job stop`. |
||||||
|
|
||||||
|
## Update your system |
||||||
|
|
||||||
|
```bash |
||||||
|
[root@debian]# apt-get update |
||||||
|
[root@debian]# apt-get upgrade |
||||||
|
``` |
||||||
|
|
||||||
|
## Get the new OpenProject Source Code |
||||||
|
Change into the directory where OpenProject is installed and switch to the |
||||||
|
operating-system-user the OpenProject operates as. We assume that OpenProject is |
||||||
|
installed in `/home/openproject/openproject` by the `openproject` user. |
||||||
|
|
||||||
|
```bash |
||||||
|
[root@debian]# su - openproject -c "bash -l" |
||||||
|
[openproject@debian]# cd ~/openproject/openproject |
||||||
|
``` |
||||||
|
|
||||||
|
Remove manual changes and modifications (If you have modified OpenProject source |
||||||
|
files and want to preserve those changes, back up your changes, and re-apply |
||||||
|
them later): |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# git reset --hard |
||||||
|
[openproject@debian]# git fetch |
||||||
|
[openproject@debian]# git checkout v4.1.0 |
||||||
|
``` |
||||||
|
|
||||||
|
## Upgrade Ruby |
||||||
|
OpenProject 4.1 requires Ruby to be installed in version 2.1.x. Assuming you have |
||||||
|
installed Ruby via RVM, do the following to upgrade your Ruby installation: |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# rvm get stable |
||||||
|
[openproject@debian]# export -f rvm_debug |
||||||
|
[openproject@debian]# rvm install 2.1.5 |
||||||
|
[openproject@debian]# rvm use --default 2.1.5 |
||||||
|
[openproject@debian]# gem install bundler |
||||||
|
[openproject@debian]# bundle install |
||||||
|
``` |
||||||
|
|
||||||
|
### Update application server configuration |
||||||
|
This sections only applies to you, if you serve OpenProject via Apache and Passenger. |
||||||
|
If you serve OpenProject in a different way, be sure to check that it still works. |
||||||
|
|
||||||
|
During the upgrade of the Ruby version, we have potentially installed a new Ruby |
||||||
|
and Passenger version. The versions of Ruby and Passenger appear in the Apache |
||||||
|
configuration like this: |
||||||
|
|
||||||
|
```apache |
||||||
|
LoadModule passenger_module /home/openproject/.rvm/gems/ruby-2.1.4/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so |
||||||
|
<IfModule mod_passenger.c> |
||||||
|
PassengerRoot /home/openproject/.rvm/gems/ruby-2.1.4/gems/passenger-4.0.53 |
||||||
|
PassengerDefaultRuby /home/openproject/.rvm/gems/ruby-2.1.4/wrappers/ruby |
||||||
|
</IfModule> |
||||||
|
``` |
||||||
|
Please run the following commands to upgrade passenger and re-install the Apache module: |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# gem update passenger |
||||||
|
[openproject@debian]# gem cleanup passenger |
||||||
|
[openproject@debian]# passenger-install-apache2-module |
||||||
|
``` |
||||||
|
|
||||||
|
The output of passenger-install-apache2-module2 tells you how to configure Apache. |
||||||
|
It is basically the same as what is already installed, except for the updated version numbers. |
||||||
|
|
||||||
|
Don’t forget to restart apache after the configuration change: |
||||||
|
|
||||||
|
```bash |
||||||
|
[root@debian]# service apache2 reload |
||||||
|
``` |
||||||
|
|
||||||
|
## Node.js installation |
||||||
|
Node.js is necessary to precompile the assets (JavaScript and CSS). We will |
||||||
|
install the latest 0.12.x version of Node.js via nodeenv: |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# exit |
||||||
|
[root@debian]# apt-get install python python-pip |
||||||
|
[root@debian]# pip install nodeenv |
||||||
|
[root@debian]# su - openproject -c "bash -l" |
||||||
|
[openproject@debian]# cd /home/openproject |
||||||
|
[openproject@debian]# nodeenv nodeenv |
||||||
|
[openproject@debian]# source ./nodeenv/bin/activate |
||||||
|
[openproject@debian]# npm -g install bower |
||||||
|
``` |
||||||
|
|
||||||
|
As a reference, the following Node.js and NPM versions have been installed on our system: |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# node --version |
||||||
|
v0.12.2 |
||||||
|
[openproject@debian]# npm --version |
||||||
|
1.4.28 |
||||||
|
[openproject@debian]# bower --version |
||||||
|
1.3.12 |
||||||
|
``` |
||||||
|
|
||||||
|
## The Upgrade |
||||||
|
|
||||||
|
Now that the sources and dependencies are in place, you can migrate the Database and do the upgrade: |
||||||
|
|
||||||
|
```bash |
||||||
|
[openproject@debian]# cd /home/openproject/openproject |
||||||
|
[openproject@debian]# npm install |
||||||
|
[openproject@debian]# RAILS_ENV="production" bundle exec rake db:migrate |
||||||
|
[openproject@debian]# RAILS_ENV="production" bundle exec rake db:seed |
||||||
|
[openproject@debian]# RAILS_ENV="production" bundle exec rake assets:precompile |
||||||
|
[openproject@debian]# touch tmp/restart.txt |
||||||
|
``` |
||||||
|
|
||||||
|
*Side note:* If you are using `RAILS_ENV="development"` the task `bundle exec rake |
||||||
|
assets:webpack` needs to be run. This step is not necessary for `production` |
||||||
|
because it is part of the `asset:precompile` tasks. |
||||||
|
|
||||||
|
## The Aftermath |
||||||
|
* Re-enable the `delayed_job` cron job that was disabled in the first step. |
||||||
|
* If you have put up a maintenance page, remove it. |
||||||
|
* Start the OpenProject server again |
||||||
|
* Watch for further OpenProject updates in our news, or on twitter. |
||||||
|
|
||||||
|
## Questions, Comments, and Feedback |
||||||
|
If you have any further questions, comments, feedback, or an idea to enhance this guide, |
||||||
|
please tell us at the appropriate forum. |
||||||
|
|
||||||
|
Also, please take a look at the Frequently [Asked Questions](https://www.openproject.org/help/faq/). |
||||||
|
|
@ -0,0 +1,73 @@ |
|||||||
|
# Backup Guide |
||||||
|
|
||||||
|
We advice to backup your OpenProject installation regularly — especially |
||||||
|
before upgrading to a newer version. |
||||||
|
|
||||||
|
## What should be backed up |
||||||
|
|
||||||
|
In general the following parts of your OpenProject installation should be |
||||||
|
backed up: |
||||||
|
|
||||||
|
* Data stored in the database |
||||||
|
* Configuration files |
||||||
|
* Uploaded files (attachments) |
||||||
|
* Repositories (typically subversion) if applicable |
||||||
|
|
||||||
|
## Backup via packager command line client |
||||||
|
|
||||||
|
The packager installation provides a backup tool which can be used to take |
||||||
|
a snaphsot of the current OpenProject installation. It will create a |
||||||
|
backup of all parts mentioned above. The backup tool is used by |
||||||
|
executing the following command: |
||||||
|
|
||||||
|
`openproject run backup` |
||||||
|
|
||||||
|
for the _OpenProject Core Editon_ or a slighly different command if the |
||||||
|
_OpenProject Community Edition_ is used (a `-ce` is prepended): |
||||||
|
|
||||||
|
`openproject-ce run backup` |
||||||
|
|
||||||
|
The command will create backup files in the following location: |
||||||
|
|
||||||
|
`/var/db/openproject/backup` or `/var/db/openproject-ce/backup` |
||||||
|
depending on the Edition used (as above `-ce` is used for Community |
||||||
|
Edition). |
||||||
|
|
||||||
|
In detail the content of the directory should look very similar to the |
||||||
|
following: |
||||||
|
|
||||||
|
```bash |
||||||
|
root@test-packager-backup:/opt/openproject# ls -l /var/db/openproject/backup/ |
||||||
|
total 24 |
||||||
|
-rw-r----- 1 openproject openproject 117 Apr 8 09:55 attachments-20150408095521.tar.gz |
||||||
|
-rw-r----- 1 openproject openproject 667 Apr 8 09:55 conf-20150408095521.tar.gz |
||||||
|
-rw-r----- 1 openproject openproject 8298 Apr 8 09:55 mysql-dump-20150408095521.sql.gz |
||||||
|
-rw-r----- 1 openproject openproject 116 Apr 8 09:55 svn-repositories-20150408095521.tar.gz |
||||||
|
``` |
||||||
|
|
||||||
|
## Restore notice |
||||||
|
|
||||||
|
The backup created via the packager command line client consists of four |
||||||
|
parts which are all zipped using `gzip`. Except the MySQL database dump |
||||||
|
these parts can be restored by untar/unzip the `*.tar.gzip` and copy the |
||||||
|
content to the proper location. The command to untar and unzip the |
||||||
|
`*.tar.gz` files looks like this (using sample file names from above): |
||||||
|
|
||||||
|
```bash |
||||||
|
tar vxfz attachments-20150408095521.tar.gz |
||||||
|
``` |
||||||
|
|
||||||
|
To restore the MySQL dump it is recommended to use the `mysql` comand |
||||||
|
line client. |
||||||
|
|
||||||
|
First the dump has to be extracted (unzipped) and then restored. The |
||||||
|
command used should look very similar to this: |
||||||
|
|
||||||
|
```bash |
||||||
|
gzip -d mysql-dump-20150408095521.sql.gz |
||||||
|
mysql -u <user> -h <host> -p <database> < mysql-dump-20150408095521.sql |
||||||
|
``` |
||||||
|
|
||||||
|
The `<user>`, `<host>` and `<database>` variables have to be replaced with |
||||||
|
actual values. |
||||||
|
|
Loading…
Reference in new issue