Jsvc安装,配置 常规用户使用tomcat的80端口

Jsvc安装

一、下载安装包,地址如下:

http://commons.apache.org/proper/commonsdaemon/download_daemon.cgi

二、安装步骤,参考链接

http://commons.apache.org/proper/commons-daemon/jsvc.html

1. 解压文件commons-daemon-1.0.15-src.tar.gz,进入到目录commons-daemon-1.0.15-src/src/native/unix

2.安装以下工具

$sudo apt-get install autoconf

如果GCC, Make, SDK等工具未安装,则一次安装。

3. Buildingfrom source

$ shsupport/buildconf.sh

4. Buildingfrom a release tarball.

$ export JAVA_HOME

$ ./configure

或者用以下命令代替以上两个命令(效果一样)

$./configure --with-Java=/usr/java(这里是JAVA_HOME的路径)

5.开始编译,成功后可在commons-daemon-1.0.15-src/src/native/unix目录下看到jsvc工具

$ make

6. 检查jsvc是否安装成功,出现相关的帮助信息则安装成功

$./jsvc –help

7、编译完成后出现jsvc文件夹,复制jsvc到/usr/lib/tomcat/apache-tomcat-xxxx/bin目录下面

[[email protected] ~]# cp jsvc /usr/lib/tomcat/apache-tomcat-xxxx/bin

8、在/etc/init.d/(注意不是init文件夹)目录下编写tomcat6启动服务配置文件。

[[email protected] ~]#cd /etc/init.d/

[[email protected] ~]# vi tomcat

#!/bin/sh
# chkconfig 2345 90 15
# description Tomcat-en Manager
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# -----------------------------------------------------------------------------
# Commons Daemon wrapper script.
#
# $Id: daemon.sh 1202058 2011-11-15 06:37:12Z mturk $
# -----------------------------------------------------------------------------
#
# resolve links - $0 may be a softlink
JAVA_HOME=/usr/java/jdk1.7.0_79
CATALINA_HOME=/opt/apache-tomcat-7.0.69
DAEMON_HOME=$CATALINA_HOME/bin
TOMCAT_USER=op
CATALINA_BASE=$CATALINA_HOME
CATALINA_OPTS="-server -XX:MaxPermSize=512m -XX:MaxNewSize=512m -Xmx2048m"
proc="Tomcat 7.0.69" #注意这里的名字将会在启动或停止的时候显示(标识名称)
ARG0="$0"
while [ -h "$ARG0" ]; do
  ls=`ls -ld "$ARG0"`
  link=`expr "$ls" : ‘.*-> .∗$‘`
  if expr "$link" : ‘/.*‘ > /dev/null; then
    ARG0="$link"
  else
    ARG0="`dirname $ARG0`/$link"
  fi
done
DIRNAME="`dirname $ARG0`"
PROGRAM="`basename $ARG0`"
while [ ".$1" != . ]
do
  case "$1" in
    --java-home )
        JAVA_HOME="$2"
        shift; shift;
        continue
    ;;
    --catalina-home )
        CATALINA_HOME="$2"
        shift; shift;
        continue
    ;;
    --catalina-base )
        CATALINA_BASE="$2"
        shift; shift;
        continue
    ;;
    --catalina-pid )
        CATALINA_PID="$2"
        shift; shift;
        continue
    ;;
    --tomcat-user )
        TOMCAT_USER="$2"
        shift; shift;
        continue
    ;;
    * )
        break
    ;;
  esac
done
# OS specific support (must be ‘true‘ or ‘false‘).
cygwin=false;
darwin=false;
case "`uname`" in
    CYGWIN*)
        cygwin=true
        ;;
    Darwin*)
        darwin=true
        ;;
esac

# Use the maximum available, or set MAX_FD != -1 to use that
test ".$MAX_FD" = . && MAX_FD="maximum"
# Setup parameters for running the jsvc
#
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
# Set JAVA_HOME to working JDK or JRE
# If not set we‘ll try to guess the JAVA_HOME
# from java binary if on the PATH
#
if [ -z "$JAVA_HOME" ]; then
    JAVA_BIN="`which java 2>/dev/null || type java 2>&1`"
    test -x "$JAVA_BIN" && JAVA_HOME="`dirname $JAVA_BIN`"
    test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
else
    JAVA_BIN="$JAVA_HOME/bin/java"
fi

# Only set CATALINA_HOME if not already set
test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
test ".$JSVC" = . && JSVC="$CATALINA_BASE/bin/jsvc"

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

