0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なるべくお手軽な、おうちRedmine環境構築

Posted at

概要

自分のメインPC内にRedmineを構築し、個人開発のチケット管理に利用します。

他のチケット管理ステムも利用しましたが、やはり無料アカウントでは限界があるのと、メインPCのリソース有効活用(特にストレージ容量は余る傾向にあります)のため、これを利用することにしました。

自分のPC内でグローバルからのアクセスも考慮していないため、なるべくお手軽設計となっています。

ローカルのGitの内容も見ることができますが、より詳細にGitを管理するならGitLabを入れるなど、追加の対応が必要になると思います。

動作環境

  • Ubuntu: 22.04 LIS
  • CPU: AMD Ryzen 5600G
  • メモリ: 32GB

上記の環境内に構築した 24.04 LIS LXDコンテナに構築します。

事前準備

Rubyのインストール

以前書いたこちらの記事を参考にインストールします。

PostgreSQL のインストールをあらかじめ実施

apacheは使用せずに構築します。

SQLiteを使用すれば更に手間を削減できますが、別用途にも使用するので今回はPostgreSQLを使用します。

  • 公式リポジトリの設定
apt install -y postgresql-common
/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
  • インストール(16)
apt update
apt install postgresql-16
  • 設定の調整

必要最低限の設定を行います。

/etc/postgresql/16/main/postgresql.conf
listen_addresses = '0.0.0.0'
max_connections = 1000
shared_buffers = 512MB
maintenance_work_mem = 128MB
work_mem = 16MB

log_destination = 'stderr' 
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
log_file_mode = 0600
log_rotation_age = 1d

autovacuum = on
autovacuum_naptime = 1min

設定を反映させ、自動起動するようにします。

systemctl daemon-reload
systemctl enable postgresql
systemctl restart postgresql
systemctl status postgresql

関連パッケージのインストール

apt install unzip

専用ユーザーを作成( redmiusr )

Redmine用のデータベースを作成

su - postgres
createuser -P redmiusr
  pass: <パスワード>
createdb -E UTF-8 -l ja_JP.UTF-8 -O redmiusr -T template0 RedmineDB

Redmineのダウンロードと配置

ダウンロード

wget https://www.redmine.org/releases/redmine-5.1.3.zip

解凍して配置します。

mkdir redmine
cd redmine/
unzip ../redmine-5.1.3.zip -d ./
mv redmine-5.1.3 bin
cd bin

各設定ファイルを編集

configの設定ファイルを編集します。

DB情報

設定ファイルをコピー

cp config/database.yml.example config/database.yml

設定を編集しPostgreSQLの設定を行います。

config/database.yml
# PostgreSQL configuration example
production:
  adapter: postgresql
  database: RedmineDB
  host: localhost
  username: redmiusr
  password: "<パスワード>"
  encoding: utf8

Railsの設定

config/application.rb
# メールを使わない
config.action_mailer.perform_deliveries = false
config/configuration.yml
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: “localhost”
port: 25
domain: “sample.com”  ※redmineを実行するサーバーのFQDN

rmagick_font_path: /usr/share/fonts/truetype/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf

ログローテション

ローカル配置でも、不具合があった際に原因を探れるようにログは出力したほうがいいです。

日付でローテーションもできますが、古いログの削除を別で実装する必要があって面倒なので、ファイルサイズでローテーションを行います。

config/environments/production.rb
# 5Mになったらローテションして10個前は削除
config.logger = Logger.new('log/production.log', 10, 5 * 1024 * 1024)

# 日付でローテションする方法もあるが、削除をしてくれない
#config.logger = Logger.new('log/sample.log', 'daily')

インストール

スクリプトを実行

bundle config set --local path 'vendor/bundle' --without production
bundle install --path vendor/bundle
bundle exec rake generate_secret_token

データベースのテーブル作成

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

テストでサーバーを起動

bundle exec rails server -e production

ポート番号やLISTENするIPを変更するには以下のようにしたほうが

bundle exec rails server -e production -b 0.0.0.0 -p 3000

初期ログイン

初期管理者IDは以下となります。

login: admin
password: admin

初期パスワードは変更してください。

また、実際にチケットの管理を行う別ユーザーを作成しておきます。

Redmineのデーモン化

デーモン化し、コンテナ起動時に自動で起動するようにします。

