Debian 8で運用していたPostgreSQLを使ったRedmineをDebian 10へ移行した際の手順を記載する。MySQLを使っている場合でも、データベースのバックアップとリストアのコマンドは異なるが、同様の手順になると思う。
Table of Contents
1 Debian 8でRedmineのデータをバックアップする
データベースをバックアップする。
$ sudo -u postgres pg_dump redmine_default > /tmp/redmine_default.pgsql
/var/lib/redmineをバックアップする。
$ cd /var/lib $ sudo tar czfp /tmp/redmine.tgz redmine
この記事ではこれらのファイルをDebian 10の/tmpに転送している。
2 Debian 10にredmineをインストールする
Redmineをインストールする。 Debian 10ではRedmineはbuster-backportsリポジトリに入っており、Redmineが必要とするruby-xxxパッケージもbuster-backportsリポジトリに入っているバージョンを使用する必要がある。
#!/bin/sh -e # Database passwd for redmine_default table. [ -z "${REDMINE_PASSWD}" ] && REDMINE_PASSWD=redmine pgsql_install() { sudo apt install -y postgresql } redmine_install() { # Enable buster-backports repository. echo "deb http://deb.debian.org/debian buster-backports main" | \ sudo tee /etc/apt/sources.list.d/backports.list sudo apt update -y cat <<EOF | sudo debconf-set-selections redmine redmine/instances/default/dbconfig-install boolean true redmine redmine/instances/default/database-type select pgsql redmine redmine/instances/default/remote/host select localhost redmine redmine/instances/default/pgsql/app-pass password ${REDMINE_PASSWD} redmine redmine/instances/default/pgsql/admin-pass password redmine redmine/instances/default/password-confirm password redmine redmine/instances/default/app-password-confirm password ${REDMINE_PASSWD} EOF # The redmine/buster-backports needs ruby-xxx package in buster-backports # repository. sudo apt install -y redmine/buster-backports redmine-pgsql/buster-backports \ ruby-rouge/buster-backports } apache_install() { sudo apt install -y apache2 libapache2-mod-passenger bundler # Overwrite passenger.conf. cat << EOF | sudo tee /etc/apache2/mods-available/passenger.conf <IfModule mod_passenger.c> PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini PassengerDefaultRuby /usr/bin/ruby PassengerDefaultUser www-data RailsBaseURI /redmine </IfModule> EOF cd /var/www/html sudo ln -s /usr/share/redmine/public redmine sudo chown -R www-data:www-data /usr/share/redmine cat << EOF | sudo tee /etc/apache2/sites-available/redmine.conf <VirtualHost _default_:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <Directory /redmine> Options FollowSymLinks PassengerResolveSymlinksInDocumentRoot on AllowOverride None </Directory> </VirtualHost> EOF sudo a2enmod passenger sudo a2enmod ssl sudo a2ensite redmine sudo systemctl enable apache2 sudo systemctl restart apache2 } redmine_main() { pgsql_install redmine_install apache_install } redmine_main
3 Debian 10でRedmineのデータをリストアする
Apacheを停止する。
$ sudo systemctl stop apache2
redmineのインストールで作成されたredmine_defaultテーブルを削除し、空の redmine_defaultテーブルを作成する。
$ cat <<EOF | sudo -u postgres psql DROP DATABASE redmine_default; CREATE DATABASE redmine_default OWNER = "redmine/instances/default" \ TEMPLATE = template0 ENCODING = 'UTF8'; EOF
Debian 8のredmine_defaultテーブルからデータをリストアする。テーブルにアクセスできるユーザをredmine_defaultを"redmine/instances/default"に変更する(/etc/redmine/default/database.ymlのusernameを "redmine/instances/default"からredmine_defaultに変更しても良い)。
$ sed -e 's;redmine_default;"redmine/instances/default";g' \ -i redmine_default.pgsql $ sudo -u postgres psql redmine_default < /tmp/redmine_default.pgsql
データベースのマイグレーションを実行する。
$ wget https://www.redmine.org/projects/redmine/repository/raw/tags/3.4.2/db/migrate/20170309214320_add_project_default_assigned_to_id.rb $ sudo mv 20170309214320_add_project_default_assigned_to_id.rb \ /usr/share/redmine/db/migrate/ $ cd /usr/share/redmine/ $ sudo bundle exec rake db:migrate RAILS_ENV=production
/var/lib/redmineを展開する。 Gemfile.lockがある場合は削除しておく。
$ cd /var/lib $ sudo tar zxf /tmp/redmine.tgz $ sudo rm -f /var/lib/redmine/Gemfile.lock
Apacheを起動する。これでDebian 10でRedmineが動くようになった。
$ sudo systemctl start apache2