LoginSignup
1
1

More than 5 years have passed since last update.

Ubuntu18.04LTS に Milkode をインストールする

Last updated at Posted at 2019-06-14

やりたいこと

ソース全文検索ツール 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 の設定は不要である.

参考資料

END

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1