摘要:操作系統只用權限才能監聽已下的端口。雖然我們可以讓啟動后以用戶的權限工作。我們還可以指定啟動是的總之我們可以更精細的控制的運行方式。只有該版本的是綁定到二進制發行版中。這意味著它要與該版本的一同使用。
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 --help Usage: jsvc [-options] class [args...] Where options include: -help | --help | -? show this help page (implies -nodetach) -jvmuse 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 used to run the daemon (defaults to current user) -verbose[:class|gc|jni] enable verbose output -cwd set working directory to given location (defaults to /) ........ ........ jsvc (Apache Commons Daemon) 1.0.15-dev Copyright (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 -stop 選項 關閉 tomcat,此時完全不需要再多余指定一個 stop 參數了。
到這里 小伙伴們 應該 對tomcat更有把握了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66154.html
摘要:基礎篇訪問路徑比如則默認訪問目錄啟動關閉啟動目錄下關閉目錄下進階篇和的關系一個只啟動一個,其中可以有很多個一個中部署的多個,雖然同處一個里,但是由于無法相互調用,所以也可以認為是分布式的 基礎篇 1、url訪問路徑:比如http://localhost:8080/deploy/test則默認訪問webapp/deploy/test目錄 2、啟動/關閉 tomcat(1)啟動:bin目錄...
摘要:學習筆記工作以來就一直在用各種框架,比如,這些,向外提供接口都很方便,但是一直在想它的內部是怎樣對外暴露服務的,正好之前學習基礎的時候也沒好好看這塊,抽個時間學習總結一下,也能更好的理解掌握現在的框架。 Servlet學習筆記 工作以來就一直在用各種web框架,比如SpringMVC,Spring Cloud這些,向外提供接口都很方便,但是一直在想它的內部是怎樣對外暴露服務的,正好之前...
摘要:旨在記錄自己的學習過程,方便日后遇到問題是及時查閱復習,另一方面也希望能幫助像筆者一樣從來沒使用過的人快速熟悉。 這篇文章主要記錄的是本人學習使用IntelliJ IDEA的筆記,可能不是特別的詳細。旨在記錄自己的學習過程,方便日后遇到問題是及時查閱復習,另一方面也希望能幫助像筆者一樣從來沒使用過IDEA的人快速熟悉IDEA。文章錯誤之處還請各位大佬批評指正。(文末有本人的微信公眾號,...
閱讀 2038·2021-10-08 10:05
閱讀 1882·2021-09-22 15:31
閱讀 3003·2021-09-22 15:13
閱讀 3478·2021-09-09 09:34
閱讀 2072·2021-09-03 10:46
閱讀 3113·2019-08-30 15:56
閱讀 1697·2019-08-30 15:53
閱讀 2351·2019-08-30 15:44