ラズパイ3へ Redmine の導入

ラズパイ3へ Redmine インストール

RaspberryPiにRedmineをインストールする方法

を参考にインストール

まずパッケージのアップデート

1
2
sudo apt-get -y update
sudo apt-get -y upgrade

次に redmine に必要なパッケージのインストール

1
sudo apt-get -y install apache2 libapache2-mod-passenger imagemagick libmagick++-dev ruby-dev bundler git subversion

DBにmysql を使うのでインストールする予定だったが
libmysqlclient-dev がないため、postgresql を使う
ように変更

まずロケール設定

1
sudo locale-gen ja_JP.UTF-8

次に開発ツールと ruby passenger 関連インストール

1
sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev

そして postgresql のインストール

1
sudo apt-get -y install postgresql postgresql-server-dev-9.5

次に apache 関連インストール

1
sudo apt-get -y install apache2 apache2-dev libapr1-dev libaprutil1-dev

次に imagemagic と日本語フォントのインストール

1
2
sudo apt-get install -y imagemagick libmagick++-dev
sudo apt-get -y install fonts-takao

しかしメモリ不足のためインストールエラー
このため一度再起動して再度挑戦

1
2
3
sudo apt-get -y install fonts-taksudo
apt-get -y install fonts-takao
fc-list | grep takao

として

1
2
3
4
/usr/share/fonts/truetype/takao-mincho/TakaoPMincho.ttf: Takao P明朝,TakaoPMincho:style=Regular
/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf: Takao Pゴシック,TakaoPGothic:style=Regular
/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf: Takaoゴシック,TakaoGothic:style=Regular
/usr/share/fonts/truetype/takao-mincho/TakaoMincho.ttf: Takao明朝,TakaoMincho:style=Regular

となればOK

[/shell]
sudo apt-get install git subversion
[/shell]
でバージョン管理ソフト git と subversion
のインストール

次に ruby のバージョンの確認

1
ruby -v

を実行したところ、現在のバージョンは
ruby 2.3.3p222
これはもともと入ってました

次に bundlerのインストール

1
sudo gem install bundler --no-document

–no-document
をつけるとドキュメントなしになります

次に PostgreSQL のバージョン確認

1
psql --version

今回は
psql (PostgreSQL) 9.6.6
でした

次に Redmine用ユーザ作成

1
sudo -u postgres createuser -P redmine

そして Redmine のためのDB作成

1
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine

次にDB設定値確認

1
sudo -u postgres psql -U postgres

で PostgreSQL のコンソールになるので

1
 

を実行するとDB設定をみることができます
なお、この画面を抜けるには q を押せばOK

1
2
3
4
5
6
7
8
9
10
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権      
-----------+----------+------------------+-------------+-------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 redmine   | redmine  | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres
(4 行)

今回はこんなかんじになりました

なお PostgreSQL コンソールを抜けるには

1
 

で抜けれます

次にRedmine のインストール

1
2
sudo mkdir /var/lib/redmine
sudo chown www-data /var/lib/redmine/

で mkdir でディレクトリを作成し
chown で www-data に所有者変更

1
sudo -u www-data svn co http://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine

で svn を使い
/var/lib/redmine/ 以下へダウンロード

なお svn コマンドについては
【svn】基本コマンド

を参考に

今回使った svn co はチェックアウト

次にDB接続設定

1
sudo vim /var/lib/redmine/config/database.yml

でファイルを作成し、中身は

1
2
3
4
5
6
7
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "redmineDBのパスワード"
  encoding: utf8

としておく

次にRedmine の設定ファイルの作成
これはサンプルを書き換えて作成するので

1
2
cd /var/lib/redmine/config/
sudo cp configuration.yml.example configuration.yml

でファイルをコピーして

1
sudo vim configuration.yml

でファイルを開き

1
2
3
4
5
6
7
8
9
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'example.com'
 
  rmagick_font_path: /usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf

として保存

次に redmineの gem のインストール

1
2
cd /var/lib/redmine/
sudo -u www-data bundle install --without development test --path vendor/bundle

次にセッション改ざん防止秘密鍵作成

1
sudo -u www-data bundle exec rake generate_secret_token

次にDBテーブル作成

1
sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate

次にデフォルトデータ登録

1
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

次に Passenger のインストール

1
sudo gem install passenger --no-rdoc --no-ri

