tomcat 8 ilk kurulumdan sonra başlamayacak


18

Tomcat'i yeni bir CentOS 7 sanal makineye kurmaya çalışıyorum. Apache httpd'yi başarıyla yükledim ve sanal makinenin ipini ağdaki başka bir bilgisayardaki bir web tarayıcısına yazdığımda apache test sayfasını alabiliyorum. Ancak ben yazarken aşağıdaki hata iletisini alıyorum systemctl start tomcat:

Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.  

Java ve tomcat'in kurulumundaki komutların tam geçmişi:

Tomcat talimatları (aşağıdaki ikinci blok) openjdk kullanmamı istediğinden, ilk önce bu öğreticideki talimatları kullanarak java kurarak başladım ve gerçek java kullanmam gerekiyor:

//Install Java
# cd /opt/
# yum install wget
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz"

# tar xzf jdk-8u60-linux-x64.tar.gz

# cd /opt/jdk1.8.0_60/
# alternatives --install /usr/bin/java java /opt/jdk1.8.0_60/bin/java 2
# alternatives --config java
(Select the version you want)
# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_60/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_60/bin/javac 2
# alternatives --set jar /opt/jdk1.8.0_60/bin/jar
# alternatives --set javac /opt/jdk1.8.0_60/bin/javac
# java -version (checks to see you install correct version)
# export JAVA_HOME=/opt/jdk1.8.0_60
# export JRE_HOME=/opt/jdk1.8.0_60/jre
# export PATH=$PATH:/opt/jdk1.8.0_60/bin:/opt/jdk1.8.0_60/jre/bin

Önceki öğreticinin ortam değişkenlerini nasıl yerleştireceğini açıklamadığını unutmayın /etc/environment, bu yüzden bu komuttan önce durdum.

Aşağıdaki komutlar bu diğer öğreticiden alınmıştır . Java'yı kurduktan sonra başladım:

//Install Tomcat
Login as sudo user, not root.
# sudo groupadd tomcat
# sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
# cd ~
# wget http://mirrors.gigenet.com/apache/tomcat/tomcat-8/v8.0.27/bin/apache-tomcat-8.0.27.tar.gz
# sudo mkdir /opt/tomcat
# sudo tar xvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
# cd /opt/tomcat
# sudo chgrp -R tomcat conf
# sudo chmod g+rwx conf
# sudo chmod g+r conf/*
# sudo chown -R tomcat work/ temp/ logs/
# sudo vi /etc/systemd/system/tomcat.service
Cut and paste the following file contents:
##################################################
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target
##################################################
# sudo systemctl daemon-reload

# sudo systemctl start tomcat
Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.
# sudo systemctl start tomcat.service

Tomcat.service için iş başarısız. Ayrıntılar için bkz. 'Systemctl status tomcat.service' ve 'journalctl -xn'. # sudo systemctl enable tomcat.service ln -s '/etc/systemd/system/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service' # sudo systemctl tomcat'ı etkinleştir

# sudo systemctl status tomcat.service
tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled)
   Active: failed (Result: exit-code) since Tue 2015-10-13 11:05:31 PDT; 47s ago

Oct 13 11:05:31 localhost.localdomain kill[20887]: -q, --queue <sig>      use sigqueue(2) rather than kill(2)
Oct 13 11:05:31 localhost.localdomain kill[20887]: -p, --pid              print pids without signaling them
Oct 13 11:05:31 localhost.localdomain kill[20887]: -l, --list [=<signal>] list signal names, or convert one to a name
Oct 13 11:05:31 localhost.localdomain kill[20887]: -L, --table            list signal names and numbers
Oct 13 11:05:31 localhost.localdomain kill[20887]: -h, --help     display this help and exit
Oct 13 11:05:31 localhost.localdomain kill[20887]: -V, --version  output version information and exit
Oct 13 11:05:31 localhost.localdomain kill[20887]: For more details see kill(1).
Oct 13 11:05:31 localhost.localdomain systemd[1]: tomcat.service: control process exited, code=exited status=1
Oct 13 11:05:31 localhost.localdomain systemd[1]: Failed to start Apache Tomcat Web Application Container.
Oct 13 11:05:31 localhost.localdomain systemd[1]: Unit tomcat.service entered failed state.

Bir Doing yum localinstallönerildiği gibi güncelleştirilmiş jdk rpm, bu diğer nakil , iş vermedi.


DÜZENLEMELER:


@ Bram'ın önerisine göre, yapılandırma dosyasını aşağıdaki şekilde değiştirdim, ancak yine de aynı hatayı alıyorum:

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/opt/jdk1.8.0_60
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

