tomcat 8 sẽ không bắt đầu sau khi cài đặt ban đầu


18

Tôi đang cố gắng cài đặt tomcat trên máy ảo CentOS 7 mới. Tôi đã cài đặt thành công apache httpd và có thể lấy trang kiểm tra apache khi tôi nhập ip của máy ảo vào trình duyệt web trên một máy tính khác trong mạng. Nhưng tôi nhận được thông báo lỗi sau khi tôi gõ systemctl start tomcat:

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

Dưới đây là lịch sử đầy đủ của các lệnh trong quá trình cài đặt java và tomcat:

Trước tiên tôi bắt đầu bằng cách cài đặt java bằng cách sử dụng các hướng dẫn từ hướng dẫn này vì các hướng dẫn tomcat (khối thứ hai bên dưới) muốn tôi sử dụng openjdk và tôi cần sử dụng java thực:

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

Lưu ý rằng hướng dẫn trước không giải thích cách đặt các biến môi trường /etc/environment, vì vậy tôi đã dừng trước lệnh đó.

Các lệnh sau đây là từ hướng dẫn khác này . Tôi đã bắt đầu tại điểm sau khi cài đặt 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

Công việc cho tomcat.service thất bại. Xem 'trạng thái systemctl tomcat.service' và 'Journalctl -xn' để biết chi tiết. # sudo systemctl kích hoạt tomcat.service ln -s '/etc/systemd/system/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service' # sudo systemctl kích hoạt 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.

Thực hiện một yum localinstallvòng / phút jdk cập nhật, như được đề xuất trong bài đăng khác này , không hoạt động.


CHỈNH SỬA:


Theo đề xuất của @ Bram, tôi đã thay đổi tệp cấu hình thành như sau, nhưng vẫn nhận được cùng một lỗi:

# 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

Ngoài ra, theo nhận xét của @ JeffSchaller trong trò chuyện, tôi đã có thể nhận được tomcat để bắt đầu tự nhiên như sau:

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

Do đó, vấn đề trong OP này dường như là với cấu hình systemd. Làm thế nào tôi có thể sửa chữa nó?


Bất kỳ lỗi trong tệp nhật ký tomcat? Nếu tôi nhớ chính xác thì tập tin được gọi là catalina.out hoặc đại loại như thế.
Bram

Nhật ký Tomcat sau đó sudo systemctl start tomcat.servicelà một loạt các quyền bị từ chối lỗi mất hàng trăm dòng.
CodeMed

Câu trả lời:


16

Tôi đã có cùng một vấn đề, đã sửa nó bằng cách:

  1. trao quyền sở hữu cho người dùng tomcat của toàn bộ tomcatthư mục:

    cd /opt && sudo chown -R tomcat tomcat/
    
  2. và nhận xét dòng dưới đây trong /etc/systemd/system/tomcat.service:

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

1
Có an toàn để làm cho tomcat là chủ sở hữu của toàn bộ thư mục? Tôi nghĩ rằng chúng tôi muốn hạn chế truy cập càng nhiều càng tốt?
dùng3203425

Tôi không có thiết lập này để kiểm tra ngay bây giờ, nhưng tôi nghĩ vấn đề nằm ở: "sudo chown -R tomcat work / temp / log /". Tôi muốn nói rằng nó cũng cần quyền sở hữu "bin /".
dùng2968675

Bước 1 một mình đã làm điều đó cho tôi dường như. Dòng trong bước 2 làm gì chính xác?
Kimberly W

Bạn nói đúng, bước 1 là đủ để khắc phục vấn đề cụ thể này. Bước 2 đặt kích thước heap java và loại bộ sưu tập rác. Tôi cần nó vì thuộc tính môi trường của tôi nhưng hầu hết mọi người có lẽ sẽ không.
dùng2968675

trong trường hợp của tôi chỉ cd /opt && sudo chown -R tomcat tomcat/làm việc Bởi vì tôi đã thay đổi chủ sở hữu thành người dùng hệ thống và quên biến tomcat thành chủ sở hữu trở lại
imdzeeshan

2

Vì bạn đã cài đặt Java ở một vị trí không xác định, bạn cần cho tomcat biết nơi tìm nó.

Trong tệp đơn vị bạn đã đăng JAVA_HOME được đặt thành / usr / lib / jvm / jre nhưng trong phần về cài đặt java JAVA_HOME là /opt/jdk1.8.0_60.

Nếu bạn đặt JAVA_HOME trong tệp đơn vị tomcat systemd, tôi tin rằng nó sẽ hoạt động.

Ngoài ra các tập tin đơn vị chỉ định người dùng tomcat. Nhưng khi bạn khởi động nó một cách thủ công, bạn bắt đầu nó như root. Vấn đề có thể là tomcat cố gắng mở một cổng đặc quyền. Liệu kịch bản bắt đầu bắt đầu tomcat như root? Hoặc nó bắt đầu các quá trình như người dùng tomcat? Xóa người dùng và nhóm khỏi tệp đơn vị sẽ kích hoạt hành vi tương tự của nỗ lực dòng lệnh của bạn.


Cách khắc phục lỗi sau: Công việc cho tomcat8.service không thành công do quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl tomcat8.service" và "Tạp chí -xe" để biết chi tiết. invoke-rc.d: initscript tomcat8, hành động "bắt đầu" không thành công. -> sudo nano / etc / default / tomcat8 -> Set JAVA_HOME JAVA_HOME = / usr / lib / jvm / java-8-oracle -> gist.github.com/alexislucena/89a046dc747123faf4496fb946c1fe79
Kết hợp

1

Theo thông báo lỗi, tôi nghĩ vấn đề xuất phát từ ExecStop=/bin/kill -15 $MAINPIDnơi biến không được thay thế. Theo tài liệu dịch vụ $MAINPIDdự kiến ​​chỉ cho ExecReloadlệnh. Câu hỏi vẫn còn: tại sao ExecStopđược chạy khi bạn kích hoạt start?

Có thể systemdđể thư mục làm việc xử lý JVM vì /có thể không liên quan đến các ứng dụng đã triển khai.

Tôi đề nghị bạn chuyển CATALINA_OPTSJAVA_OPTSvào /opt/tomcat/bin/setenv.shtập lệnh và thử trước với cấu hình đơn giản như vậy:

[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

Trong mọi trường hợp, xin vui lòng báo cáo journalctl -xnlogs/catalina.outnội dung

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.