Passenger Apacheモジュールインストール

1
sudo passenger-install-apache2-module --auto --languages ruby

次に apache用設定ファイルの確認

1
passenger-install-apache2-module --snippet

内容は

1
2
3
4
5
LoadModule passenger_module /var/lib/gems/2.3.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /var/lib/gems/2.3.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/bin/ruby2.3
</IfModule>

となりました

次に Apache の設定

1
sudo vim /etc/apache2/conf-available/redmine.conf

でファイルを作成し

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>
 
LoadModule passenger_module /var/lib/gems/2.3.0/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /var/lib/gems/2.3.0/gems/passenger-5.1.12
  PassengerDefaultRuby /usr/bin/ruby2.3
</IfModule>
 
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerStatThrottleRate 10

としてRedmine の画像ファイルやCSSファイルへ
アクセスを許可
これをしないと apache2.4 のデフォルト設定では
アクセス禁止になっている
そして Passenger の基本設定をコマンドの実行結果を元に記述し
Passenger のチューニング設定を追記

設定については
ttps://www.phusionpassenger.com/library/config/apache/reference/
のリファレンスを参考に

ここまでできたら apache の設定を反映

1
2
sudo a2enconf redmine
 apache2ctl configtest

を実行したときに

1
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

となるので

apache2再起動時にAH00558が発生する

を参考にServername を設定

1
hostname

でホスト名を確認
今回は
raspberrypi
だったので

1
2
3
cd /etc/apache2/conf-available/
sudo touch fqdn.conf
sudo vim fqdn.conf

でファイルを作成して編集

1
ServerName raspberrypi

として保存し

1
2
sudo a2enconf fqdn
sudo service apache2 restart

として設定を反映し
apache2 を再起動したところ

1
2
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

となるため

1
journalctl -xe

で確認すると

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- Unit apache2.service has begun starting up.
 1月 29 20:58:15 raspberrypi apachectl[24661]: [Mon Jan 29 20:58:15.640734 2018] [so:warn] [pid 24664:tid 1996165120] AH01574: module p
 1月 29 20:58:15 raspberrypi apachectl[24661]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
 1月 29 20:58:15 raspberrypi apachectl[24661]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
 1月 29 20:58:15 raspberrypi apachectl[24661]: no listening sockets available, shutting down
 1月 29 20:58:15 raspberrypi apachectl[24661]: AH00015: Unable to open logs
 1月 29 20:58:15 raspberrypi apachectl[24661]: Action 'start' failed.
 1月 29 20:58:15 raspberrypi apachectl[24661]: The Apache error log may have more information.
 1月 29 20:58:15 raspberrypi systemd[1]: apache2.service: Control process exited, code=exited status=1
 1月 29 20:58:15 raspberrypi systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit apache2.service has failed.
--
-- The result is failed.
 1月 29 20:58:15 raspberrypi systemd[1]: apache2.service: Unit entered failed state.
 1月 29 20:58:15 raspberrypi systemd[1]: apache2.service: Failed with result 'exit-code'.
 1月 29 20:58:15 raspberrypi sudo[24652]: pam_unix(sudo:session): session closed for user root
 1月 29 21:05:01 raspberrypi CRON[25108]: pam_unix(cron:session): session opened for user root by (uid=0)
 1月 29 21:05:01 raspberrypi CRON[25112]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
 1月 29 21:05:01 raspberrypi CRON[25108]: pam_unix(cron:session): session closed for user root

すでに Gitlab を設定しているため
サブディレクトリで Redmine を実行するように設定を変更

1
sudo vim /etc/apache2/conf-available/redmine.conf

でファイルを開き

1
2
3
4
5
Alias /redmine /var/lib/redmine/public
<Location /redmine>
  PassengerBaseURI /redmine
  PassengerAppRoot /var/lib/redmine
</Location>

を最終行に追記し保存

1
sudo service apache2 reload

としたけど

1
apache2.service is not active, cannot reload.

となってしまう

1
sudo ln -s /var/lib/redmine/public /var/www/html/redmine

でシンボリックリンクを作成し

1
RackBaseURI /redmine

1
/etc/apache2/conf-available/redmine.conf

の最終行へ追記してもエラー

再度

1
apachectl configtest

を実行すると

1
AH01574: module passenger_module is already loaded, skipping

とエラーが変化

1
systemctl status apache2.service