# Add on extra jar files to CLASSPATH
test ".$CLASSPATH" != . && CLASSPATH="${CLASSPATH}:"
CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"

test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"

# Add tomcat-juli.jar to classpath
# tomcat-juli.jar can be over-ridden per instance
if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
  CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar"
else
  CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
fi
# Set juli LogManager config file if it is present and an override has not been issued
if [ -z "$LOGGING_CONFIG" ]; then
  if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
  else
    # Bugzilla 45585
    LOGGING_CONFIG="-Dnop"
  fi
fi

test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"

# Set -pidfile
test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"

# Increase the maximum file descriptors if we can
if [ "$cygwin" = "false" ]; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ "$?" -eq 0 ]; then
        # Darwin does not allow RLIMIT_INFINITY on file soft limit
        if [ "$darwin" = "true" -a "$MAX_FD_LIMIT" = "unlimited" ]; then
            MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
        fi
        test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT"
        ulimit -n $MAX_FD
        if [ "$?" -ne 0 ]; then
            echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# ----- Execute The Requested Command -----------------------------------------
case "$1" in
    run     )
      shift
      "$JSVC" $*       -java-home "$JAVA_HOME"       -pidfile "$CATALINA_PID"       -wait 10       -nodetach       -outfile "&1"       -errfile "&2"       -classpath "$CLASSPATH"       "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS       -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"       -Dcatalina.base="$CATALINA_BASE"       -Dcatalina.home="$CATALINA_HOME"       -Djava.io.tmpdir="$CATALINA_TMP"       -Dfile.encoding="UTF-8"       $CATALINA_MAIN
      echo -n "start $proc success."
      exit $?
    ;;
    start   )
      "$JSVC"       -java-home "$JAVA_HOME"       -user $TOMCAT_USER       -pidfile "$CATALINA_PID"       -wait 10       -outfile "$CATALINA_OUT"       -errfile "&1"       -classpath "$CLASSPATH"       "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS       -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"       -Dcatalina.base="$CATALINA_BASE"       -Dcatalina.home="$CATALINA_HOME"       -Djava.io.tmpdir="$CATALINA_TMP"       -Dfile.encoding="UTF-8"       $CATALINA_MAIN
      echo -n "start $proc success."
      exit $?
    ;;
    stop    )
      "$JSVC" $JSVC_OPTS       -stop       -pidfile "$CATALINA_PID"       -classpath "$CLASSPATH"       -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"       -Dcatalina.base="$CATALINA_BASE"       -Dcatalina.home="$CATALINA_HOME"       -Djava.io.tmpdir="$CATALINA_TMP"       $CATALINA_MAIN
      echo -n "Stop $proc success."
      exit $?
    ;;
    version  )
      "$JSVC"       -java-home "$JAVA_HOME"       -pidfile "$CATALINA_PID"       -classpath "$CLASSPATH"       -errfile "&2"       -version       -check       $CATALINA_MAIN
      if [ "$?" = 0 ]; then
        "$JAVA_BIN"         -classpath "$CATALINA_HOME/lib/catalina.jar"         org.apache.catalina.util.ServerInfo
      fi
      exit $?
    ;;
    *       )
      echo "Unknown command: \`$1‘"
      echo "Usage: $PROGRAM ( commands ... )"
      echo "commands:"
      echo "  run               Start Tomcat without detaching from console"
      echo "  start             Start Tomcat"
      echo "  stop              Stop Tomcat"
      echo "  version           What version of commons daemon and Tomcat"
      echo "                    are you running?"
      exit 1
    ;;
esac

8、录入完成,按Esc键。输入: wq(vi下输入:x)保存退出并赋予/etc/init.d/tomcat文件可执行权限

[[email protected]~]# chmod +x /etc/init.d/tomcat

------------------添加服务-----------------------------------------

9、[[email protected]~] #chkconfig --add tomcat       ##添加tomcat服务

若提示chkconfig命令未找到,则需要执行sudo apt-get install chkconfig

参考网址:http://blog.sina.com.cn/s/blog_66fb0c830100xm5y.html

PS:chkconfig是redhat公司遵循gpl规则所开发的程序在ubuntu上默认是不支持chkconfig命令的,但可以自己安装。Ubuntu下是使用sysv-rc-conf来代替chkconfig。

sudo apt-get install sysv-rc-conf

安装完成后,直接运行sudo sysv-rc-conf命令即可打开该管理软件,如下图所示:

