jsvc
是个什么是么高端武器呢
全称:Java Service
还是没有弄明白是什么,那就继续往下看。
我们赞不讨论 tomcat 应不应该运行在80端口上。
假如我们有需求,需要 tomcat 运行在 80 端口上。
那么一个限制就出现了。*nix
操作系统只用root权限才能坚挺1024已下的端口。
虽然我们可以让 tomcat 启动后 以tomcat
用户的权限工作。这样安全性就可以得到保障。
但是我们还有更强的方案。他就是jsvc
当然 jsvc 可不仅仅就这么一点功能。
我们通过 jsvc 可以很简单的 封装我们自己的 启动脚本,
还可以 随意制定 tomcat 运行用户和租,还可以指定 jvm 的运行参数例如内存控制,语言,编码控制。
我们还可以指定 tomcat 启动是的 pidfile 总之我们可以更精细的控制tomcat的运行方式。比原始脚本拥有无法比拟的优势。
既然 jsvc 的有点有那么多。那到底怎么做呢。
jsvc是一套用c编写的程序,是tomcat发行版自带的一套代码。是Jakarta Commons Daemon 工程的一个复制品。只有该版本的jsvc是绑定到tomcat二进制发行版中。这意味着它要与该版本的Tomcat一同使用。
在 tomcat 8.0 版本中 jsvc 的源代码包tomcat/bin/commons-daemon-native.tar.gz
我们找到该tar包,准备编译成二进制文件
$ tar -zxvf commons-daemon-native.tar.gz$ cd commons-daemon-1.0.15-native-src$ ./configure --with-java=$JAVA_HOME$ make
编译完成以后,会产生一个jsvc的二进制可执行文件
$ ./jsvc --helpUsage: jsvc [-options] class [args...]Where options include: -help | --help | -? show this help page (implies -nodetach) -jvm <JVM name> use a specific Java Virtual Machine. Available JVMs: 'server' -client use a client Java Virtual Machine. -nodetach don't detach from parent process and become a daemon -debug verbosely print debugging information -check only check service (implies -nodetach) -user <user> user used to run the daemon (defaults to current user) -verbose[:class|gc|jni] enable verbose output -cwd </full/path> set working directory to given location (defaults to /) ........ ........jsvc (Apache Commons Daemon) 1.0.15-devCopyright (c) 1999-2013 Apache Software Foundation.
相信看到 现象以后大家大概已猜出jsvc到底是干什么的了。对他就是tomcat的守护进程管理工具
怎么使用呢?
如果你的 tomcat 还在运行那么他大概会是这样的
$ ps auwx | grep java/usr/bin/java-Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
我们想换做 jsvc 管理的话,只需要将 java 换成jsvc就可以了
$ ./jsvc -user tomcat -pidfile /var/run/jsvc.pid -Djvm=tomcat -Xmx50M-Xms50M -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
我指定了 tomcat 运行的用户身份是tomcat用户指定了pidfile在/var/run/jsvc.pid
同时限制了tomcat运行的内存限制
小伙伴们看到这儿了。就不用我多说了。有了 jsvc tomcat 控制tomcat就完全不在话下了。
可能小伙伴么已经发现了 jsvc 的-stop
选项。对的,jsvc 可以关闭tomcat.也很简单
$ ./jsvc -stop -pidfile /var/run/jsvc.pid org.apache.catalina.startup.Bootstrap stop
有趣的是 最后的 stop 不加 也可以正常停止 tomcat
你可以这么理解。应为我们使用了jsvc 的停止tomcat的功能,此时完全不需要自多余制定一个 stop 参数了。
到这里 小伙伴们 应该 对tomcat更有把握了。
相关推荐
jsvc启动tomcat原理详细说明,更安全的启动tomcat的方式。
本文将介绍如何使用jsvc来启动Tomcat,使得Tomcat可以作为普通用户的守护进程来运行。 首先,jsvc是一个非常有用的工具,它能够帮助开发者将Java应用封装成可以由系统服务管理的守护进程,比如它可以集成到init.d或...
在使用jsvc启动Tomcat时,需要提供Tomcat的主类(通常是`org.apache.catalina.startup.Bootstrap`)以及相关的Java选项,如classpath和服务器端口。通过创建一个初始化脚本,可以方便地自动化这些步骤,使其更容易...
如果需要在系统启动时自动启动Tomcat,可以使用`chkconfig --add tomcat`或者`systemctl enable tomcat`。 使用`jsvc`作为启动方式的优势在于: - **系统级管理**:`jsvc`可以让Tomcat作为系统服务运行,这样就...
首先,简单的方法是通过编辑`/etc/rc.d/rc.local`文件来自动启动Tomcat。在你的JDK和Tomcat安装完成后,确保已经设置了`JDK_HOME`和`JAVA_HOME`环境变量,这两个变量应指向JDK的安装路径。然后,打开`rc.local`文件...
启动Tomcat,通过运行`/usr/local/apache-tomcat-6.0.29/bin/startup.sh`脚本。如果Tomcat成功启动,你应该能看到相关的输出信息。检查Tomcat是否正在运行,可以使用`ps -ef | grep tomcat`命令,或者访问`...
在某些特定场景下,比如使用非默认的Java版本或需要系统级服务管理,可能需要使用`jsvc`来启动Tomcat。`jsvc`是Apache Commons Daemon项目的一部分,它允许Java应用程序作为系统服务运行。如果系统中没有预装`jsvc`...
tomcat10自启动脚本\tomcat服务脚本\tomcat启动脚本 tomcat10 jsvc自启动脚本\tomcat jsvc服务脚本\tomcat jsvc启动脚本
标题“用jsvc发布Linux服务”指的是使用jsvc工具将Java应用程序,比如Tomcat服务器,部署为Linux系统下的服务。jsvc是Apache Commons Daemon的一部分,它允许Java应用程序以守护进程(daemon)的形式运行,这样可以...
当尝试使用 `/etc/init.d/tomcat start` 命令启动Tomcat时,如果出现 "Invalid user name 'tomcat' specified" 的错误,这是因为系统中没有名为 `tomcat` 的用户。为了解决这个问题,我们需要创建一个名为 `tomcat` ...
进入Tomcat的bin目录,使用如下命令启动Tomcat: ``` cd $CATALINA_HOME ./bin/jsvc -cp ./bin/bootstrap.jar:./bin/tomcat-juli.jar \ -outfile ./logs/catalina.out -errfile ./logs/catalina.err \ org....
完成编译安装后,我们将生成的`jsvc`文件复制到Tomcat的`bin`目录,以便在启动脚本中使用。接着,我们需要修改Tomcat的启动脚本`daemon.sh`,设置`TOMCAT_USER`为我们的非root用户(这里是`tomcat`),并取消`JAVA_...
现在,你可以在系统启动时自动启动Tomcat,并通过`service tomcat6 start|stop|restart`来管理Tomcat服务。 总结来说,这个过程包括了下载和安装JDK,解压并配置Tomcat,设置环境变量,以及将Tomcat配置为系统服务...
JSVC是用于启动和停止Tomcat服务的工具之一。 ##### 8. 安装APR - 解压APR安装包: - `sudo tar -zxvf /usr/shopxx/soft/apr-1.4.6.tar.gz -C /usr/shopxx/tomcat6.0` - 进入编译目录: - `cd /usr/shopxx/tomcat...
例如,使用 `$CATALINA_HOME/bin/startup.sh` 启动Tomcat,`$CATALINA_HOME/bin/shutdown.sh` 关闭服务。 4. **默认端口**: Tomcat默认监听8080端口,可以通过修改 `$CATALINA_HOME/conf/server.xml` 文件中的 `...
Linux操作系统下两种自动启动Tomcat的方法 Tomcat 配置集锦 tomcat自动启动脚本的设置教程(Linux系统jsvc脚本非root) 几种Linux嵌入式开发环境的简单介绍 解决Oracle 9i和Tomcat端口冲突 在Linux系统平台上安装...
Tomcat6提供了bin目录下的startup.sh(Linux/Mac)和startup.bat(Windows)脚本来启动服务器,以及对应的shutdown脚本关闭服务器。此外,还可以通过管理工具如Apache Commons Daemon(jsvc)进行更高级的控制。 4...
2. **Tomcat 启动测试**:使用命令 `./bin/startup.sh` 启动 Tomcat,然后在浏览器中访问 `http://localhost:8080` 来验证是否成功启动。 3. **Oracle 连接测试**:使用 SQL*Plus 或其他工具尝试连接 Oracle 数据库...
它还创建了一个启动脚本,使得每个Tomcat实例可以通过jsvc(Java Service Wrapper)作为操作系统服务运行。jsvc是一个命令行工具,允许Java应用程序作为系统服务启动和管理,提供了更好的集成和控制。 使用MITI的...