やりたいこと
ソース全文検索ツール Milkode をサーバに入れて、git/subversionのリポジトリにコミットされているソースを、Web上から全文検索したい.
サーバ環境とファイル構成
OS: Ubuntu18.04LTS
Database: $HOME/.milkode/ (デフォルト)
Port: 9292 (デフォルト)
サーバに実行環境を構築する
# install package
sudo apt install ruby
sudo apt install ruby-dev
sudo gem install milkode
# check version
ruby --version
## ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
milk --version
## milk 1.8.9.1
# init milkode's DB
milk init --default
# add packages to DB
# @see https://milkode.ongaeshi.me/milk.html
milk add -p svn http://ABC.co.jp/svn/MYPROJ/trunk -n my-project
milk add -p svn http://XYZ.com/svn/OTHERPROJ/branches/test -n other-test-project
milk add -p git https://github.com/myname/myproj.git
milk add ~/Documents/myreports/
# update DB by crontab
crontab -e
mkdir $HOME/log
sudo vim /etc/logrotate.d/homelog
# test milk web
milk web
# make milk web service
sudo vim /etc/systemd/system/milkweb.service
sudo systemctl enable milkweb
sudo systemctl start milkweb
- milk web にてブラウザが起動し、http://localhost:9292 にて milk add で登録したパッケージが表示されたら成功です.
- 成功を確認してから、milk web をサービス化する.
crontab への登録内容
crontab
$ crontab -l
## Ubuntu18.04LTS default ENV:
# HOME=/home/maintainer
# LOGNAME=maintainer
# PATH=/usr/bin:/bin
# LANG=ja_JP.UTF-8
# SHELL=/bin/sh
# PWD=/home/maintainer
#
## commands
# m h D M W commands
@daily (date && /usr/local/bin/milk update --all) >> $HOME/log/milk-update.log 2>&1
- milk add で登録したパッケージ(検索対象)を
@daily
のタイミングで更新する.
logrotateの設定
- とりあえず毎日回転し10個保持する. 頻度と個数はお好みで調整する.
- milk update は root ではなく maintainer ユーザ権限で動かし、そのログファイルも $HOME/log/ にあるので、su で権限を合わせる.
/etc/logrotate.d/homelog
/home/maintainer/log/*.log {
# size 100k
# monthly
# weekly
daily
rotate 10
compress
delaycompress
su maintainer maintainer
nocreate
missingok
notifempty
}
service設定
/etc/systemd/system/milkweb.service
[Unit]
Description = milk web
[Service]
## milk needs enviroment $HOME.
# Environment='HOME=/home/maintainer'
# ExecStart = /usr/local/bin/milk web -n --host 0.0.0.0 --db=/home/maintainer/.milkode
User=maintainer
ExecStart = /usr/local/bin/milk web -n --host 0.0.0.0
Restart = always
Type = simple
## default output to syslog.
# StandardOutput=null
StandardOutput=file:/home/maintainer/log/milkweb.log
# StandardError=file:/var/log/milkweb.log
[Install]
WantedBy = multi-user.target
- 参考資料では /opt/milkweb.sh に環境変数HOMEの設定とmilkweb起動を記入しているが、serviceに直接記入してみた。
- --db= 指定があれば環境変数HOMEは不要に思えるが、それがないとmilkodeがエラーを吐く。
syslog
Jun 25 13:25:12 C196 milk[25792]: /var/lib/gems/2.5.0/gems/milkode-1.8.9.1/lib/milkode/common/dbdir.rb:14:in `expand_path': couldn't find login name -- expanding `~' (ArgumentError)
- User=maintainer を記載すれば、HOME の設定は不要である.