スクリプトを作成

~/redmine/redmine.sh
#!/usr/bin/bash

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

cd ~/redmine/bin
bundle exec rails server -e production -b 0.0.0.0 -p 3000

実行権限を付けておきます。

chmod 700 ~/redmine/redmine.sh

systemdの設定ファイルを作成します。

/etc/systemd/system/redmine.service
[Unit]
Description=Redmine
After=network.target

[Service]
#WatchdogSec=10
User=redmine
Type=simple
WorkingDirectory=/home/redmine/redmine/bin/
ExecStart=/home/redmine/redmine/redmine.sh

[Install]
WantedBy=multi-user.target

アクセス権を修正し書式の確認します。

chmod 644 /etc/systemd/system/redmine.service
systemd-analyze verify /etc/systemd/system/redmine.service

起動設定を行います。

systemctl daemon-reload
systemctl enable redmine
systemctl start redmine
systemctl status redmine

バックアップ

バックアップ用のスクリプトを作成します。

ディレクトリを作成

mkdir /root/bkscript

バックアップスクリプトを配置します。

/root/bkscript/redmine-bk-pg.sh
#!/usr/bin/bash

mkdir /root/bkscript/redmine-bk

# postgreSQL
pg_dump -U redmiusr -h localhost -Fc --file=/root/bkscript/redmine-bk/pg-RedmineDB`date +%Y%m%d`.sql RedmineDB

# Redmine file
cp -pr /home/redmine/redmine/bin/files /root/bkscript/redmine-bk/
rsync -ahv /home/redmine/redmine/bin/config/ /root/bkscript/redmine-bk/config --exclude "locales"

# system file copy
cp -p /home/redmine/redmine/redmine.sh /root/bkscript/redmine-bk/
cp -p /etc/systemd/system/redmine.service /root/bkscript/redmine-bk/
cp -p /root/script/redmine-bk-pg.sh /root/bkscript/redmine-bk/
cp -p /root/.pgpass /root/bkscript/redmine-bk/dot_pgpass

# tar and move
tar -pzcf /root/script/redminebk-1.tar.gz /root/bkscript/redmine-bk
rm -rf /root/bkscript/redmine-bk

mv /home/bk-redmine/redminebk-6.tar.gz /home/bk-redmine/redminebk-7.tar.gz
mv /home/bk-redmine/redminebk-5.tar.gz /home/bk-redmine/redminebk-6.tar.gz
mv /home/bk-redmine/redminebk-4.tar.gz /home/bk-redmine/redminebk-5.tar.gz
mv /home/bk-redmine/redminebk-3.tar.gz /home/bk-redmine/redminebk-4.tar.gz
mv /home/bk-redmine/redminebk-2.tar.gz /home/bk-redmine/redminebk-3.tar.gz
mv /home/bk-redmine/redminebk-1.tar.gz /home/bk-redmine/redminebk-2.tar.gz
mv /root/script/redminebk-1.tar.gz /home/bk-redmine/

実行権限を付けておきます。

chmod 700 /root/bkscript/redmine-bk-pg.sh

DBアカウントの設定を行います。

~/.pgpass
localhost:5432:RedmineDB:redmiusr:<<パスワード>>

アクセス権を修正します。

chmod 0600 ~/.pgpass

最後にcronの設定を行います。

crontab -e
10 13 * * * /root/bkscript/redmine-bk-pg.sh

確認

crontab -l

バックアップからのリストア

PostgreSQLのインストールとDBの作成
RubyのインストールとRedmineのダウンロードと展開まで実施

バックアップを解凍します。

tar -pzxvf /home/bk-redmine/redminebk-1.tar.gz

confをコピーします。

また、filesを移動します。

mv ../../work/root/bkscript/redmine/files/* files/

ビルド・インストールして空のものを新規作成します。

systemctl用やバックアップ用のスクリプトを設置します・

DBをいったん空にします。

su - postgres
dropdb RedmineDB
createdb -E UTF-8 -l ja_JP.UTF-8 -O redmiusr -T template0 RedmineDB
exit

pg_dumpからリストアします。

pg_restore -U redmiusr -h localhost -d RedmineDB <バックアップファイル>

起動して動作確認を行い、バックアップcronの設定をおこないます。

参考URL

公式サイト

参考資料

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?