操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择, “X”表示开启该服务。 用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。

Ubuntu 的系统运行级别:

0 系统停机状态

1 单用户或系统维护状态

2~5 多用户状态

6 重新启动

Ubuntu下可以直接加入启动程序,例如把 /etc/init/tomcat 加入到系统自动 启动列表中:

#sudo sysv-rc-conf tomcat on

想关闭tomcat的开机自动启动,只需#sudo mv /etc/init.d/tomcat(注意将配置脚本备份,否则删除后就跪了。)就可以了。

参考网址:http://www.linuxidc.com/Linux/2012-10/73123p2.htm

10、[[email protected]~] #chkconfig –list |grep tomcat    ##查看tomcat服务是否被添加

--------------------启动服务---------------------------------------------

11、[[email protected]~] # service tomcat  start            ##启动tomcat服务

执行以上命令后,出现如下错误提示:

按照网上的说法,添加软连接ln -s /lib/lsb/init-functions /etc/rc.d/init.d/functions,继续提示错误,原因很明显:软连接的文件夹压根就不存在!

继续搜索,发现以下说法:

在Linux中,/etc/init.d 和 /etc/rc.d/init.d这两个目录,都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。

在制作服务脚本的过程中,使用了Linux的两个版本,CentOS和Ubuntu,需要在两个版本中都可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个目录,所以,为了保持同一种服务在CentOS和Ubuntu使用的统一性,将服务脚本(注:服务脚本在两个不同版本中是不同的)都放在 /etc/init.d 目录下,最终达到的效果是相同的。

需要说明的是:在CentOS和Ubuntu两个版本中,除了服务脚本放置的目录是相同的,服务脚本的编写及服务配置都是不同的。比如CentOS使用Chkconfig进行配置,而Ubuntu使用sysv-rc-conf进行配置。

查看/etc/rc2.d/里面的apache和MySQL启动脚本,通常都是两个阿拉伯数字后再接一个英文字母,再加脚本名称,例如S20tomcat。英文字母是S的都是会自动启动的,K则相反。所以只要找到apache和mysql的启动脚本,把S改成K就可以了。

以下命令实现开机启动或不启动某服务(真的太像chkconfig了)

sudo sysv-rc-conf 服务名 on(off)

12、[[email protected]~] # sudo sysv-rc-conf  off            ##停止tomcat服务

13、[[email protected]~] #sudo sysv-rc-conf --list tomcat  ##查看tomcat服务启动状态

命令执行效果如下:

Linux 系统主要启动步骤:

1. 读取MBR 的信息,启动Boot Manager Windows使用NTLDR作为Boot Manager,如果您的系统中安装多个版本的 Windows,您就需要在NTLDR 中选择您要进入的系统。Linux 通常使用功能强大,配置灵活的GRUB作为Boot Manager。

2. 加载系统内核,启动init 进程.init 进程是Linux 的根进程,所有的系统进程都是它的子进程。

3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。

通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。例如您设定的运行级别为3,那么它对应的启动目录为/etc/rc3.d/ 。

4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow 服务器xorgXwindow 为Linux 下的图形用户界面系统。

5. 启动登录管理器,等待用户登录Ubuntu 系统默认使用GDM 作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/文件夹中找到一个名为S13gdm 的链接)

2.编写服务启动类

package com.sohu.jsvc.test;

public class TestJsvc {

public static void main(String args[]) {

System.out.println("execute main method!");

}

public void init() throws Exception {

System.out.println("execute init method!");

}

public void init(String[] args) throws Exception{

System.out.println("execute init(args) method");

}

public void start() throws Exception {

System.out.println("execute start method!");

}

public void stop() throws Exception {

System.out.println("execute stop method!");

}

public void destroy() throws Exception{

System.out.println("execute destroy method!");

}

}

main方法可以去掉,但是init(String[] args),start(),stop(),destroy()方法不能少,服务在启动时会先调用init(String[] args)方法,然后调用start()方法,在服务停止时会首先调用stop()方法,然后调用destroy() 方法.

3.把这个类打包成webservice_engine.jar放到/usr/lib目录下

4.编写启动服务的脚本 webservice_engineJSVC

#!/bin/sh

# myjsvc This shell script takes care of starting and stopping

#

# chkconfig: - 60 50

# description: tlstat stat is a stat data daemon.

# processname: webservice_engineJSVC

# Source function library.

. /etc/rc.d/init.d/functions

RETVAL=0

prog="webservice_engineJSVC"

# jdk的安装目录

