目的と前提
プロジェクト管理ツールのRedmineをGoogle CloudのVMインスタンスを使って組み立てるための自分用のメモです。
次のものはすでに準備しているものとして詳細を省略します。
- インターネットアクセスが可能なVMインスタンス(ubuntu server)
- apacheのインストール
主な内容
- Redmineのインストール
- メールの設定
- リマインドメールの設定
Redmineのインストール
インストール解説はここ
インストール手順の中でRubyのビルド、gemパッケージのインストールには、マシンパワーをそれなりに要しする。
今回は、かなり時間がかかり、最後にはパワー不足で動作がkillされてしまったので、お金に物を言わせて、インストール時だけマシンパワーを上げた。
(この時は試しにe2-standardにしてみた。短時間なので、お金はそんなにかからない。)
configuration.ymlにFQDNを記載する場所があるが、用意したサーバにはDNSを設定しているので、そのDNSを記載。
ない場合は、多分これで確認。
FQDNの確認方法
hostname -f
インストール後、Redmineの初期設定のドキュメントはここ
メールの設定
ちょっと面倒なのはこの手順。google cloudは、VMインスタンスにメールサーバを立てられない(正確にはメールに関する通信設定が果てしなく面倒っぽい)ので、Sendgridを使う。
多分、無料枠内で足りる。
メール設定に関するドキュメントはここ
ドキュメント内に「ユーザー名、パスワード、ホスト名を含む、SendGrid SMTP アカウントの認証情報を書き留めておきます。」という記載があるが、サービス使用開始までにこれらの設定に出会えず、不明なまま。
でも設定では使わないので、問題なし。
あと、postfixのmain.cfに追記指示のある項目には、デフォルトで記載されているものがある。デフォルトをコメントアウトしなくても問題ない(後ろ記載が優先)が、ログで警告出るので、コメントアウトした。
メール設定でドキュメントと異なる設定をした部分
- sasl_passwdマップ作成のところで、.dbファイルを作成する部分は省略した。(エラー解決作業の中で、.dbファイルを作らなくても動くことが分かった)
- 証明書のハンドシェイクがうまくいかず、解決策として、今回は発信専用なので、main.cfのsmtpdに関する設定を全部コメントアウトした。
- 次の内容を指示以外にmain.cfに追記。(本当に必要かどうかはわからないが、エラー解決作業の中で追記し、コメントアウトしなかったもの。)
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
SendGridの設定
SendGridでは、送信するメールのfromを認証しなければならない。今回は、Domain Authenticationを使用。
メニューのSetting>Sender Authenticationをたどり設定。ネームサーバに登録するレコードの指示に従い設定し、認証する手順。
Redmineのメールのfrom設定
システム管理者権限でログイン後、管理メニューのメールの項目に、差出元アドレス設定欄があるので、SendGridで認証されているアドレスに合うように設定。
メールの送信テスト
Redmineのインストールディレクトリで次のように実行。はRedmineの登録ユーザID。
sudo -u www-data RAILS_ENV=production bundle exec rails runner 'Mailer.test_email(User.find_by(login: "<USER_ID>")).deliver_now'
で、ログを確認して送信できているかどうか確認。
sudo tail -n 30 /var/log/syslog
リマインドメールの設定
期限が間近のチケットに関するリマインダメールが便利なので、設定。
設定方法はここ
crontabの設定に注意
今回の自動実行は、スーパーユーザではなく、Redmineの実行ユーザであるwww-dataで行うべき。
なので、ドキュメントにあるcrontabの設定ではなく
sudo -u www-data crontab -e
とし、
30 6 * * * cd /path/to/redmine && bundle exec rake redmine:send_reminders days=7 RAILS_ENV=production
と記載。
あとはタイムゾーンを確認!
タイムゾーンが違っていて予想外の時間に動いたので、タイムゾーンの設定変更。
現在の設定確認はdate
やtimedatectl
で。何もしていなければ、世界標準時USTのはず。
まずは、タイムゾーンリスト確認。
timedatectl list-timezones
Asia/Tokyoがあるはずなので、タイムゾーン変更。
sudo timedatectl set-timezone Asia/Tokyo
再度確認すると、JSTになっていて、タイムゾーン変更成功。