社内で情報を共有するのにExcelを使ってきたのだが、見たい情報をPULL型で見に行く習慣が付けられない。状況が変わったり、忘れてたらメールで教えてくれる、とか、今注意しなきゃならないものを最初に表示してくれる、といった秘書的な機能を持った情報共有方法があったら素晴らしい。
そんな風に使うものなのか?というのを理解しきっているわけじゃないんだけれど、Redmineというのが良さそうという話を聞いたので、使ってみようと考えた。
実際には、環境をセットアップして使い手に渡すだけなんだけれども…
今回はテスト環境にRedmineをセットアップして、上手く動作するところまで確認できたら本番環境に組み込むことにする。本番環境は
- Ubuntu 16.04
- MySQL 5.7.18, 各種デフォルトキャラクターセットはutf8
- WordPress, tomcat(proxy_ajp使用)の上でグループウェア等が同居。
という具合。
Ubuntu 16.04(またはRaspbian)にRedmineをインストールする と Redmineのインストール を参考に作業実施。
テスト環境なので、いろいろとまっさら。
- Redmineをダウンロード。
- MYSQLのインストール(本番環境では実施しない)
- データベースとユーザーの作成
- Rubyのインストール
- Redmineの環境設定 その1
- Mysqlの設定
- Redmineの環境設定 その2
- Redmineの環境設定 その3
- Apacheの設定
- 動かしてみる→メール送信設定
といった作業を行う予感
■Redmineをダウンロード
/usr/share/redmine にファイルを配置することにした。インストール先はいつも迷うけれど、Ubuntuで色々なものをセットアップしていくとだいたいここに入っている感じがするのと、先日Wordpressをここに永住させたりしたのと、kopanoもここに色々インストールしたみたいなのを考慮して。
各ディレクトリの役割を知ろう(サブディレクトリ編) (2/2) にアーキテクチャに依存しないデータを収めるとあるが、これにも外れてないかなーと。
$ sudo apt install subversion $ sudo mkdir /usr/share/redmine $ sudo chown www-data:www-data /usr/share/redmine/ $ sudo -u www-data svn checkout http://svn.redmine.org/redmine/branches/3.3-stable /usr/share/redmine
※本番環境はProxy配下に配置されており、Subversionが使用するポートが塞がれていたため、ファイルをチェックアウトできなかった。仕方がないので tar.gz 形式のファイルをダウンロードしてきて展開することで対応した。
■Mysqlのインストール(本番環境では実施しない)
テスト用の環境にはデーターベースが入っていないので、インストールから。
$ sudo apt install mysql-server
インストール中にパスワードを聞かれるので入力し、忘れないようにする。
そして、キャラクターセットを本番環境に合わせる。
$ mysql -u root -p Enter password:[パスワードを入力][Enter] mysql> SHOW VARIABLES LIKE "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql>
となったので、以下のファイルを作ることにした。
/etc/mysql/conf.d/charcter-set.cnf
[mysqld] character-set-server = utf8 [mysql] default-character-set = utf8
ファイルができたら、再起動。
$ sudo service mysql restart
Enter password:[パスワードを入力][Enter]
mysql>
■データベースとユーザーの作成
以下の通りデータベースを作成し、ユーザーを作り、権限を与える。
データベースのdefault character setは utf8mb4 にしてみる。これで、Redmine側の設定を utf8mb4 にすりゃ絵文字も使えるんじゃないかと。
$ mysql -u root -p Enter password:[パスワードを入力][Enter] mysql>create database redmine character set utf8mb4; Query OK, 1 row affected (0.00 sec) mysql>create user redmine@localhost identified by 'パスワードを入れる'; Query OK, 1 row affected (0.00 sec) mysql>grant all privileges on redmine.* to redmine@localhost; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye
■Rubyのインストール
RedmineはRubyを使うということなので、インストールする。ついでにバージョンも調べておこう。
$ sudo apt install ruby $ ruby --version ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
このタイミングでは、Rubyは2.3がインストールされた。
■Redmineの環境設定 その1
設定ファイルのサンプルをコピーして、設定を埋めていく。
$ sudo cp -a /usr/share/redmine/config/database.yml.example /usr/share/redmine/config/database.yml $ sudo vi /usr/share/redmine/config/database.yml
中身はこんな感じ。
# Default setup is given for MySQL with ruby1.9. # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end. # Line indentation must be 2 spaces (no tabs). production: adapter: mysql2 database: redmine host: localhost username: redmine password: [Mysql redmineユーザーのパスワード] encoding: utf8mb4 development: adapter: mysql2 database: redmine_development host: localhost username: redmine password: [Mysql redmineユーザーのパスワード] encoding: utf8mb4 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: mysql2 database: redmine_test host: localhost username: redmine password: [Mysql redmineユーザーのパスワード] encoding: utf8mb4 # PostgreSQL configuration example #production: # adapter: postgresql # database: redmine # host: localhost # username: postgres # password: "postgres" # SQLite3 configuration example #production: # adapter: sqlite3 # database: db/redmine.sqlite3 # SQL Server configuration example #production: # adapter: sqlserver # database: redmine # host: localhost # username: jenkins # password: jenkins
どこかで「RedmineはRuby+ActiveRecordなシステム」って文言を見た気がするが、どこだったっけ…?それはともかく、
厳密には設定では無いのですが、MySQLをutf8mb4で利用するにあたって1つ、ファイルを追加する必要があります。
とエスコートしてくれているので、以下のファイルを作成。
/usr/share/redmine/config/initializers/ar_innodb_row_format.rb
ActiveSupport.on_load :active_record do module ActiveRecord::ConnectionAdapters class AbstractMysqlAdapter def create_table_with_innodb_row_format(table_name, options = {}) table_options = options.merge(:options => 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC') create_table_without_innodb_row_format(table_name, table_options) do |td| yield td if block_given? end end alias_method_chain :create_table, :innodb_row_format end end end
これも持ち主を変えておく。
$ sudo chown www-data:www-data /usr/share/redmine/config/initializers/ar_innodb_row_format.rb
■Mysqlの設定
ここまでの設定をしながら調べてみると、
schema_migrationsがインデックス張れないエラーでこけます。
となるため対策が必要っぽいことが分かる。以下のファイルを作って入れておく。
/etc/mysql/conf.d/mysqld.cnf
[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix
どこかに、[mysqld]セクションがあるならそこに追記しておけば良さそう。
ファイルができたら、mysqlを再起動。
$ sudo service mysql restart
■Redmineの環境設定 その2
さらに必要なパッケージをインストール。
Redmineはgemの依存関係を管理するために Bundler を使っています。まずはBundlerをインストールしてください
引用元: Redmineのインストール
ということでBundlerをインストール。
$ sudo apt install bundler
また、
もしRedmineをインストールしようとしている環境にImageMagickがインストールされていない場合、次のようにしてrmagickのインストールを省略する必要があります
引用元: Redmineのインストール
とも書かれているので、ImageMagickもインストール。
$ sudo apt install imagemagick
あれ?既にインストールされてた。
準備はできているようなので、必要なgemをインストールする。この際、withoutで使用していないデータベース用のgemを外す。
$ cd /usr/share/redmine/ $ sudo bundle install --without development test postgresql sqlite ・ ・ ・ An error occurred while installing mysql2 (0.3.21), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.3.21'` succeeds before bundling.
ここで怒られた。そういえば、gemをインストールするとパフォーマンスが劇的に上がるとも書いてあったなぁ。
$ sudo gem install mysql2 -v '0.3.21' ・ ・ ・ ----- libmysqlclient is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again. ----- ・ ・ ・
まだ、足りないらしい。
$ sudo apt-get install libmysqlclient-dev $ sudo gem install mysql2 -v '0.3.21' Building native extensions. This could take a while... Successfully installed mysql2-0.3.21 Parsing documentation for mysql2-0.3.21 Installing ri documentation for mysql2-0.3.21 Done installing documentation for mysql2 after 0 seconds 1 gem installed
もう一度。
$ sudo bundle install --without development test postgresql sqlite ・ ・ ・ An error occurred while installing rmagick (2.16.0), and Bundler cannot continue. Make sure that `gem install rmagick -v '2.16.0'` succeeds before bundling.
ですか。では、これも実行。
$ sudo gem install rmagick -v '2.16.0'
Building native extensions. This could take a while...
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.3.0/gems/rmagick-2.16.0/ext/RMagick
/usr/bin/ruby2.3 -r ./siteconf20170514-2540-qfahai.rb extconf.rb
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
・
・
・
このファイルが含まれるパッケージを探さねば。
$ sudo apt install apt-file $ apt-file update $ apt-file search MagickCore.pc libmagickcore-6.q16-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/MagickCore.pc
※引用元: 特定のファイルが含まれるパッケージを探す
ということで、以下をやってみたけど改善しない。
$ sudo apt install libmagickcore-6.q16-dev $ sudo apt install libmagickcore-dev
参照元をよく見てみると…
$ sudo apt install libmagick++-dev
とあるじゃないですか。実行→成功。
せっかくパッケージを見つけても、それをインストールしてもファイルが入っていかない、なんてことがあるんですな。びっくりです。
もう一度。
$ sudo bundle install --without development test postgresql sqlite
・
・
・
Bundle complete! 32 Gemfile dependencies, 56 gems now installed.
Gems in the groups development, test, postgresql and sqlite were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
ようやく、成功。
セッションストア秘密鍵を生成、とあるのでやってみる。
$ sudo -u www-data bundle exec rake generate_secret_token
静かに終了。
■Redmineの環境設定 その3
引き続き、/usr/share/redmineディレクトリでデータベースの作成。
$ sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate ・ ・ ・ -- change_column("trackers", :position, :integer, {:default=>nil}) -> 0.0024s == 20160416072926 RemovePositionDefaults: migrated (0.0192s) ================== == 20160529063352 AddRolesSettings: migrating ================================= -- add_column(:roles, :settings, :text) -> 0.0419s == 20160529063352 AddRolesSettings: migrated (0.0421s) ========================
画面上に文字が大量に表示された。なんか上手く行ってるっぽい。
さらに、デフォルトデータを登録。
この手順の実行は任意ですが 強く推奨されます。 デフォルトのロール、トラッカー、ステータス、ワークフロー、列挙項目がロードされます。
引用元: Redmineのインストール
$ sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data Default configuration data loaded.
これでデータベースができてデフォルトデータがセットできたと思うので、一応調べてみる。
$ mysql -u root -p
Enter password:[パスワード][Enter]
mysql> SHOW TABLE STATUS FROM redmine;
・
・
・
0 | 0 | 0 | 1 | 2017-05-14 16:13:21 | NULL | NULL | utf8mb4_general_ci | NULL | row_format=DYNAMIC | |
| workflows | InnoDB | 10 | Dynamic | 144 | 113 | 16384 | 0 | 65536 | 0 | 145 | 2017-05-14 16:13:25 | 2017-05-14 16:16:38 | NULL | utf8mb4_general_ci | NULL | row_format=DYNAMIC | |
・
・
・
55 rows in set (0.00 sec)
どうやら大丈夫そうだ。
■Apacheの設定
どうやら、ApacheでRedmineを動かすには一つ仕掛けが必要なようだ。
Passengerは、Railsアプリを実行するためのApacheモジュールで、Apache単独でRailsアプリケーションを実行できるようにするものです。
手順の意味を調べると、なるほどなーという感じ。
$ sudo apt-get install libapache2-mod-passenger
他のサービスが同居しているので、サブディレクトリ型の表現でサービスを提供。
ファイルを新たに作ってみる。
元々の ほにゃらら.conf で
DocumentRoot /var/www/html
と設定されていたとする。そしたら、個々の配下に /usr/share/redmine/public のシンボリックリンクを作り、そこを公開するように設定する。
※これを /usr/share/redmine/public で動かそうとすると、うんともすんともいわない。本当に動作が分かっている人を除いては逆らわないほうが無難。
$ sudo ln -s /usr/share/redmine/public /var/www/html/redmine
その上で、redmineの機能公開用ファイルを作り…
/etc/apache2/sites-available/redmine.conf
Alias /redmine /var/www/html/redmine RackBaseURI /redmine <Directory /var/www/html/redmine> Options -Indexes +FollowSymLinks AllowOverride Options Limit Authconfig Require all granted </Directory>
作った設定を有効化。
$ sudo a2ensite redmine.conf
モジュールも足したということで、念のためApacheを再起動。
$ sudo service apache2 restart
これで起動の準備が整った。
■動かしてみる→メール送信設定
ブラウザで http://サーバー名/redmine にアクセスする。
ログインは admin/admin 、ログイン後に強制的なパスワード変更画面への移動がある。
実際に見てみたところ、このインストールの方法だと(?若干の紆余曲折があった)デフォルトのプロジェクトは見ることができなかった。一方で、ロールなどはキチンと入っていたので、使い始める上で困ることはなさそうだ。
管理画面にメールサーバーの設定項目はなかった。サンプルの設定ファイルをコピーして、編集する。
$ sudo cp -a /usr/share/redmine/config/configuration.yml.example /usr/share/redmine/config/configuration.yml $ sudo vi /usr/share/redmine/config/configuration.yml
ファイルの中身はこんな感じで。
default: # Outgoing emails configuration # See the examples below and the Rails guide for more configuration options: # http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration email_delivery: delivery_method: :smtp smtp_settings: address: smtp.hogeserver.hogeddns.jp port: 25 # authentication: plain domain: 'redmineserver.hogeserver.hogeddns.jp'
ウチのサーバーはインターネットに公開しつつも認証を行っていないリレーサーバー。スパム対策は スパム対策技術 さんの技術を利用させていただいており、今までログで見る限りスパムを転送したことはないと思う(むしろとあるキャリアのサービスすら受け付けないこともあった程、厳しいといえば厳しく、優しいといえば優しいセキュリティ。自分なりに理解して、これは素晴らしいと思って利用させていただいている)。だが、その設定への対応で authentication をコメントアウトすることにはなかなか気付けなかった…。
なお、自前でSMTPサーバーを動かしていて、認証をしていない場合にはこんな感じで。
default: # Outgoing emails configuration # See the examples below and the Rails guide for more configuration options: # http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration email_delivery: delivery_method: :smtp smtp_settings: address: localhost port: 25
注意しなければならないのは
email_delivery:
の手前は 半角空白 2つ にすること。1つにしても、3つにしてもエラーになる。
設定し終わったら、Redmineを再起動する。再起動についてはPassengerでApache組み込みしたRedmineをApache再起動せずにRedmineだけ再起動する方法(※リンク切れのためアーカイブへ)に詳しく書かれており、 /usr/share/redmine/tmp 配下にある restart.txt が更新される度に行われる。つまり、
$ sudo -u www-data touch /usr/share/redmine/tmp/restart.txt
的なことをすればOK。
ここまでの設定で、メールが送れるようになった。テストメールは「管理」→「設定」→「メール通知」のページの右下から送れるようになっている。
しかし、内容がイケてない。
Subject: Redmine test From: redmine@example.net <redmine@example.net> Body: This is a test email sent by Redmine. Redmine URL: http://localhost:3000/redmine/ -------------------------------------------------- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://hostname/my/account
デフォルト設定感丸出し。
設定を色々直そう。
/usr/share/redmine/config/settings.yml
・ ・ ・ mail_from: # default: redmine@example.net default: webmaster@hogeserver.hogeddns.jp ・ host_name: # default: localhost:3000 default: redmineserver.hogeserver.hogeddns.jp ・ emails_footer: # default: |- # You have received this notification because you have either subscribed to it, or are involved in it. # To change your notification preferences, please click here: http://hostname/my/account default: |- この通知は、あなたが購読または参加しているために送られています。 通知設定は http://redmineserver.hogeserver.hogeddns.jp/redmine/my/account で変更できます。 ・
設定し終わったら、apacheを再起動しつつ、一度ログアウトし、再度ログイン。
今度は思った通りのメッセージが届いた。
ただし、上記はデフォルト設定なので、一度GUI上で変更をしてしまうと修正できない箇所もある。それはどこで設定したの?というと「管理」→「設定」→「メール通知」にある。
ちゃんと動きそうだから、本番環境に入れてみよう。
所感。
広く使われているものは、やっぱり、ログインしただけで空気が違う。デザインも良いし、簡単に使えそうな空気が流れている。いいっすね。
運用に超役立ちそうな情報
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他