zoukankan      html  css  js  c++  java
  • Linux 笔记 #04# Installing Tomcat 8 on Debian

    失败一失败二  ※ 失败三 ※

    1- 确认机型:

    root@iZwz:~# lsb_release -a
    LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch
    Distributor ID:    Debian
    Description:    Debian GNU/Linux 8.8 (jessie)
    Release:    8.8
    Codename:    jessie

    2- 确保安装了 tomcat 运行所需要的 JRE :

    java -version

    3- 确保安装了 wget  和 unzip (辅助后续安装):

    apt-get update && apt-get upgrade
    
    apt-get install unzip wget

    4- 创建一个单独的系统用户来跑 tomcat (网站建议),通过以下命令:

    useradd -r tomcat --shell /bin/false
    shell进程是执行其它进程的进程,但在执行一个命令时,shell进程会指示内核把指定的程序作为另一个进程分开执行,并将输出写到终端。
    通过命令选项,我们可以修改命令执行的行为。命令行选项可以分为短命令行选项和长命令行选项两种。短命令行选项是由字母组成,长命令行选项是由单词组成。短命令行选项在选项前使用单横杠“-”,长命令行选项前使用双横杠“--”。如果选项后面需要输入选项的参数,短命令行选项和参数之间使用空格分隔,而长命令行选项使用等号“=”连接选项和参数。
    通过在命令后面添加选项“--help”、“-h”或“-?”,我们可以获得一个命令的帮助信息。 --- by 洪军不怕远征难

    What does “--” (double-dash) mean? (also known as “bare double dash”) <-- 不相关的笔记 :p

    5- 从网站下载 tomcat 到 /opt 目录下,和 windows 其实是一样的。

    wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.41/src/apache-tomcat-8.0.41-src.tar.gz -P /opt

     6- 下载好后解压缩(到这里感觉都装好了 = =)

    cd /opt
    tar -zxf apache-tomcat-8.0.41.tar.gz

     7- 创建汤姆猫的“符号链接”(?)并设置适当的所有权

    ln -s /opt/apache-tomcat-8.0.41 /opt/tomcat-latest
    chown -hR tomcat: /opt/tomcat-latest /opt/apache-tomcat-*

    弄好后在 /opt 目录下是这个情况:

     8- 创建一个系统初始化文件以便  start/restart/stop 汤姆猫:

    nano /etc/systemd/system/tomcat.service

    copy 下面的内容:

    [Unit]
    Description=Tomcat8
    After=network.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    
    Environment=CATALINA_PID=/opt/tomcat-latest/tomcat8.pid
    Environment=TOMCAT_JAVA_HOME=/usr/bin/java
    Environment=CATALINA_HOME=/opt/tomcat-latest
    Environment=CATALINA_BASE=/opt/tomcat-latest
    Environment=CATALINA_OPTS=
    Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:MaxPermSize=128m -Xms512m -Xmx512m"
    
    ExecStart=/opt/tomcat-latest/bin/startup.sh
    ExecStop=/bin/kill -15 $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    linux下 nano 在编辑状态下退出请按Ctrl+X,会有两种情形: 如果文件未修改,直接退出; 如果修改了文件,下面会询问是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。如果输入了Y,下一步会提示输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则 ... (来自百度知道 happygrid)

     9- 最后几个命令

    systemctl daemon-reload # 重载所有修改过的配置文件
    systemctl restart tomcat.service # 文章里是直接 restart tomcat 但是我用了报错。。后来发现其实效果是一样的
    systemctl enable tomcat

    ------------------------------------------------------------------------------------------------------------------------------------------------------

     出点差错。。抛点 bug 才比较有真实感。

    按流程走下来,在 restart 和 enable 时都抛出了下面的提示(我的主机是这样 --- 囧):

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

     tomcat 8 will not start after initial install

    按照上面解决方案做抛出这个错误信息 Error message 'sudo: unable to resolve host <USER>' 我直接到阿里云控制台改HostName就解决了。

    成功输入上面的命令 restart 还是没用,于是换教程 2 。

    ------------------------------------------------------------------------------------------------------------------------------------------------------

     先决条件:

    root@xkfx:/usr/lib/jvm/java-8-oracle# ls -lsh
    total 26M
    4.0K drwxr-xr-x 2 root root 4.0K Jan 14 00:53 bin
    4.0K -r--r--r-- 1 root root 3.2K Jan 14 00:53 COPYRIGHT
    4.0K drwxr-xr-x 4 root root 4.0K Jan 14 00:53 db
    4.0K drwxr-xr-x 3 root root 4.0K Jan 14 00:53 include
    5.0M -rwxr-xr-x 1 root root 5.0M Jan 14 00:53 javafx-src.zip
    4.0K drwxr-xr-x 5 root root 4.0K Jan 14 00:53 jre
    4.0K drwxr-xr-x 5 root root 4.0K Jan 14 00:53 lib
    4.0K -r--r--r-- 1 root root   40 Jan 14 00:53 LICENSE
    4.0K drwxr-xr-x 4 root root 4.0K Jan 14 00:53 man
    4.0K -r--r--r-- 1 root root  159 Jan 14 00:53 README.html
    4.0K -rw-r--r-- 1 root root  526 Jan 14 00:53 release
     21M -rw-r--r-- 1 root root  21M Jan 14 00:53 src.zip
     64K -rwxr-xr-x 1 root root  63K Jan 14 00:53 THIRDPARTYLICENSEREADME-JAVAFX.txt
    144K -r--r--r-- 1 root root 142K Jan 14 00:53 THIRDPARTYLICENSEREADME.txt
    root@xkfx:/usr/lib/jvm/java-8-oracle# echo $JAVA_HOME 
    /usr/lib/jvm/java-8-oracle

     先删除上面创建的用户:

    root@xkfx:/# userdel tomcat
    root@xkfx:/# who # 查看当前登陆用户
    root     pts/0        2018-02-23 10:13 (*******)

     1

    root@xkfx:/# cd /opt/
    root@xkfx:/opt# ls -lsh
    total 4.8M
    4.0K drwxr-xr-x 9 999 999 4.0K Feb 22 21:16 apache-tomcat-8.0.41-src
    4.8M -rw-r--r-- 1 999 999 4.8M Jan 19  2017 apache-tomcat-8.0.41-src.tar.gz
       0 lrwxrwxrwx 1 999 999   25 Feb 22 21:19 tomcat-latest -> /opt/apache-tomcat-8.0.41
    root@xkfx:/opt# mv apache-tomcat-8.0.41-src tomcat8
    root@xkfx:/opt# ls -lsh
    total 4.8M
    4.8M -rw-r--r-- 1 999 999 4.8M Jan 19  2017 apache-tomcat-8.0.41-src.tar.gz
    4.0K drwxr-xr-x 9 999 999 4.0K Feb 22 21:16 tomcat8
       0 lrwxrwxrwx 1 999 999   25 Feb 22 21:19 tomcat-latest -> /opt/apache-tomcat-8.0.41

     2

    root@xkfx:/opt# sudo useradd -s /sbin/nologin -d /opt/tomcat/temp tomcat
    root@xkfx:/opt# sudo chown -R tomcat:tomcat /opt/tomcat8
    root@xkfx:/opt# pwd
    /opt
    root@xkfx:/opt# ls -lsh
    total 4.8M
    4.8M -rw-r--r-- 1    999    999 4.8M Jan 19  2017 apache-tomcat-8.0.41-src.tar.gz
    4.0K drwxr-xr-x 9 tomcat tomcat 4.0K Feb 22 21:16 tomcat8
       0 lrwxrwxrwx 1    999    999   25 Feb 22 21:19 tomcat-latest -> /opt/apache-tomcat-8.0.41

     3

    sudo vim /etc/init.d/tomcat8
    #!/bin/bash
    #
    #https://wiki.debian.org/LSBInitScripts
    ### BEGIN INIT INFO
    # Provides:          tomcat8
    # Required-Start:    $local_fs $remote_fs $network
    # Required-Stop:     $local_fs $remote_fs $network
    # Should-Start:      $named
    # Should-Stop:       $named
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start Tomcat.
    # Description:       Start the Tomcat servlet engine.
    ### END INIT INFO
    
    export CATALINA_HOME=/opt/tomcat8
    export JAVA_HOME=/opt/jdk/jdk1.8.0_66
    export PATH=$JAVA_HOME/bin:$PATH
    
    start() {
     echo "Starting Tomcat 8..."
     /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
    }
    stop() {
     echo "Stopping Tomcat 8..."
     /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
    }
    case $1 in
      start|stop) $1;;
      restart) stop; start;;
      *) echo "Usage : $0 <start|stop|restart>"; exit 1;;
    esac
    
    exit 0

     4

    root@xkfx:/opt# sudo chmod 755 /etc/init.d/tomcat8
    root@xkfx:/opt# ls -lsh /etc/init.d/tomcat8
    4.0K -rwxr-xr-x 1 root root 859 Feb 23 11:18 /etc/init.d/tomcat8
    root@xkfx:/opt# sudo update-rc.d tomcat8 defaults # Install the script.

     测试后没反应,想起 copy 来的脚本没有修改:

     

     改好后还是没有反应!!!

    试访问了一下也没有用。。。。。。。。。。

    所以 估计 是 脚本根本没跑

    How do services in Debian work, and how can I manage them?

    换了种方式 有点反应了:

     tomcat 用户是无法登陆的:

    root@xkfx:~# su tomcat 
    Cannot execute /sbin/nologin: No such file or directory

    (su = switch user)

     认真看一下发现教程二其实是针对 debian 7 的

    于是我干脆找了个 debian 9 的教程 应该和 8.8 更相近。

     1

    wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M21/src/apache-tomcat-9.0.0.M21-src.tar.gz
    root@xkfx:/opt# ls -lsh
    total 9.5M
    4.8M -rw-r--r-- 1    999    999 4.8M Jan 19  2017 apache-tomcat-8.0.41-src.tar.gz
    4.8M -rw-r--r-- 1 root   root   4.8M Jun 20  2017 apache-tomcat-9.0.0.M21-src.tar.gz
    4.0K drwxr-xr-x 9 tomcat tomcat 4.0K Feb 22 21:16 tomcat8
    useradd -rs /bin/false tomcat # 删除重新添加
    root@xkfx:/opt# mkdir /opt/tomcat
    root@xkfx:/opt# tar -C /opt/tomcat/ -zxf apache-tomcat-9.0.0.M21-src.tar.gz 
    root@xkfx:/opt# ln -s /opt/tomcat/apache-tomcat-9.0.0.M21-src/ /opt/tomcat/tomcat-latest # 可选的,当更新汤姆猫的时候让事情变得容易
    root@xkfx:/opt# chown -R tomcat.tomcat /opt/tomcat/tomcat-latest /opt/tomcat/apache-tomcat-9.0.0.M21-src/ # Make our previously created user tomcat an owner of the entire directories
    root@xkfx:/opt/tomcat# ls -lsh
    total 4.0K
    4.0K drwxr-xr-x 9 tomcat tomcat 4.0K Feb 26 10:41 apache-tomcat-9.0.0.M21-src
       0 lrwxrwxrwx 1 tomcat tomcat   40 Feb 26 10:43 tomcat-latest -> /opt/tomcat/apache-tomcat-9.0.0.M21-src/

     Note, when upgrading tomcat, simply unlink the current symbolic link and recreate new as shown in previous steps.

    2

    干脆重装一下 JDK

    root@xkfx:/opt# ls
    jdk-8u131-linux-x64.tar.gz  tomcat
    root@xkfx:/opt# mkdir /opt/java-jdk
    root@xkfx:/opt# tar -C /opt/java-jdk -zxf jdk-8u131-linux-x64.tar.gz
    root@xkfx:/opt# update-alternatives --install /usr/bin/java java /opt/java-jdk/jdk1.8.0_131/bin/java 1
    root@xkfx:/opt# update-alternatives --install /usr/bin/javac javac /opt/java-jdk/jdk1.8.0_131/bin/javac 1
    root@xkfx:/opt# java -version
    java version "1.8.0_151"
    Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

     没改成,重新设置:

    root@xkfx:/opt# sudo update-alternatives --config java
    There are 3 choices for the alternative java (providing /usr/bin/java).
    
      Selection    Path                                            Priority   Status
    ------------------------------------------------------------
      0            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      auto mode
      1            /opt/java-jdk/jdk1.8.0_131/bin/java              1         manual mode
      2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
    * 3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode
    
    Press enter to keep the current choice[*], or type selection number: 1
    update-alternatives: using /opt/java-jdk/jdk1.8.0_131/bin/java to provide /usr/bin/java (java) in manual mode
    root@xkfx:/opt# java -version
    java version "1.8.0_131"
    Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

     同样的方式改 javac

    3

    root@xkfx:/opt# vim /etc/systemd/system/tomcat.service
    [Unit]
    Description=Tomcat9
    After=network.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    
    Environment=CATALINA_PID=/opt/tomcat/tomcat-latest/tomcat8.pid
    Environment=TOMCAT_JAVA_HOME=/usr/bin/java
    Environment=CATALINA_HOME=/opt/tomcat/tomcat-latest
    Environment=CATALINA_BASE=/opt/tomcat/tomcat-latest
    Environment=CATALINA_OPTS=
    Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:MaxPermSize=128m -Xms512m -Xmx512m"
    
    ExecStart=/opt/tomcat/tomcat-latest/bin/startup.sh
    ExecStop=/bin/kill -15 $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    root@xkfx:/# systemctl daemon-reload
    root@xkfx:/# systemctl start tomcat
    Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.
    root@xkfx:/# systemctl enable tomcat
    root@xkfx:/# systemctl status tomcat.service
     tomcat.service - Tomcat9
       Loaded: loaded (/etc/systemd/system/tomcat.service; enabled)
       Active: failed (Result: exit-code) since Mon 2018-02-26 11:07:26 CST; 12min ago
    
    Feb 26 11:07:26 xkfx systemd[1]: Starting Tomcat9...
    Feb 26 11:07:26 xkfx systemd[5357]: Failed at step EXEC spawning /opt/tomcat/tomcat-latest/b...nied
    Feb 26 11:07:26 xkfx systemd[1]: tomcat.service: control process exited, code=exited status=203
    Feb 26 11:07:26 xkfx systemd[1]: Failed to start Tomcat9.
    Feb 26 11:07:26 xkfx systemd[1]: Unit tomcat.service entered failed state.
    
    Warning: Unit file changed on disk, 'systemctl daemon-reload' recommended.
    Hint: Some lines were ellipsized, use -l to show in full.
    Feb 26 11:07:26 xkfx systemd[5357]: Failed at step EXEC spawning /opt/tomcat/tomcat-latest/bin/startup.sh: Permission denied
    root@xkfx:/# ls -lsh /opt/tomcat/tomcat-latest/bin/startup.sh
    4.0K -rw-r--r-- 1 tomcat tomcat 1.9K May  5  2017 /opt/tomcat/tomcat-latest/bin/startup.sh

    持续 debug 

    root@xkfx:/# chmod -R u+x /opt/tomcat/tomcat-latest
    root@xkfx:/# ls -lsh /opt/tomcat/tomcat-latest/bin/startup.sh
    4.0K -rwxr--r-- 1 tomcat tomcat 1.9K May  5  2017 /opt/tomcat/tomcat-latest/bin/startup.sh
    root@xkfx:/# systemctl start tomcat
    Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.
    root@xkfx:/# systemctl status tomcat.service -l
     tomcat.service - Tomcat9
       Loaded: loaded (/etc/systemd/system/tomcat.service; enabled)
       Active: failed (Result: exit-code) since Mon 2018-02-26 12:45:22 CST; 27s ago
      Process: 5509 ExecStart=/opt/tomcat/tomcat-latest/bin/startup.sh (code=exited, status=2)
    
    Feb 26 12:45:22 xkfx startup.sh[5509]: touch: cannot touch ‘/opt/tomcat/tomcat-latest/logs/catalina.out’: No such file or directory
    Feb 26 12:45:22 xkfx systemd[1]: tomcat.service: control process exited, code=exited status=2
    Feb 26 12:45:22 xkfx systemd[1]: Failed to start Tomcat9.
    Feb 26 12:45:22 xkfx systemd[1]: Unit tomcat.service entered failed state.
    Feb 26 12:45:22 xkfx startup.sh[5509]: /opt/tomcat/tomcat-latest/bin/catalina.sh: 434: /opt/tomcat/tomcat-latest/bin/catalina.sh: cannot create /opt/tomcat/tomcat-latest/logs/catalina.out: Directory nonexistent
    root@xkfx:/opt/tomcat/tomcat-latest# mkdir logs
    root@xkfx:/opt/tomcat/tomcat-latest# systemctl start tomcat
    Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.
    
    root@xkfx:/opt/tomcat/tomcat-latest# systemctl status tomcat.service -l
    ...
    Feb 28 11:03:03 xkfx startup.sh[7841]: touch: cannot touch ‘/opt/tomcat/tomcat-latest/logs/catalina.out’: Permission denied
    Feb 28 11:03:03 xkfx systemd[1]: tomcat.service: control process exited, code=exited status=2
    Feb 28 11:03:03 xkfx systemd[1]: Failed to start Tomcat9.
    Feb 28 11:03:03 xkfx systemd[1]: Unit tomcat.service entered failed state.
    Feb 28 11:03:03 xkfx startup.sh[7841]: /opt/tomcat/tomcat-latest/bin/catalina.sh: 434: /opt/tomcat/tomcat-latest/bin/catalina.sh: cannot create /opt/tomcat/tomcat-latest/logs/catalina.out: Permission denied
     
    
    root@xkfx:/opt# chmod -R 777 tomcat/tomcat-latest
    
    root@xkfx:/opt# systemctl daemon-reload
    
    root@xkfx:/opt# systemctl start tomcat
    root@xkfx:/opt# systemctl enable tomcat
    root@xkfx:/opt# systemctl status tomcat.service -l
    ● tomcat.service - Tomcat9
    Loaded: loaded (/etc/systemd/system/tomcat.service; enabled)
    Active: failed (Result: exit-code) since Wed 2018-02-28 11:14:15 CST; 18s ago
    Main PID: 7990 (code=exited, status=1/FAILURE)
    
    Feb 28 11:14:15 xkfx startup.sh[7977]: Existing PID file found during start.
    Feb 28 11:14:15 xkfx startup.sh[7977]: Removing/clearing stale PID file.
    Feb 28 11:14:15 xkfx startup.sh[7977]: Tomcat started.
    Feb 28 11:14:15 xkfx systemd[1]: Started Tomcat9.
    Feb 28 11:14:15 xkfx systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
    Feb 28 11:14:15 xkfx systemd[1]: Unit tomcat.service entered failed state.
    root@xkfx:/opt# ss -ant | grep 8080

    感觉是相关问题:

    Systemd tomcat.service failed with no errors

    还是没有用。。。

     

    不创建新用户跑 tomcat

    root@xkfx:/opt/tomcat# ls -lsh
    total 4.0K
    4.0K drwxr-xr-x 9 root root 4.0K Feb 28 14:43 apache-tomcat-8.5.28
       0 lrwxrwxrwx 1 root root   20 Feb 28 14:45 tomcat-lastest -> apache-tomcat-8.5.28
    vim ~/.bashrc # export CATALINA_HOME=/path/to/tomcat
    $CATALINA_HOME/bin/startup.sh
    ss -ant | grep 8080

    无人访问:

     有人访问:

     

    完成。


    参考资料:

    How To Install and Configure Apache Tomcat on a Debian Server

    How to Install Apache Tomcat 8 On Debian(教程二)

    How to install Tomcat 8 on Debian 8(教程一)

  • 相关阅读:
    出差公干,人在北京,欢迎骚扰
    义乌江东货运市场托运指南
    哥伦比亚拖鞋批发,60双起批发仅售11,现货3240双,义乌给力商务有限公司诚意供货,发韵达或指定物流
    员工心态 老板心态 学生心态
    淘宝卖家
    开源问题系统
    当一回"青年导师"
    义乌工商学院到给力百货有多远,怎么走?
    我也八卦,姚晨和它男人离婚的事,意料之外,情理之中,吼吼,我是在迅雷看看的评论中看到的
    新浪车模程序写得很有意思
  • 原文地址:https://www.cnblogs.com/xkxf/p/8460019.html
Copyright © 2011-2022 走看看