Ayrıca, @ JeffSchaller'in sohbetteki yorumuna göre, tomcat'in yerel olarak şu şekilde başlamasını sağlayabildim:

[user@localhost tomcat]$ sudo /opt/tomcat/bin/startup.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.
[user@localhost tomcat]$

Bu nedenle, bu OP sorunu systemd yapılandırma ile ilgili gibi görünüyor. Nasıl düzeltebilirim?


Tomcat günlük dosyasında herhangi bir hata var mı? Eğer doğru hatırlıyorsam dosya catalina.out ya da onun gibi bir şey denir.
Bram

Tomcat günlükleri sudo systemctl start tomcat.service, yüzlerce satır alan izin reddedilen hataların bir demetidir.
CodeMed

Yanıtlar:


16

Ben aynı sorunu vardı, tarafından düzeltildi:

  1. Tomcat kullanıcısına tüm tomcatdizinin sahipliğini vermek :

    cd /opt && sudo chown -R tomcat tomcat/
    
  2. ve /etc/systemd/system/tomcat.service adresindeki aşağıdaki satırın yorumunu yapın:

    Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
    

1
Tomcat'i tüm klasörün sahibi yapmak güvenli mi? Erişimi mümkün olduğunca kısıtlamak istediğimizi düşündüm?
user3203425

Şimdi sınamak için bu kurulum yok, ama sorun olduğunu düşünüyorum: "sudo chown -R tomcat iş / temp / logs /". En azından "bin /" mülkiyetine de ihtiyacı olduğunu söyleyebilirim.
user2968675

Adım 1 sadece benim için yaptı gibi görünüyor. 2. adımdaki çizgi tam olarak ne yapar?
Kimberly W

Haklısınız, bu sorunu çözmek için 1. adım yeterlidir. Adım 2, java yığın boyutunu ve çöp toplama türünü ayarlar. Çevre özelliklerim yüzünden buna ihtiyacım vardı ama çoğu insan böyle olmayacak.
user2968675

benim durumumda sadece cd /opt && sudo chown -R tomcat tomcat/çalıştı. Çünkü sahibini sistem kullanıcısı olarak değiştirdim ve
tomcat'i

2

Java'yı defalt olmayan bir yere kurduğunuzdan, tomcat'e nerede bulacağını söylemeniz gerekir.

Gönderdiğiniz birim dosyasında JAVA_HOME / usr / lib / jvm / jre olarak ayarlanmıştır ancak java kurulumu ile ilgili bölümde JAVA_HOME /opt/jdk1.8.0_60 şeklindedir.

Tomcat systemd birim dosyasında JAVA_HOME'u ayarlarsanız işe yarayacağına inanıyorum.

Ayrıca birim dosyası kullanıcı tomcat dosyasını belirtir. Ancak manuel olarak başlattığınızda kök olarak başlatırsınız. Sorun şu ki, tomcat ayrıcalıklı bir bağlantı noktası açmaya çalışıyor. Başlangıç ​​betiği tomcat'ı kök olarak başlatır mı? Yoksa kullanıcı tomcat olarak işlemlere mi başlıyor? Kullanıcı ve grubun birim dosyasından kaldırılması, komut satırı denemenizle aynı davranışı tetiklemelidir.


Aşağıdaki hata nasıl düzeltilir: Kontrol işleminden hata kodu ile çıkıldığı için tomcat8.service işi başarısız oldu. Ayrıntılar için bkz. "Systemctl status tomcat8.service" ve "journalctl -xe". invoke-rc.d: initscript tomcat8, eylem "start" başarısız oldu. -> sudo nano / etc / default / tomcat8 -> JAVA_HOME'u ayarla JAVA_HOME = / usr / lib / jvm / java-8-oracle -> gist.github.com/alexislucena/89a046dc747123faf4496fb946c1fe79
birleştir

1

Hata mesajlarına göre, sorunun ExecStop=/bin/kill -15 $MAINPIDdeğişkenin değiştirilmediği yerden geldiğini düşünüyorum . Servis belgelerine göre $MAINPIDsadece ExecReloadkomut için bekleniyor . Soru kalıyor: ExecStoptetiklediğinizde neden çalıştırılıyor start?

Konuşlandırılmış uygulamalar için uygun olmayabilecek systemdJVM işlem çalışma dizininden çıkılması mümkündür /.

Ben hareket CATALINA_OPTSve script JAVA_OPTSiçine öneriyoruz /opt/tomcat/bin/setenv.shve ilk önce böyle basit bir yapılandırma ile deneyin:

[Unit]
Description=Apache Tomcat
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/java/default
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat

WorkingDirectory=/opt/tomcat

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

Her durumda, lütfen rapor edin journalctl -xnve logs/catalina.outiçerik

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.