mon tomcat utilise le mauvais JAVA_HOME ou JRE_HOME
Je suis nouveau sur Tomcat. leur est quelque chose de mal à propos de Tomcat 7 sur mon ubuntu 10.10.
lorsque je démarre Tomcat comme ce
llchli@llchli-virtual-machine:/usr/local/apache-tomcat-7.0.47/bin$ ./catalina.sh run
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.47
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.47
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.47/temp
Using JRE_HOME: /usr/local/jdk1.7.0_45
Using CLASSPATH: /usr/local/apache-tomcat-7.0.47/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.47/bin/tomcat-juli.jar
bien que ne peut pas démarrer Tomcat de cette façon, il echos Using JRE_Home /usr/local/jdk1.7.0_45
, qui est le bon JAVA_HOME
ou JRE_HOME
sur mon ordinateur.
mais quand je lance Tomcat avec sudo
comme ce
llchli@llchli-virtual-machine:/usr/local/apache-tomcat-7.0.47/bin$ sudo ./catalina.sh start
[sudo] password for llchli:
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.47
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.47
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.47/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-7.0.47/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.47/bin/tomcat-juli.jar
elle echos Using JRE_HOME: /usr
,ce qui n'est pas le bon JAVA_HOME
ou JRE_HOME
sur mon ordinateur. Mais il démarrer Tomcat correctement.
mon /etc/environment
est
llchli@llchli-virtual-machine:/usr/local/apache-tomcat-7.0.47/bin$ sudo cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/jdk1.7.0_45/bin"
LANGUAGE="en"
JAVA_HOME="/usr/local/jdk1.7.0_45"
CLASSPATH="$CLASSPATH:$JAVA_HOME/lib"
CATALINA_HOME="/usr/local/apache-tomcat-7.0.47"
Je suis un peu perplexe à ce sujet.Et quand j'utilise daemon.sh
comme ça, ça générer des erreurs.
llchli@llchli-virtual-machine:/usr/local/apache-tomcat-7.0.47/bin$ sudo ./daemon.sh run
Cannot find any VM in Java Home /usr
Cannot find any VM in Java Home /usr
Cannot locate JVM library file
Service exit with a return value of 1
Elle echos cannot find any VM in Java Home /usr
. Je suis tellement confus.
Toute aide et conseille appréciera.
Merci d'avance.
service tomcat7 start
? Avez-vous installé le tomact7
paquet? Ou avez-vous installé manuellement?J'ai télécharger".tar.gz fichier et le décompresser sur le fichier '/usr/local/'
Ok, donc vous avez installé manuellement, je vous suggérons d'utiliser le système de paquets. Installez uniquement des logiciels manuellement si vous vraiment. Qui va garder votre système propre, de plus il est très peu probable que vous aurez jamais de mise à jour de l'installation que vous avez installé (par exemple. les correctifs de sécurité). Si vous utilisez le paquet, tout fonctionne hors de la boîte.
juste un conseil pour le débogage cette question: modifier le script et ajouter
set +x
, utilisez env
pour montrer le contexte actuel.
OriginalL'auteur llch | 2013-11-17
Vous devez vous connecter pour publier un commentaire.
Ça sonne comme "sudo" n'est pas en passant votre JAVA_HOME et JAVA_PATH à travers le processus de l'enfant.
Lorsque vous exécutez une aide de la commande "sudo", les variables d'environnement sont définies selon ce que le fichier sudoers dit. Ma lecture de la "sudoers" saisie manuelle est que la valeur par défaut est de ne PAS passer des variables à travers. Mais, selon le "sudo" manuel de l'entrée, il y a une syntaxe de commande de variation qui permet de passer des variables d'environnement à l'aide de "VAR=valeur" ...
Je vous suggère de lire le manuel d'entrées pour "sudo" et "sudoers" soigneusement, puis lire votre système est "/etc/sudoers" fichier de comprendre comment il se comporte.
Cela dit, le lancement de services en ligne de commande avec "sudo" n'est pas une bonne idée, surtout si vous parlez de la "production" des services. Et vous êtes généralement préférable d'utiliser le service wrappers fournis par votre distribution de l'emballage, plutôt qu'un non-emballés installer à partir de la "en amont" du projet.
Lich - vous besoin de lire les pages de manuel. Ils vont vous dire quoi "sudo" sera fait. Pour répondre à ta question, cela dépend si ce fichier est en cours de lecture / de provenance, soit par une initialisation du shell ou le tomcat scripts eux-mêmes. Certes, ce fichier n'est pas lu (directement), soit par sh / bash ou sudo.
OriginalL'auteur Stephen C
Sudo réinitialise les variables d'environnement. Lorsque vous exécutez la commande sudo, JRE_HOME est réinitialisé à sa valeur par défaut (probablement nulle) et Tomcat va assumer sa propre valeur par défaut (/usr). Vous pouvez lancer la commande sudo avec le commutateur-E à la préservation de l'environnement.
Êtes-vous sûr, vous devez exécuter le script en tant que root? Je n'ai aucune idée de comment configurer Tomcat, mais il est généralement une bonne pratique pour exécuter des serveurs dédiés utilisateur plutôt qu'en tant que root.
OriginalL'auteur JiLiang
Comme je l'ai déjà état dans un commentaire, je vous suggère fortement d'utiliser le système de paquets pour installer le logiciel, il est disponible dans le dépôt. (plus il y a des ppa pour à peu près tout). De cette façon, vous permettra de garder votre système de rangement, et vous n'aurez pas vous soucier de choses qui ne fonctionnent pas (en général).
Ma suggestion est de supprimer votre manuel d'installation et installer le
tomcat7
paquet.Pour poursuivre la configuration, utiliser le fichier
/etc/default/tomcat7
. Pour démarrer/arrêter/redémarrer utilisez la commandeservice tomcat7 {start|stop|restart}
.À l'aide du package tomcat7 le tomcat instance exécuter en tant qu'il est propre de l'utilisateur, et pas en tant que root, et c'est bon, depuis un service ne devrait pas exécuter en tant qu'utilisateur avec des privilèges complets.
Je suis conscient que je ne suis pas répondre à votre question avec les variables d'environnement. Mais à l'aide de la manière suggérée, vous ne serez pas confrontés à ce problème pour commencer.
OriginalL'auteur Ortwin Angermeier