web-dev-qa-db-ja.com

Tomcat.serviceの開始に失敗しました:ユニットTomcat.serviceが見つかりません

私は通常のユーザーからTomcatサービスを実行することはできないようですが、これをルートとして試してみると

root@ip-:/home/ubuntu# service Tomcat
Run as /etc/init.d/Tomcat <start|stop|restart>
root@ip-:/home/ubuntu# service Tomcat start
Failed to start Tomcat.service: Unit Tomcat.service not found.
root@ip-:/home/ubuntu# 

私はそれを手動で実行しましたが、うまくいったようです

root@ip-:/home/ubuntu# /etc/init.d/Tomcat start
Using CATALINA_BASE:   /usr/local/Tomcat/current_Tomcat
Using CATALINA_HOME:   /usr/local/Tomcat/current_Tomcat
Using CATALINA_TMPDIR: /usr/local/Tomcat/current_Tomcat/temp
Using JRE_HOME:        /usr/local/Java/current_Java
Using CLASSPATH:       /usr/local/Tomcat/current_Tomcat/bin/bootstrap.jar:/usr/local/Tomcat/current_Tomcat/bin/Tomcat-juli.jar

Tomcat started.

通常のユーザーとして実行すると、許可を得ることができないようです。パスワードなしのsshキーのみのユーザーがいます。

ubuntu@ip-:~$ service Tomcat start
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'Tomcat.service'.
Multiple identities can be used for authentication:
 1.  Ubuntu (ubuntu)
 2.  An,,, (an)
Choose identity to authenticate as (1-2): 1
Password: 
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to start Tomcat.service: Access denied
See system logs and 'systemctl status Tomcat.service' for details.
ubuntu@ip-:~$ 

そして、これがサービスのスクリプトです

ubuntu@ip-:~# cat /etc/init.d/Tomcat 
#!/bin/bash
export CATALINA_HOME=/usr/local/Tomcat/current_Tomcat`
start() {
 sh $CATALINA_HOME/bin/startup.sh
}
stop() {
 sh $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac
ubuntu@ip-:~# ll /etc/init.d/Tomcat 
-rwxr-xr-x 1 root root 306 Feb 14 07:20 /etc/init.d/Tomcat*
3
c3cris

この問題が発生している間、Ubuntu 16.04を使用しています。解決しました。

まず、スクリプトの先頭に1行追加します。

. /lib/lsb/init-functions

次に、シェルで、/ etc/rc *からスクリプトへのシンボリックリンクを作成します。

Sudo update-rc.d Tomcat defaults 95

これにより、再起動後にスクリプトが自動的に実行されます。

2
Leon Wolf