টমক্যাট 8 প্রারম্ভিক ইনস্টলের পরে আরম্ভ হবে না


18

আমি একটি নতুন CentOS 7 ভার্চুয়াল মেশিনে টমক্যাট ইনস্টল করার চেষ্টা করছি। আমি সাফল্যের সাথে অ্যাপাচি httpd ইনস্টল করেছি এবং আমি যখন নেটওয়ার্কের অন্য কম্পিউটারে একটি ভার্চুয়াল মেশিনের আইপি ওয়েব ব্রাউজারে টাইপ করি তখন অ্যাপাচি পরীক্ষার পৃষ্ঠাটি পেতে সক্ষম হয়েছি। আমি টাইপ করার সময় আমি নিম্নলিখিত ত্রুটি বার্তাটি পাচ্ছি systemctl start tomcat:

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

জাভা এবং টমক্যাট ইনস্টল করার আদেশগুলির সম্পূর্ণ ইতিহাস এখানে রয়েছে:

আমি প্রথমে এই টিউটোরিয়ালটি থেকে নির্দেশাবলী ব্যবহার করে জাভা ইনস্টল করে শুরু করেছি কারণ টমক্যাট নির্দেশাবলী (নীচের দ্বিতীয় ব্লক) আমাকে ওপেনজেডক ব্যবহার করতে চেয়েছিল এবং আমাকে বাস্তব জাভা ব্যবহার করতে হবে:

//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, সুতরাং আমি এই আদেশের আগেই থামলাম।

নিম্নলিখিত কমান্ডগুলি এই অন্যান্য টিউটোরিয়াল থেকে এসেছে । আমি জাভা ইনস্টল করার পরে পয়েন্টে শুরু করেছি:

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

টমক্যাট.সার্ভিসের জন্য কাজ ব্যর্থ। বিশদগুলির জন্য 'systemctl স্থিতি tomcat.service' এবং 'জার্নাল্টেল-এক্সএন' দেখুন। # sudo systemctl সক্ষম tomcat.service ln -s '/etc/systemd/system/tomcat.service' '/etc/systemd/system/m Multi-user.target.wants/tomcat.service' # sudo systemctl সক্ষম টমক্যাট

# 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- র, যেমন প্রস্তাবিত এই অন্য পোস্ট , কাজ করে নি।


সম্পাদনাগুলি:


@ ব্রামের পরামর্শ অনুসারে, আমি কনফিগার ফাইলটি নিম্নলিখিতটিতে পরিবর্তন করেছি, তবে এখনও একই ত্রুটি পাচ্ছি:

# 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

এছাড়াও, চ্যাটে @ জেফচাল্লারের মন্তব্য অনুসারে, আমি নীচের মতো স্থানীয়ভাবে শুরু করতে টমক্যাট পেতে সক্ষম হয়েছি:

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

সুতরাং এই ওপিতে সমস্যাটি সিস্টেমড কনফিগারেশনের সাথে রয়েছে বলে মনে হয়। আমি কীভাবে এটি ঠিক করতে পারি?


টমক্যাট লগ ফাইলটিতে কোনও ত্রুটি? যদি আমি সঠিকভাবে মনে করি তবে ফাইলটিকে বলা হয় ক্যাটালিনা.আউট বা এর মতো কিছু।
ব্রাম

টমকেট লগসের পরে sudo systemctl start tomcat.serviceএকগুচ্ছ অনুমতি ত্রুটিগুলি অস্বীকার করে যা শত শত লাইন নেয়।
কোডমেড

উত্তর:


16

আমার একই সমস্যা ছিল, এটি দ্বারা স্থির করে:

  1. সম্পূর্ণ tomcatডিরেক্টরিতে টমক্যাট ব্যবহারকারীকে মালিকানা দেওয়া :

    cd /opt && sudo chown -R tomcat tomcat/
    
  2. এবং /etc/systemd/system/tomcat.service এ লাইনের নীচে মন্তব্য করছি:

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

1
টমক্যাটকে পুরো ফোল্ডারের মালিক বানানো কি নিরাপদ? আমি ভেবেছিলাম আমরা যতটা সম্ভব অ্যাক্সেস সীমাবদ্ধ করতে চাই?
ব্যবহারকারী3203425

