Redmine内蔵のWikiが個人的に一番馴染むという理由で、低コストでWikiを使いたい時にRedmineを使っているのですが、これまで使ってきたRedmineのバージョンが古くて新しくしたいという理由で、Raspbian(Respberry Pi)にRedmineをインストールした時の作業記録です。
だいぶ前にインストールした時は、真面目にインストール手順を調べず、勢いだけでインストールして動かしてしまったので、今回は色々と確認してそれなりに手間はかかるけど色々応用が効きそうな手順を調べてみました。
0.前提&準備
- 『Respberry Pi に Raspbian をインストール』の手順でRaspberry PiにRaspbianをインストールしたものを用意
- Rubyより上のレイヤーは利用するバージョンを選択したいので、aptを使わずにインストール、今回初代のRaspberry Pi Model Bにインストールしたんですが、バイナリパッケージのインストール以外にもソースのコンパイルとか入るので初代Model Bだと時間がかかるかかる。さらにビルド途中で512MBのメモリを使い切ってしまってほぼフリーズ状態になり、Swapを増強する事に。
- 因みにRaspberry Pi4で作業した時はある程度の時間はかかるけれど、Swap追加することもなく、想定よりはあっさり。
- データベースはMySQLを使おうかと思いましたが、インストールする初代Raspberry Piはメモリが512MBしかないのでSQLiteを選択。個人的かつ限定的な用途でしか使わないし。
- 参考URL
1.Ruby以外の必要ソフトウェアをインストール
- aptでRuby関連(Ruby,Rails,Redmie)以外の必要なソフトウェアをインストール
- postfixはとりあえずローカル配送を選択して、
後で必要に応じてちゃんと設定してください
# apt install build-essential git subversion postfix \
libsqlite3-dev apache2 apache2-dev libssl-dev \
libreadline-dev libcurl4-openssl-dev libapr1-dev \
libaprutil1-dev fonts-ipafont-gothic imagemagick \
libmagickwand-dev
2.グループの作成
# groupadd ruby
# usermod -a -G ruby your-account
3.rbenvのインストール
- 任意のバージョンのrubyを楽してインストールするべくrbenvをインストール
- 深く考えずにコマンドを叩く、あまり悩む必要のある分岐はない、と思う
# cd /usr/local/
# git clone git://github.com/sstephenson/rbenv.git rbenv
# mkdir rbenv/shims rbenv/versions rbenv/plugins
# cd rbenv/plugins/
# git clone git://github.com/sstephenson/ruby-build.git ruby-build
# cd ruby-build/
# ./install.sh
4.rbenvの設定
- rbenvが宜しく動作してくれるように設定
- 最後のechoでPATHに/usr/local/rbenv/binが入っていればここまでは大成功
# cd /usr/local/
# chgrp -R ruby rbenv
# chmod -R g+rwxX rbenv
# echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh
# echo 'export PATH="/usr/local/rbenv/bin:$PATH"' >> /etc/profile.d/rbenv.sh
# echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
# source /etc/profile.d/rbenv.sh
# echo $PATH
4.rubyをインストール
- rbenvを使って任意のバージョンのRubyをインストール
- インストールできるRubyを確認
# rbenv install --list
- リストからVer.2.6.4を選択してインストール
- コンパイルがあるし、メモリ512MBだし、だいぶ時間かかります
# rbenv install -v 2.6.4
- インストール出来たか確認して、それを(rbenv管理下のユーザが)全体で使えるように選択
# rbenv versions
# rbenv global 2.6.4
- rehashして、選択が有効になっていることを確認
# rbenv rehash
# rbenv versions
# ruby -v
5.Rails(Ruby on Rails)のインストール
- まずはbundlerをインストール
- 続いてインストールできるRailsのバージョンを確認
# gem install bundler
# gem query -ra -n "^rails$"
# mkdir /usr/local/rails_v5.2.3
# cd /usr/local/rails_v5.2.3
# bundle init
# echo 'gem "rails", "5.2.3"' >> Gemfile
# gem install sqlite3 -v '1.3.11'
# bundle install --without development test --path vendor/bundle
6.スワップを増強
- ここで思い出したかのようにスワップを増強します
- Raspbianをインストールしてそのままだと多分スワップは100MBしか確保されておらず、そのまま次のPassengerのインストールに進むとメモリ512MBのRaspberry Piだと途中でメモリ不足で止まります
- ので、重くなっても処理が完了するようにスワップを1GB程度確保
- /etc/dphys-swapfileを下の内容に修正して、おもむろにRaspberry Piをリブート!
- 100MBしか確保していない CONF_SWAPSIZE の設定行をコメント
- CONF_SWAPFACTORを3に設定(有効メモリの3倍のスワップを確保するという設定)
- CONF_SWAPSIZEを1024(MB)に設定でも良いかもしれない
- Passengerのビルド中、最高でもスワップの消費量はtopコマンドによる確認800MB程度だった
#CONF_SWAPFILE=/var/swap
#CONF_SWAPSIZE=100
CONF_SWAPFACTOR=3
#CONF_MAXSWAP=2048
7.Passengerのインストール
- Passengerのインストールです
- 今回の手順の中で最も時間がかかる処理だと思う、先ほどスワップを追加したとは言え、メモリは512MBだし、シングルコアの初代Raspberry Pi Model Bには過酷な処理です。
- gem install passengerの処理時間は大したことないです、passenger-install-apache2-moduleが果てしなく時間がかかります。果てしなくと言っても半日あれば終わります、多分。
# cd /usr/local/
# gem install passenger
# passenger-install-apache2-module --auto
8.Redmineのインストール
- インストールはSubversionのリポジトリをチェックアウトすれば良いので楽。あとは設定ファイルを二つほど用意して後、順にコマンド実行
# svn co http://svn.redmine.org/redmine/branches/4.0-stable /var/lib/redmine
# vi /var/lib/redmine/config/database.yml
# vi /var/lib/redmine/config/configuration.yml
# bundle update
# 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
# chown -R www-data:www-data /var/lib/redmine
- /var/lib/redmine/config/database.yml
production:
adapter: sqlite3
database: /var/lib/redmine/db/redmine_default
encoding: utf8
- /var/lib/redmine/config/configuration.yml
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: 127.0.0.1
port: 25
domain: your.domain
rmagick_font_path: /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
9.Apacheの設定
- 設定ファイルを新規作成or修正
- 変更後Apacheをリスタート
- リスタート前にapachectl configtestで設定のチェックするのもアリ
# vi /etc/apache2/mods-available/passenger.load
# vi /etc/apache2/conf-enabled/passenger.conf
# vi /etc/apache2/sites-available/000-default.conf
# a2enmod passenger
# a2enconf passenger
# systemctl restart apache2
- /etc/apache2/mods-available/passenger.load
- passenger-install-apache2-module –snippet を実行した時のLoadModule部
LoadModule passenger_module /usr/local/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/passenger-6.0.4/buildout/apache2/mod_passenger.so
- /etc/apache2/conf-enabled/passenger.conf
- passenger-install-apache2-module –snippet を実行した時のIfModuleブロック
- 通常のサーバでは PassengerStartTimeout 設定は不要だけど(無くても基本的に問題ない)、Raspberry PiはPassengerの起動に時間がかかりすぎるのでTimeoutをかなり長くする為に追加設定
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/passenger-6.0.4
PassengerDefaultRuby /usr/local/rbenv/versions/2.6.4/bin/ruby
PassengerStartTimeout 600
</IfModule>
- /etc/apache2/sites-available/000-default.conf
- ServerNameが無いって怒られたら適当に設定してください
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/lib/redmine/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/lib/redmine/public/">
Options FollowSymlinks Includes
AllowOverride All
AddType text/html .html
Require all granted
</Directory>
</VirtualHost>
10.テストアクセス
- http://[インストールしたRaspberry PiのIPアドレス or FQDN]/
- 上のURLでアクセスしてRedmineへの動作&接続を確認
- 遅いモデルだったりメモリ搭載量が少ないRaspberry PiだとApache起動直後はPassengerの反応が返ってくるまで落ちているんじゃないか?と思うほど時間かかる
- インストール直後の管理ユーザ&パスワードはadmin/adminです