Debian 10: Debian 8からRedmine + PostgreSQLを移行する

02日 8月 2021

Debian 8で運用していたPostgreSQLを使ったRedmineをDebian 10へ移行した際の手順を記載する。MySQLを使っている場合でも、データベースのバックアップとリストアのコマンドは異なるが、同様の手順になると思う。

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=redminepgsql_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-selectionsredmine redmine/instances/default/dbconfig-install boolean trueredmine redmine/instances/default/database-type select pgsqlredmine redmine/instances/default/remote/host select localhostredmine redmine/instances/default/pgsql/app-pass password ${REDMINE_PASSWD}redmine redmine/instances/default/pgsql/admin-pass passwordredmine redmine/instances/default/password-confirm passwordredmine 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 psqlDROP 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 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 ]]> tagPlaceholderカテゴリ: ja, redmine, debian-10

Android | Linux | SDL - Narrow Escape