JAVA_HOME=/usr/lib/java/jdk1.6.0_45

#应用程序的目录

MYJSVC_HOME=/test

#jsvc所在的目录

DAEMON_HOME=/usr/lib/tomcat//apache-tomcat-6.0.28/bin

#用户

MYJSVC_USER=root

# for multi instances adapt those lines.

TMP_DIR=/var/tmp

PID_FILE=/var/run/tlstat.pid

#程序运行是所需的jar包,commons-daemon.jar是不能少的

CLASSPATH=/usr/lib/webservice_engine.jar:/usr/lib/tomcat/apache-tomcat-6.0.28/bin/commons-daemon.jar:

case "$1" in

start)

#

# Start TlStat Data Serivce

#

$DAEMON_HOME/jsvc -user $MYJSVC_USER -home $JAVA_HOME -Djava.io.tmpdir=$TMP_DIR -wait 10 -pidfile $PID_FILE #控制台的输出会写到tlstat.out文件里

-outfile $MYJSVC_HOME/log/myjsvc.out -errfile ‘&1‘ -cp $CLASSPATH #服务启动类

test.main.WebServiceEngine

#

# To get a verbose JVM

#-verbose # To get a debug of jsvc.

#-debug exit $?

;;

stop)

#

# Stop TlStat Data Serivce

#

$DAEMON_HOME/jsvc -stop -pidfile $PID_FILE test.main.WebServiceEngine

exit $?

;;

*)

echo "Usage Webjsvc start/stop"

exit 1;;

esac

5. 把myjsvc文件拷贝到/etc/init.d/目录下

6. #chmod -c +x /etc/init.d

7. 添加,启动服务

#sudo sysv-rc-conf webservice_engineJSVC on

你可以从/test/log/myjsvc.out文件里看到如下信息:

execute init(args) method

execute start method

#service myjsvc stop

你会发现/test/log/myjsvc.out文件里会增加如下信息

execute stop method

execute destroy method

并且在系统重启时会自动启动myjsvc服务

好了,一个简单的 liunx服务就写好了,你可以在TestJsvc的init(),start(),stop(),destroy()方法里添加你的业务,做你想做的事。

下面讲解jsvc 启动Java 在Linux下的实现原理。

jsvc 是在apache的daemon项目下的开源项目,主要功能可以使一些运行在普通用户下的java进程获取一些root权限下的权利,比如端口在1024下等。

如何运行?

在自己的java代码中,实现start, init , stop,destroy的方法,将自己的编译打成jar文件,  通过调用jsvc 来启动

./jsvc -java-home  /usr/java/jdk1.7.0_09/ -user nobody  -pidfile /opt/apache-tomcat_1/logs/catalina-daemon1.pid -wait 10 -errfile "/tmp/error" -outfile "/tmp/output" -debug -classpath /root/test.jar:/root/commons-daemon.jar test

几个注意点:

commons_daemon.jar文件是用于调用你的class文件,

