現状の環境
- Raspbian GNU/Linux 9 (stretch)
- Redmine 4.0.2
- MariaDB 10.1.37
- apache2 + unicorn
前提
- checkinstall 導入済み
- このページ のパッチあて済み
- PostgreSQL11.2をsystemdで導入する
- インストールディレクトリ:/var/lib/postgresql
- Redmineのディレクトリを
%REDMINE_DIR%
と記述します - Redmineの実行ユーザを
%REDMINE_USER%
と記述します - pgloaderは別ホストのCentOS7から実行します
- 残念ながら、RaspberryPi でビルドしたバイナリは動きませんでした…
- Redmineは停止済み
- MariaDBは起動中
PostgreSQL11.2の導入
1.不足パッケージインストール(piユーザ)
sudo apt install libreadline-dev libsystemd-dev
他に足りないものがあればよしなに。
2.postgresユーザ作成(piユーザ)
sudo useradd postgres -s /bin/bash -m
3.postgresインストール用ディレクトリ作成(piユーザ)
sudo mkdir /var/lib/postgresql
sudo chown postgres:postgres /var/lib/postgresql
4.PostgreSQLをビルド(postgresユーザ)
環境変数を定義する(新規作成)
~/.bash_profile
export PGHOME=/var/lib/postgresql
export PGDATA=/var/lib/postgresql/data
PATH=$PGHOME/bin:$PATH
PostgreSQLのソースを取得してビルド
mkdir ~/src
wget https://ftp.postgresql.org/pub/source/v11.2/postgresql-11.2.tar.gz
tar zxf postgresql-11.2.tar.gz -C ~/src/
cd src/postgresql-11.2/
./configure --prefix /var/lib/postgresql --with-systemd
make
checkinstall -D --fstrans=no
/home/postgres/src/postgresql-11.2/postgresql_11.2-1_armhf.deb
でパッケージが作成されました。
5.PostgreSQLインストール(piユーザ)
sudo dpkg -i /home/postgres/src/postgresql-11.2/postgresql_11.2-1_armhf.deb
6.initdb(postgresユーザ)
mkdir /var/lib/postgresql/data
initdb --encoding=UTF8
7.PostgreSQL設定変更(postgresユーザ)
以下の行を修正
/var/lib/postgresql/data/postgresql.conf
listen_addresses = '*'
以下の行を追加
/var/lib/postgresql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
8.PostgreSQL起動(rootユーザ)
以下のファイルを新規作成
/etc/systemd/system/postgresql-11.service
[Unit]
Description=PostgreSQL 11 database server
Documentation=man:postgres(1)
After=syslog.target
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
Environment=PGDATA=/var/lib/postgresql/data/
ExecStart=/var/lib/postgresql/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
自動起動を有効&即時起動します。
systemctl enable postgresql-11
systemctl start postgresql-11
9.Redmine用ユーザ&DB作成(postgresユーザ)
psql -U postgres
CREATE ROLE %YOUR_NAME_PG% LOGIN ENCRYPTED PASSWORD '%YOUR_PASS_PG%' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE %YOUR_DB_PG% WITH ENCODING='UTF8' OWNER=%YOUR_NAME_PG%;
'%YOUR_xx_PG%' はよしなに変更してください。
MySQL→PostgreSQLへのデータ移行
CentOS7で作業します。
rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgloader-3.6.1-1.rhel7.x86_64.rpm
pgloader mysql://%YOUR_NAME_MS%:%YOUR_PASS_MS%@%YOUR_HOST_NAME%/%YOUR_DB_MS% pgsql://%YOUR_NAME_PG%:%YOUR_PASS_PG%@%YOUR_HOST_PG%/%YOUR_DB_PG%
'%YOUR_xx_MS%'、'%YOUR_xx_PG%' はよしなに変更してください。
Redmineの設定変更
1.RedmineのDB設定を変更する
変更前
%REDMINE_DIR%/config/database.yml
production:
adapter: mysql2
database: YOUR_DB_MS
host: YOUR_HOST_MS
username: YOUR_NAME_MS
password: YOUR_PASS_MS
encoding: utf8
変更後
%REDMINE_DIR%/config/database.yml
production:
adapter: postgresql
database: YOUR_DB_PG
host: YOUR_HOST_PG
username: YOUR_NAME_PG
password: YOUR_PASS_PG
encoding: utf8
2. postgresqlモジュールのgemを導入する
su - %REDMINE_USER% -s /bin/bash
cd %REDMINE_DIR%
bundle config build.pg --with-pg-config=/var/lib/postgresql/bin/pg_config
bundle install
Redmine起動
Wiki履歴等の文字化けもなく、問題なく動きました。
左:変更前、右:変更後