এখনই পরীক্ষা করার জন্য আমার এই সেটআপটি নেই, তবে আমি মনে করি যে সমস্যাটি ছিল: "sudo chown -R tomcat work / temp / logs /"। আমি বলব এটির জন্য "বিন /" এরও মালিকানা প্রয়োজন।
ব্যবহারকারী 2968675

প্রথম পদক্ষেপটি একা আমার জন্য এটি করেছে বলে মনে হয়। পদক্ষেপ 2-এ রেখাটি ঠিক কী করে?
কিম্বারলি ডব্লিউ

আপনি ঠিক বলেছেন, এই বিশেষ সমস্যাটি সমাধানের জন্য 1 ম পদক্ষেপই যথেষ্ট। পদক্ষেপ 2 জাভা হিপ আকার এবং আবর্জনা সংগ্রহের ধরণ সেট করে। আমার পরিবেশগত বৈশিষ্ট্যের কারণে আমার এটির প্রয়োজন ছিল তবে বেশিরভাগ লোক সম্ভবত এটি করবে না।
ব্যবহারকারী 2968675

আমার ক্ষেত্রে শুধুমাত্র cd /opt && sudo chown -R tomcat tomcat/কাজ। কারণ আমি মালিককে সিস্টেম ব্যবহারকারী হিসাবে পরিবর্তন করেছি এবং মালিক হিসাবে ফিরে টমক্যাট তৈরি করতে ভুলে গেছি
imdzeeshan

2

যেহেতু আপনি জাভা কোনও অ-ডিফল্ট স্থানে ইনস্টল করেছেন তাই আপনাকে টমক্যাটটি কোথায় খুঁজে পাওয়া উচিত তা বলতে হবে।

আপনি যে ইউনিট ফাইল পোস্ট করেছেন তাতে জাভাআহোমটি / usr / lib / jvm / jre তে সেট করা আছে তবে জাভা ইনস্টলেশন সম্পর্কে বিভাগে JAVA_Home হল /opt/jdk1.8.0_60।

আপনি যদি ট্যামকাট সিস্টেমড ইউনিট ফাইলে JAVA_Home সেট করেন তবে আমি বিশ্বাস করি এটি কার্যকর হবে।

এছাড়াও ইউনিট ফাইলটি ব্যবহারকারী টমক্যাট নির্দিষ্ট করে। আপনি যখন এটি ম্যানুয়ালি শুরু করবেন আপনি এটি রুট হিসাবে শুরু করবেন। সমস্যাটি সম্ভবত টমক্যাট একটি সুবিধাযুক্ত বন্দরটি খোলার চেষ্টা করে। শুরু স্ক্রিপ্টটি কি মূল হিসাবে টমক্যাট শুরু করে? অথবা এটি ব্যবহারকারী টমক্যাট হিসাবে প্রক্রিয়াগুলি শুরু করে? ইউনিট ফাইল থেকে ব্যবহারকারী এবং গোষ্ঠী সরানো আপনার কমান্ড লাইন প্রচেষ্টা একই আচরণ ট্রিগার করা উচিত।


নিম্নলিখিত ত্রুটিটি কীভাবে ঠিক করবেন: tomcat8.service এর জন্য কাজ ব্যর্থ হয়েছে কারণ ত্রুটি কোড সহ নিয়ন্ত্রণ প্রক্রিয়াটি প্রস্থান করেছে। বিশদগুলির জন্য "systemctl স্থিতি tomcat8.service" এবং "জার্নাল্টেল-এক্স" দেখুন। invoke-rc.d: initscript tomcat8, ক্রিয়া "শুরু" ব্যর্থ হয়েছে। -> উবুন্টু ন্যানো জন্য / 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জেভিএম প্রক্রিয়া কার্যনির্বাহী ডিরেক্টরি ছেড়ে দেয় /যা মোতায়েন অ্যাপ্লিকেশনগুলির জন্য প্রাসঙ্গিক নাও হতে পারে।

আমি উত্থাপন আপনি স্থানান্তর 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.