초기 설치 후 Tomcat 8이 시작되지 않습니다


18

새로운 CentOS 7 가상 머신에 tomcat을 설치하려고합니다. 아파치 httpd를 성공적으로 설치했으며 가상 머신의 IP를 네트워크의 다른 컴퓨터의 웹 브라우저에 입력하면 아파치 테스트 페이지를 얻을 수 있습니다. 그러나 입력 할 때 다음 오류 메시지가 나타납니다 systemctl start tomcat.

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

다음은 java 및 tomcat 설치의 전체 명령 히스토리입니다.

Tomcat 명령어 (아래 두 번째 블록)가 openjdk를 사용하기를 원했기 때문에이 튜토리얼의 지시 사항을 사용 하여 java를 설치하기 시작했으며 실제 java를 사용해야합니다.

//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

이전 튜토리얼에서는 환경 변수를 넣는 방법을 설명하지 않았 /etc/environment으므로 해당 명령 전에 중지했습니다.

다음 명령은 이 다른 튜토리얼 에서 가져온 입니다. Java를 설치 한 후 시작했습니다.

//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에 대한 작업이 실패했습니다. 자세한 내용은 'systemctl status tomcat.service'및 '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 enable tomcat

# 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.

이 다른 게시물에서yum localinstall 제안한대로 업데이트 된 jdk rpm을 수행하면 작동하지 않았습니다.


EDITS :


@Bram의 제안에 따라 구성 파일을 다음과 같이 변경했지만 여전히 동일한 오류가 발생합니다.

# 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

또한 채팅에서 @ JeffSchaller의 의견에 따라 다음과 같이 바람둥이를 기본적으로 시작할 수있었습니다.

[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]$

따라서이 OP의 문제는 systemd 구성에있는 것 같습니다. 어떻게 고칠 수 있습니까?


Tomcat 로그 파일에 오류가 있습니까? 내가 올바르게 기억한다면 파일은 catalina.out 또는 이와 비슷한 것입니다.
Bram

Tomcat 로그 sudo systemctl start tomcat.service는 수백 줄이 걸리는 권한 거부 오류입니다.
CodeMed

답변:


16

나는 같은 문제를 겪었다.

  1. 전체 tomcat디렉토리에 대한 Tomcat 사용자 소유권을 제공합니다 .

    cd /opt && sudo chown -R tomcat tomcat/
    
  2. /etc/systemd/system/tomcat.service에서 아래 행을 주석 처리하십시오.

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

1
tomcat을 전체 폴더의 소유자로 만드는 것이 안전합니까? 가능한 한 액세스를 제한하고 싶다고 생각 했습니까?
user3203425

지금 테스트 할 설정이 없지만 "sudo chown -R tomcat work / temp / logs /"에 문제가 있다고 생각합니다. 적어도 "bin /"의 소유권이 필요하다고 말하고 싶습니다.
user2968675

1 단계만으로도 나를 위해 그것을 한 것 같습니다. 2 단계의 라인은 정확히 무엇을합니까?
Kimberly W

1 단계는이 특정 문제를 해결하기에 충분합니다. 2 단계는 Java 힙 크기 및 가비지 콜렉션 유형을 설정합니다. 내 환경 속성 때문에 필요했지만 대부분의 사람들은 그렇지 않을 것입니다.
user2968675

제 경우에는 cd /opt && sudo chown -R tomcat tomcat/효과가있었습니다. 소유자를 시스템 사용자로 변경하고 바람둥이를 소유자로 되 돌리는 것을 잊었 기 때문에
imdzeeshan

2

명확한 위치에 Java를 설치 했으므로 tomcat에 Java를 찾을 위치를 알려야합니다.

게시 한 유닛 파일에서 JAVA_HOME은 / usr / lib / jvm / jre로 설정되어 있지만 Java 설치에 대한 섹션에서 JAVA_HOME은 /opt/jdk1.8.0_60입니다.

Tomcat systemd unit 파일에서 JAVA_HOME을 설정하면 작동한다고 생각합니다.

또한 단위 파일은 사용자 Tomcat을 지정합니다. 그러나 수동으로 시작하면 루트로 시작합니다. 문제는 바람둥이가 권한있는 포트를 열려고 시도 할 가능성이 있습니다. 시작 스크립트가 Tomcat을 루트로 시작합니까? 아니면 사용자 바람둥이로 프로세스를 시작합니까? 장치 파일에서 사용자와 그룹을 제거하면 명령 행 시도와 동일한 동작이 트리거됩니다.


다음 오류를 수정하는 방법 : 제어 프로세스가 오류 코드와 함께 종료되어 tomcat8.service에 대한 작업이 실패했습니다. 자세한 내용은 "systemctl status tomcat8.service"및 "journalctl -xe"를 참조하십시오. invoke-rc.d : initscript tomcat8, "start"작업이 실패했습니다. -> sudo는 나노의 / etc / 기본 / tomcat8 -> 설정 JAVA_HOME JAVA_HOME =은 / usr / lib 디렉토리 / JVM을 / 자바-8 신탁 -> gist.github.com/alexislucena/89a046dc747123faf4496fb946c1fe79은
결합

1

오류 메시지에 따르면 ExecStop=/bin/kill -15 $MAINPID변수가 대체되지 않은 곳 에서 문제가 발생한다고 생각합니다 . 서비스 문서에 따르면 명령에 $MAINPID대해서만 예상됩니다 ExecReload. 문제는 여전히 남아 있습니다. ExecStop트리거 할 때 왜 실행 start됩니까?

그것은 가능 systemd으로 잎 JVM 프로세스 작업 디렉토리 /배포 된 응용 프로그램에 대한 관련없는 수있다.

나는 당신이 스크립트 로 이동 CATALINA_OPTS하여 먼저 간단한 구성으로 시도해 볼 것을 제안 합니다.JAVA_OPTS/opt/tomcat/bin/setenv.sh

[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

어쨌든보고 journalctl -xn하고 logs/catalina.out내용을 기입하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.