でエラーをみたところ

1
(98)Address already in use: AH00072: make_sock

とあり
検索すると
エラーメッセージとその対処あれこれ

によればポートの競合が原因

おそらく GitLab で使っているポートと重複するのが
原因

このため Gitlab の ポートを変更することに

1
sudo vim /etc/gitlab/gitlab.rb

で設定ファイルを開き

13行目あたりの

1
external_url 'http://raspberrypi'

の部分を

1

として
7000版ポートを使うように変更
変更の方法については
GitLab 8.2 + HTTPS 設定メモ(CentOS7)


を参考にしました

しかし、これでもダメなため
Gitlab Redmine 共存環境で検索し

1
sudo vim /etc/gitlab/gitlab.rb

で設定ファイルを開き

444行目の

1
#gitlab_workhorse['auth_backend'] = "http://localhost:8080"

506行目の

1
#unicorn['port'] = 8080

のコメントアウトを削除し

744行目の

1
#nginx['listen_port'] = nil

1
nginx['listen_port'] = 8080

へ変更

設定反映のため

1
sudo gitlab-ctl reconfigure
1
sudo gitlab-ctl restart

としたけどダメ

このため、一度これらの設定を元に戻す

ラズパイにRedmine3をインスールする。そして地獄を見る。また。。。

を参考に設定ファイルを変更

1
sudo apt-get install -y libapache2-mod-passenger imagemagick libmagick++-dev libmagickcore-dev libmagickwand-dev apache2-dev libcurl4-openssl-dev libapr1-dev libaprutil1-dev

でパッケージを追加し

1
sudo swapon -s

でswap容量を確認

これで100Mしかないため

1
sudo service dphys-swapfile stop

で一度とめて

1
sudo vim /etc/dphys-swapfile

でファイルを開き
16行目あたりの

1
CONF_SWAPSIZE=100

1
CONF_SWAPSIZE=2048

へ変更し

1
sudo service dphys-swapfile start

で再起動

次に

1
sudo vim /etc/apache2/conf-available/redmine.conf

で内容が

1
2
3
4
5
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>
 
RackBaseURI /redmine

であることを確認し

1
sudo cp /etc/apache2/conf-enabled/redmine.conf redmine.conf_bak

ですでに存在するファイルをバックアップしてから

1
sudo rm /etc/apache2/conf-enabled/redmine.conf

で削除し

1
sudo ln -s /etc/apache2/conf-available/redmine.conf /etc/apache2/conf-enabled/redmine.conf

でシンボリックリンク作成して

1
sudo vim /etc/apache2/mods-available/passenger.conf

を実行すると

1
2
3
4
<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
</IfModule>

となっているので
この下へ

1
2
PassengerResolveSymlinksInDocumentRoot on
PassengerInstanceRegistryDir /var/run/passenger-instreg


追記し保存

1
sudo vim /etc/apache2/mods-available/passenger.load

でファイルを開くと

1
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so

となっていた

1
2
3
sudo a2enconf redmine
apache2ctl configtest
sudo service apache2 restart

でエラーはないけど
redmine へアクセスしようとしてもディレクトリ構造だけ

1
passenger-status

を実行すると

1
2
3
4
ERROR: Phusion Passenger doesn't seem to be running. If you are sure that it is running, then the causes of this problem could be:
 
1. You customized the instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument. If so, please set the environment variable PASSENGER_INSTANCE_REGISTRY_DIR to that directory and run passenger-status again.
2. The instance directory has been removed by an operating system background service. Please set a different instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument.

となるため、
これで検索

[CentOS] Redmineのインストールメモ

によれば

1
sudo mkdir /var/run/passenger-instreg


httpd.conf」に以下を追加
とあったけど

1
sudo vim /etc/apache2/apache2.conf

で開いても項目が見当たらないため

再度コマンド履歴をみたところ

1
/etc/apache2/mods-enabled/passenger.load

がシンボリックリンクになっていないため

1
sudo cp /etc/apache2/mods-enabled/passenger.load .

でバックアップし

1
sudo rm /etc/apache2/mods-enabled/passenger.load


ファイルを削除して

1
sudo ln -s /etc/apache2/mods-available/passenger.load /etc/apache2/mods-enabled/passenger.load

でシンボリックリンクを作成し

1
sudo service apache2 restart

とすると
ようやく redmine が起動しました