Ubuntu

Alfrescoの起動方法を変える systemctl

Alfrescoを起動する方法、現状がよろしくなかった。

/etc/init.d/alfrescoに定義を書いて、root権限で動作させている。

変えましょう…

広告


initスクリプト から systemd unit に移行していく…

■サービスを止める

今までの手順だとこちら。

$ sudo service alfresco stop

※終了に猛烈に時間がかかる(5分、CPU使用率は高くならない)ことがあったが、原因を突き止められずにここまできた。

サービスの登録状況は sysv-rc-conf で見る。

$ sysv-rc-conf --list
acpid      2:on 3:on 4:on 5:on
alfresco   0:off 1:off 2:on 3:on 4:on 5:on 6:off
alsa-utils 0:off 1:off 6:off S:on
…

という具合。

サービスを削除する。

$ sudo update-rc.d alfresco disable ← これは無効化。やらなくていいかも。
$ sudo update-rc.d alfresco remove  ← これで /etc/rc?.d からシンボリックリンクが消える
$ sudo rm /etc/init.d/alfresco      ← 起動スクリプトを削除
$ sysv-rc-conf --list
acpid      2:on 3:on 4:on 5:on
alsa-utils 0:off 1:off 6:off S:on

きれいに消えた。


■起動ユーザーを作る

ユーザー alfresco を作って、Alfresco関連ファイルの持ち主を alfresco に変える。

$ sudo useradd --system --user-group alfresco
$ sudo chown -R alfresco:alfresco /usr/share/alfresco/

■起動用の設定ファイルを作る

このあたりを参考に。

https://gist.github.com/fmaul/b05d9b8d8b5ff8ff0a0657f2c25d7d8d

http://alfrescoblog.magenta.dk/content/creating-systemd-service-alfresco-installation ※リンク切れ

/lib/systemd/system/alfresco.service

[Unit]
Description=Alfresco Content Service
After=syslog.target network.target mysql.service

[Service]
Type=forking
ExecStart=/usr/share/alfresco/alfresco.sh start
ExecReload=/usr/share/alfresco.sh restart
ExecStop=/usr/share/alfresco/alfresco.sh stop
User=alfresco
PIDFile=/usr/share/alfresco/tomcat/temp/catalina.pid

[Install]
WantedBy=multi-user.target

rootでインストールしたので、スクリプトに若干の修正が必要。

/usr/share/alfresco/alfresco.sh

#!/bin/sh

echo "TRACE : 101"

# Allow only root execution
#if [ `id|sed -e s/uid=//g -e s/\(.*//g` -ne 0 ]; then
#    echo "This script requires root privileges"
#    exit 1
#fi

echo "TRACE : 102"

※コメントアウトする

■サービスとして登録

まずは起動を試す。

$ sudo systemctl daemon-reload
$ sudo systemctl start alfresco.service
$ systemctl status alfresco.service
● alfresco.service - Alfresco Content Service
   Loaded: loaded (/lib/systemd/system/alfresco.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2018-04-14 11:08:41 JST; 10s ago
  Process: 6033 ExecStart=/usr/share/alfresco/alfresco.sh start (code=exited, status=0/SUCCESS)
…

これで起動が確認できたらOKかな。

サービスとして登録。

$ sudo systemctl enable alfresco.service


これで移行ができる。

も、もしかして init.d で何かするより簡単!?

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他