Je ne suis pas très expérimenté avec Linux en général, donc s'il vous plaît pardonnez-moi si cela est évident pour vous.

J'ai effectué un grand nombre de recherches sur diverses combinaisons de mots-clés, mais je ne trouve pas de solution à ce problème.

J'ai installé CentOS 7 en ligne de commande uniquement (core) sur une machine virtuelle.

J'ai installé Java et téléchargé Tomcat 9.0.14 (je sais que ce n'est pas la dernière version). J'ai configuré Tomcat pour qu'il s'exécute en tant que service, en utilisant systemd, c'est-à-dire que j'ai créé un fichier :

/etc/systemd/system/tomcat.service

J'ai dû réviser ce message environ 15 fois avant que le formulaire de soumission ne cesse de penser qu'il s'agissait de spam. J'ai donc dû supprimer de nombreuses informations que je voulais initialement inclure, comme ce qui se trouve dans mon fichier service.tomcat. Désolé. J'aimerais inclure plus de détails, mais le formulaire ne me le permet tout simplement pas.

C'est la seule instance de Tomcat sur le serveur Linux. Il est installé dans /opt/tomcat/apache-tomcat-9.0.14, mais j'ai créé un lien symbolique nommé "latest" afin qu'il puisse être référencé comme /opt/tomcat/latest.

Tomcat démarre correctement lorsque j'exécute le script de démarrage manuellement, c'est-à-dire :

cd /opt/tomcat/latest/bin sudo ./startup.sh

Lorsque je le fais, il répond correctement et je peux voir la page de destination à l'aide d'un navigateur sur un autre ordinateur.

Je peux également démarrer Tomcat en tant que service - en démarrant manuellement ce service en utilisant :

sudo systemctl start tomcat

Si je le fais, je peux voir Tomcat fonctionner et utiliser :

sudo systemctl status tomcat

dit que ça marche. Je peux également visiter la page de destination lorsque Tomcat est démarré de cette façon. Il démarrera donc en tant que service, si je démarre manuellement le service avec la commande ci-dessus.

Le problème est que lorsque je démarre la machine, Tomcat ne démarre pas. Je ne pense pas que j'ai simplement échoué à référencer le service, je pense plutôt qu'il pourrait échouer (mais je ne suis pas sûr à 100%):

Si je redémarre l'ordinateur, Tomcat ne démarre pas. Si je vais ensuite :

sudo systemctl status tomcat -l

J'ai compris:

tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2020-05-27 14:47:27 AEST; 3min 14s ago
Process: 1147 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1168 (code=exited, status=1/FAILURE)

May 27 14:47:26 CentOS-7-NoGUI-Virgin systemd[1]: Starting Apache Tomcat Web Application Container...
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: Started Apache Tomcat Web Application Container.
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: Unit tomcat.service entered failed state.
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: tomcat.service failed.

Sur la base du fait que Tomcat a échoué, je ne pense pas que le problème soit que je n'ai pas dit à CentOS de démarrer le service. Au contraire, je pense qu'il essaie de démarrer le service, mais cela ne fonctionne pas.

Si je fais alors manuellement :

sudo systemctl start tomcat

Je ne reçois aucun texte renvoyé, mais par la suite si je fais ceci :

sudo systemctl status tomcat -l

il montre que Tomcat est en cours d'exécution. J'aimerais inclure le résultat exact de la commande, mais j'ai dû le supprimer également dans mes nombreuses révisions pour que le formulaire de soumission ne pense pas qu'il s'agissait de spam.

Je pense avoir correctement configuré le service Tomcat pour qu'il démarre au démarrage du système, en procédant comme suit :

sudo systemctl daemon-reload

sudo systemctl enable tomcat

J'ai essayé d'utiliser journalctl -xe pour voir si je pouvais savoir pourquoi le service ne démarrait pas au démarrage, mais je n'ai rien trouvé dans les résultats de cette commande qui expliquait pourquoi cela se produisait. Je suis heureux de fournir le (très long) résultat de cela, si cela est utile.

Le fichier tomcat.service contient les éléments suivants : (J'ai dû supprimer le contenu de ce fichier, même s'il était marqué comme code, car le formulaire de soumission insistait sur le fait que mon message ressemblait à du spam. Soupir)

J'ai défini les éléments suivants dans le dossier d'accueil de mon utilisateur, dans le fichier .bashrc :

export CATALINA_HOME=/opt/tomcat/latest

Je me demande si, peut-être, lorsque le service démarre au démarrage, s'il ne s'exécute pas en tant qu'utilisateur, il n'a peut-être pas accès à cette variable d'une manière ou d'une autre ?

Le script de démarrage réel (référencé dans le fichier tomcat.service est /opt/tomcat/latest/bin/startup.sh . Il contient le contenu par défaut, je ne l'ai modifié en aucune façon.

Encore une fois, le script ci-dessus s'exécute et démarre Tomcat. Je peux même démarrer Tomcat en tant que service en tapant manuellement sudo systemctl start tomcat.

Il ne démarre tout simplement pas au démarrage.

J'ai effectué une mise à jour de vérification sudo yum, suivie d'une mise à jour d'installation sudo yum. J'ai fait cela pour mettre à jour CentOS 7 vers la dernière version. Je l'ai fait après avoir installé Tomcat, dans le cadre du processus de dépannage que j'ai suivi. Cela n'a pas semblé aider.

Je serais très reconnaissant si quelqu'un pouvait suggérer une solution ou une étape de dépannage que je devrais essayer ensuite. Par exemple, je ne sais pas comment examiner le processus de démarrage sur une machine Linux spécifiquement pour rechercher les services qui ne démarrent pas et pourquoi.

Cordialement, Spencer.

answer

les paramètres de sécurité dans Java pourraient être la raison

"java.home/lib/security/java.policy" catalina a ses propres paramètres de sécurité " ../tomcat/conf/catalina.policy"