关于-java-home, 在这里有一个bug(https://issues.apache.org/jira/browse/DAEMON-268),哪怕指定,也会指定为默认的/usr/java

实现原理?

jsvc 是一个源码是c的程序,通过fork出子进程去启动java,而进程成为控制进程,可以实现监视java子进程的目地。

改变启动虚拟机的进程用户id和用户组

通过调用setgid,setuid来改变当前进程的用户id和组,这里要注意的是当改变用户id和组的时候,当前进程会改变进程的capability, 所以需要reset 进程的capability。

查看进程的capability可以通过内核调用 __NR_capget / __NR_capset 的方式

static int get_legacy_caps(){

struct __user_cap_header_struct caphead;

struct __user_cap_data_struct  cap;

memset(&caphead, 0, sizeof caphead);

caphead.version = LEGACY_CAP_VERSION;

if (syscall(__NR_capget, &caphead, &cap) < 0)

log_error("capget failed: %m");

log_debug("PID is %d print the cap  0x%x, 0x%x, 0x%x\n", getpid(), cap.effective, cap.permitted, cap.inheritable);

return 0;

}

启动java

通过调用JNI_CreateJavaVM 启动虚拟机器,同时调用包common-daemon里的DaemonLoader class, 调用你所写的类中的start,...这些方法。

碰到的问题

在jsvc 里启动java以后就将jvm的虚拟机的进程的capability 设置成了0,  导致在虚拟机里的创建线程受到max process 的控制, ulimit -u

已经创建issue: https://issues.apache.org/jira/browse/DAEMON-270, 短期解决办法可以设置ulimit 到比较大的值。

时间: 2024-10-22 21:45:08

Jsvc安装,配置 常规用户使用tomcat的80端口的相关文章

authbind start tomcat services as user with less that 1024 ports. linux常规用户使用tomcat的80端口

Start tomcat services using authbind this will allow user to start ports less than 1024 we do not need to redirect or iptables. apt-get install authbind -y To install Authbind software chmod -R 755 /etc/authbind group should be user group. chown -Rh

How to run Tomcat without root privileges? 常规用户使用tomcat的80端口

How to run Tomcat without root privileges? 1. The best way is to use jsvc, available as part of the commons-daemon project. 2. One way is to put Apache httpd with mod_jk before your Tomcat servers, and use ports >=1024 in the Tomcat(s). However, if h

IIS7和Tomcat7整合,即IIS7和Tomcat共用80端口

IIS7和Tomcat7整合,即IIS7和Tomcat共用80端口 背景: 最近公司有一个项目要上线,需要用到iis和tomcat整合,共用80端口.由于公司的数据都非常重要,只通过端口映射到外网的80端口,其它端口都不开放. 我部署的环境是Win2008R2_x64, IIS7和JDK1.7.0_51,tomcat7.0.59 一.关闭Windows2008中IE增强的安全配置. 服务器管理器----配置IE ESC----管理员和用户都选择禁用 .如图. 二 .IIS安装 安装: 1.   

阿里云服务器win2003下iis整合tomcat共享80端口

阿里云服务器win2003下iis整合tomcat共享80端口 很多机器都用tomcat跟IIS部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通过日志查看以及谷歌.尝试了很多方法终于配置OK.         第一.整合环境:Windows Service 2003.JDK1.60.IIS6.0 和tomcat7.0         第二.使用技术:IIS6.0和TOMCAT6.0的默认端口不用改变,使用原有的80和8081(因为本人数据库

IIS Tomcat共享80端口

为什么有这种需求, 原因是这样的, 公司有一个Java的web项目,在另一台服务器A上,最近老板一时兴起,想把他合并到这台稳定点的服务器B上,服务器B上使用IIS来寄宿asp.net 网站, 怎么办呢,硬着头皮上吧,在网上找各种解决方案: 解决方案一:isapi_redirect 这个方法按照方法试了N次就是没搞定, 解决方案二:IIS反向代理 基本逻辑就是请求来到IIS,IIS根据路由规则把请求转发给Tomcat处理,然后tomcat把响应返回给IIS, 这个方案依然只是IIS独占端口80,看

apache和tomcat公用80端口

原理主要利用apache的代理. 第一步:修改apache的httpd.conf配置文件. 首先,要让apache支持转发也就是做tomcat的代理那么就要先启用apache的代理模块.首先我在Apache\conf目录下面找到httpd.conf文件,用记事本打开该文件找到以下几行代码: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_connect_module modules/mod_proxy_connect

关于tomcat 访问80端口失效 阿里云问题版

可能有朋友在配置完阿里云  配置好服务器发现 使用默认80端口访问网址失效 用8080依然失效  - -放心你用什么都会失效 并且你怎么杀接口也没用 答案就是 你的里面绝对没有80 和8080  你没有对外开放自然就访问不了 所以说小伙子直接点击上面的添加安全组规则就好了了

开发利器_Jsvc.利用Jsvc实现Tomcat以普通用户运行监听80端口?

简单介绍: 说明: Jsvc主要用于非Windows操作系统上以非ROOT用户运行绑定到特权端口的Java服务器,专门由C编写的服务封装器,很容易结合SHELL脚本编写守护脚本.运行后以独立进程存在. 快速安装: yum -y install gcc autoconf cd /xm-workspace/xm-webs/xmcloud/tomcat8081/bin tar -zxvf commons-daemon-native.tar.gz  && cd commons-daemon-1.0

tomcat 安装配置部署到nginx+tomcat+https

目录 1 Tomcat简介 2.下载并安装Tomcat服务 2.2 部署java环境 2.3 安装Tomcat 2.4 Tomcat目录介绍 (关注点 bin conf logs webapps) 2.5 启动Tomcat 3.2 Tomcat管理 8 搭建jpress--java 版本的wordpress tomcat 配置文件 conf/server.xml tomcat 自定义网站目录 Tomcat多实例 (多个虚拟主机) tomcat反向代理集群 tomcat监控 zabbix监控 ng