業務ではよく Redmine(レッドマイン)を使います。
Redmine は、主にプロジェクト管理に利用するソフトウェアですが、BTS(バグトラッキングシステム)として使われることもあります。
(BTSはその名の通りバグなどの不具合を一括管理する仕組みです)。
その Redmine を自分管理の一環として自宅環境用に導入することにしました。
base on Redmineとは — Redmine.JP
Redmineはプロジェクト管理ができるオープンソースソフトウェアです。
例えば、チームでシステム開発を進める場合に誰がいつまでに何をやるのか、現在どのくらい進んでいるのかをRedmineに記録することで進捗状況を明らかにし計画通りに進むよう支援します。
目次
テーマ
自宅での運用前提なので簡単導入がテーマです。
導入工数削減のため、DBは SQLite を使うことにしました。
SQLite は非常にシンプルな RDBMS で、SQLite は複数同時の書込パフォーマンスがあまり良くありません。
そのため一人、あるいは複数人で使うけれども書込む人が少ない場合に限られるでしょう。
※同時書込人数が少なければ問題ありません。
環境
単独運用前提で Raspberry Pi を使うことにしました。
NanoPi NEO でも良かったのですが、RAM が 512MBと少なかったので Raspberry Pi にしました。
(Raspberry Pi 3 Model B は 1GB)。
プラットフォーム | 概要 |
---|---|
ハードウェア | Raspberry Pi 3 Model B |
OS | Raspbian Stretch Lite |
Webサーバ | Apache 2 |
DB | SQLite 3 |
また、Redmine の運用前提なので OS には GUI なしの Raspbian Stretch Lite を導入します。
base on Download Raspbian for Raspberry Pi
Raspbian Stretch Lite
Minimal image based on Debian Stretch
導入
必要パッケージ
主な導入パッケージは4種類です。
(後は依存関係で引っ張ってもらいます)。
- Bundler
- ImageMagick
- Passenger
- Redmine
base on Redmineのインストール - Redmineガイド
- Passenger(mod_rails)
- RedmineはRubyGemの依存関係を管理するために Bundler を使用します。
- ImageMagick(ガントチャートのPNG形式でのエクスポートとサムネイル生成に使用)
導入手順
OS インストール
ダウンロードしたイメージを Etcher などを使って microSDカードに書き込みます。
書き込んだカードを Raspberry Pi に挿入後、電源投入すると DHCP から IP を取得して起動します。
設定
OS(Raspbian)導入してから、必要に応じて SSH を有効にします。
その後、OS を最新の状態にアップデートします。
$ sudo systemctl start ssh
$ sudo systemctl enable ssh
$ sudo rpi-update
$ sudo apt update
$ sudo apt upgrade
$ reboot
Redmine 導入
今回はバックエンドに SQLite を利用するので redmine-sqlite を導入します。
$ sudo apt install redmine-sqlite
The following NEW packages will be installed:
dbconfig-common dbconfig-sqlite3 fontconfig-config fonts-dejavu-core fonts-droid-fallback
fonts-lato fonts-noto-mono ghostscript gsfonts imagemagick-6-common javascript-common
libavahi-client3 libc-ares2 libcups2 libcupsfilters1 libcupsimage2 libfftw3-double3 libfontconfig1
libgs9 libgs9-common libhttp-parser2.8 libijs-0.35 libjbig0 libjbig2dec0 libjs-coffeescript
libjs-jquery libjs-source-map libjs-uglify liblcms2-2 liblqr-1-0 libltdl7 libmagickcore-6.q16-3
libmagickwand-6.q16-3 libopenjp2-7 libpaper-utils libpaper1 libruby2.3 libtiff5 libuv1 libxslt1.1
libyaml-0-2 nodejs nodejs-doc passenger poppler-data rake redmine redmine-sqlite ruby
ruby-actionmailer ruby-actionpack ruby-actionpack-action-caching ruby-actionpack-xml-parser
ruby-actionview ruby-activejob ruby-activemodel ruby-activerecord ruby-activesupport
ruby-addressable ruby-arel ruby-atomic ruby-binding-of-caller ruby-blankslate ruby-builder
ruby-bundler ruby-byebug ruby-coderay ruby-coffee-rails ruby-coffee-script
ruby-coffee-script-source ruby-columnize ruby-concurrent ruby-css-parser ruby-debug-inspector
ruby-did-you-mean ruby-erubis ruby-execjs ruby-ffi ruby-globalid ruby-hike ruby-hmac
ruby-htmlentities ruby-i18n ruby-jbuilder ruby-jquery-rails ruby-json ruby-listen ruby-loofah
ruby-mail ruby-mime-types ruby-mimemagic ruby-minitest ruby-molinillo ruby-multi-json
ruby-net-http-persistent ruby-net-ldap ruby-net-telnet ruby-nokogiri ruby-oj ruby-openid
ruby-pkg-config ruby-polyglot ruby-power-assert ruby-protected-attributes ruby-rack
ruby-rack-openid ruby-rack-test ruby-rails ruby-rails-deprecated-sanitizer ruby-rails-dom-testing
ruby-rails-html-sanitizer ruby-rails-observers ruby-railties ruby-rb-inotify ruby-rbpdf
ruby-rbpdf-font ruby-redcarpet ruby-request-store ruby-rmagick ruby-roadie ruby-roadie-rails
ruby-sass ruby-sass-rails ruby-sdoc ruby-spring ruby-sprockets ruby-sprockets-rails ruby-sqlite3
ruby-test-unit ruby-thor ruby-thread-safe ruby-tilt ruby-treetop ruby-turbolinks ruby-tzinfo
ruby-uglifier ruby-web-console ruby2.3 rubygems-integration sqlite3 zip
0 upgraded, 141 newly installed, 0 to remove and 0 not upgraded.
途中、DB 設定を促されるので Yes(はい)を選択します。
┌─────────────────────────────────────┤ Configuring redmine ├
│ The redmine/instances/default package must have a database installed and configured before it │
│ can be used. This can be optionally handled with dbconfig-common. │
│ │
│ If you are an advanced database administrator and know that you want to perform this │
│ configuration manually, or if your database has already been installed and configured, you │
│ should refuse this option. Details on what needs to be done should most likely be provided in │
│ /usr/share/doc/redmine/instances/default. │
│ │
│ Otherwise, you should probably choose this option. │
│ │
│ Configure database for redmine/instances/default with dbconfig-common? │
│ │
│ <Yes> <No> │
│ │
└───────────────────────────────────────────────── ─
その他のパッケージをまとめて導入します。
$ sudo apt install apache2 libapache2-mod-passenger bundler libmagick++-dev
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils autotools-dev bundler bzip2-doc fontconfig
gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-rsvg-2.0 gnome-icon-theme
gtk-update-icon-cache hicolor-icon-theme icu-devtools libapache2-mod-passenger libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap libatk1.0-0 libatk1.0-data libbz2-dev libcairo-gobject2
libcairo-script-interpreter2 libcairo2 libcairo2-dev libcdt5 libcgraph6 libcroco3 libdatrie1
libdjvulibre-dev libdjvulibre-text libdjvulibre21 libexif-dev libexif12 libexpat1-dev
libfontconfig1-dev libgail-common libgail18 libgd3 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common
libgdk-pixbuf2.0-dev libgirepository-1.0-1 libglib2.0-bin libglib2.0-dev libgmp-dev libgmpxx4ldbl
libgraphite2-3 libgraphviz-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgts-0.7-5 libgts-bin
libgvc6 libgvc6-plugins-gtk libgvpr2 libharfbuzz0b libice-dev libice6 libicu-dev libilmbase-dev
libilmbase12 libjbig-dev libjpeg-dev libjpeg62-turbo-dev libjxr-tools libjxr0 liblcms2-dev
liblqr-1-0-dev libltdl-dev liblua5.2-0 liblzma-dev liblzo2-2 libmagick++-6-headers
libmagick++-6.q16-7 libmagick++-6.q16-dev libmagick++-dev libmagickcore-6-arch-config
libmagickcore-6-headers libmagickcore-6.q16-3-extra libmagickcore-6.q16-dev
libmagickwand-6-headers libmagickwand-6.q16-dev libopenexr-dev libopenexr22 libopenjp2-7-dev
libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpathplan4 libpcre16-3 libpcre3-dev
libpcre32-3 libpcrecpp0v5 libpixman-1-0 libpixman-1-dev libpthread-stubs0-dev librsvg2-2
librsvg2-common librsvg2-dev libsm-dev libsm6 libthai-data libthai0 libtiff5-dev libtiffxx5
libtool libwebp6 libwmf-dev libwmf0.2-7 libx11-dev libx11-doc libxau-dev libxcb-render0
libxcb-render0-dev libxcb-shm0 libxcb-shm0-dev libxcb1-dev libxcomposite1 libxcursor1 libxdamage1
libxdmcp-dev libxdot4 libxext-dev libxfixes3 libxi6 libxinerama1 libxml2-dev libxpm4 libxrandr2
libxrender-dev libxrender1 libxt-dev libxt6 ruby-dev ruby2.3-dev ssl-cert x11-common
x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-render-dev x11proto-xext-dev
xorg-sgml-doctools xtrans-dev
0 upgraded, 149 newly installed, 0 to remove and 0 not upgraded.
設定
パッケージ導入後に設定を追記します。
以下、追記例です。
Apache
$ diff -u /etc/apache2/sites-available/000-default.conf_org /etc/apache2/sites-available/000-default.conf
--- /etc/apache2/sites-available/000-default.conf_org 2019-02-22 13:47:48.215741367 +0000
+++ /etc/apache2/sites-available/000-default.conf 2019-02-22 13:54:54.814818079 +0000
@@ -9,7 +9,12 @@
#ServerName www.example.com
ServerAdmin webmaster@localhost
- DocumentRoot /var/www/html
+ DocumentRoot /usr/share/redmine/public
+ PassengerHighPerformance on
+ <Directory /usr/share/redmine/public>
+ AllowOverride None
+ Options None
+ </Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
Passenger
$ diff -u /etc/apache2/mods-available/passenger.conf_org /etc/apache2/mods-available/passenger.conf
--- /etc/apache2/mods-available/passenger.conf_org 2019-02-22 13:51:12.685800822 +0000
+++ /etc/apache2/mods-available/passenger.conf 2019-02-22 13:51:35.655772114 +0000
@@ -1,4 +1,6 @@
<IfModule mod_passenger.c>
PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
PassengerDefaultRuby /usr/bin/ruby
+ PassengerDefaultUser www-data
+ RailsBaseURI /redmine
</IfModule>
アクセス
今回、ポート番号を変更していない(80番)なので、サーバIPをブラウザに入力すれば Redmine へ接続できます。
id・パスワードは以下参照。
base on ログイン — Redmine.JP
Redmineをインストールした直後であればユーザー名、パスワードともに"admin"でログインできます。