理论知识怱略,马上开始实战

一、首先准备好tomcat 启动、关闭、重启Shell脚本:

以下Shell脚本主要修改值

tomcatPath:tomcat目录

runUser:以哪个身份运行

此处测试的Shell脚本存放地址如下:

  1. mkdir /usr/local/apache-tomcat-7.0./sbin/
  2. vi /usr/local/apache-tomcat-7.0./sbin/tomcat-server
    #复制tomcat-server的代码
  3.  
  4. chmod +x /usr/local/apache-tomcat-7.0.94/sbin/tomcat-server 
  1. #!/bin/bash
  2. #Authtor : suk
  3. #Date :
  4. #Email : @qq.com
  5.  
  6. . /etc/init.d/functions
  7.  
  8. #Result Code
  9. RETVAL=
  10.  
  11. #Tomcat Pid
  12. TomcatPid=null
  13.  
  14. #Tomcat Home
  15. tomcatPath=/usr/local/application/apache-tomcat-7.0.
  16.  
  17. runUser='tomcat'
  18.  
  19. getTomcatPid()
  20. {
  21. TomcatPid=$(ps -ef | grep java |grep tomcat | grep -w $tomcatPath | grep -v 'grep ' | awk '{print $2}')
  22.  
  23. }
  24.  
  25. checkTocamtPid()
  26. {
  27. getTomcatPid
  28. if [ -n "$TomcatPid" ];
  29. then
  30. #run
  31. RETVAL=
  32. else
  33. #no run
  34. RETVAL=
  35. fi
  36. }
  37.  
  38. start()
  39. {
  40. checkTocamtPid
  41. if [ $RETVAL -eq ];
  42. then
  43. getTomcatPid
  44. action "Tomcat Already Running Pid:【$TomcatPid】" /bin/false
  45. exit $RETVAL
  46. else
  47. /bin/sudo su - $runUser $tomcatPath/bin/startup.sh
  48. getTomcatPid
  49. action "Start Tomcat Success Pid:【$TomcatPid】" /bin/true
  50. fi
  51. }
  52.  
  53. restart()
  54. {
  55. checkTocamtPid
  56. if [ $RETVAL -eq ];
  57. then
  58. stop
  59. sleep
  60. fi
  61. start
  62. }
  63.  
  64. stop()
  65. {
  66. checkTocamtPid
  67.  
  68. if [ $RETVAL -eq ];
  69. then
  70. getTomcatPid
  71. /bin/kill - $TomcatPid
  72. action "Stop Tomcat PID:【$TomcatPid】" /bin/true
  73. else
  74. action "Tomcat Status No Running" /bin/false
  75. fi
  76. }
  77.  
  78. #Check Tomcat Status
  79. status()
  80. {
  81. checkTocamtPid
  82. [ $RETVAL -eq ] && echo "Tomcat is Running Pid:【$TomcatPid】" || echo "No Tomcat Running"
  83. }
  84.  
  85. #Check Tomcat Start Logs
  86. logs(){
  87. logsPath=$tomcatPath/logs/catalina.out
  88. if [ ! -f $logsPath ];then
  89. echo "$logsPath Not Eixts"
  90. else
  91. /usr/bin/tail -f $logsPath
  92. exit $RETVAL
  93. fi
  94. }
  95.  
  96. case "$1" in
  97. start)
  98. start
  99. ;;
  100. stop)
  101. stop
  102. ;;
  103. restart)
  104. restart
  105. ;;
  106. status)
  107. status
  108. ;;
  109. logs)
  110. logs
  111. ;;
  112. *)
  113. echo $"Usage: $0 {start|stop|restart|status|logs}"
  114. esac

tomcat-server

二、创建运行用户,这里以用户名:tomcat 为例

  1. useradd tomcat

三、把tomcat目录权授

  1. chown -R tomcat.tomcat /usr/local/apache-tomcat-7.0.

注意:

  程序用到的所有目录都需要授权给该用户,否则会报权限不足,导致执行失败,执行命令同上

四、开始编写systemctl启动的配置文件

  1. vi /lib/systemd/system/tomcat.service
  2.  
  3. [Unit]
  4. Description=Tomcat server daemon
  5. Documentation=/data/application/apache-tomcat-8.5.
  6. #注意:一般tomcat服务都是在数据库或redis等启动之后,再运行,确保数据库或redis有制作systemctl,在配置到After,mysql.service redisd.service名字是编写systemctl时的文件名
  7. After=network.target mysql.service redisd.service
  8.  
  9. [Service]
  10. Type=forking
  11. PIDFile=/usr/local/apache-tomcat-7.0./tomcat.pid
  12. ExecStart=/usr/local/apache-tomcat-7.0./sbin/tomcat-server start
  13. ExecStop=/usr/local/apache-tomcat-7.0./sbin/tomcat-server stop
  14. Restart=/usr/local/apache-tomcat-7.0./sbin/tomcat-server restart
  15. PrivateTmp=True
  16.  
  17. [Install]
  18. WantedBy=multi-user.target

5、配置Tomcat Pid生产的位置

注意:

  确认Tomcat PID必须 与 /lib/systemd/system/tomcat.service 配置里面的 PIDFile 保持一致

  1. vi /usr/local/apache-tomcat-7.0./bin/catalina.sh
  2. 怱略
  3. #
  4. # USE_NOHUP (Optional) If set to the string true the start command will
  5. # use nohup so that the Tomcat process will ignore any hangup
  6. # signals. Default is "false" unless running on HP-UX in which
  7. # case the default is "true"
  8. # -----------------------------------------------------------------------------
  9. CATALINA_PID=/usr/local/apache-tomcat-7.0.94/tomcat.pid
  10.  
  11. # OS specific support. $var _must_ be set to either true or false.
  12. cygwin=false
  13. 怱略

6、刷新systemctl配置

  1. #重新加载配置文件
  2. systemctl daemon-reload
  3.  
  4. #服务开启,关闭,重启
  5. systemctl start tomcat.service
  6. systemctl stop tomcat.service
  7. systemctl restart tomcat.service
  8.  
  9. #设置开机自动启动
  10. systemctl enable tomcat.service

注意:

  启动完成后,需要检查进程是否运行

  1. ps -ef | grep java

正常启动如下:

Tomcat非root身份运行制作Linux系统服务管理的更多相关文章

  1. Linux下非root用户运行Tomcat

    PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...

  2. 【出错记录】Tomcat非root用户启动无法拥有权限读写文件

    简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...

  3. ElasticSearch Root身份运行

    https://blog.csdn.net/lahand/article/details/78954112 如果以root身份运行将会出现以下问题,这个错误,是因为使用root用户启动elastics ...

  4. Linux 曝出严重安全漏洞,受限用户亦可提权至 Root 身份运行任意命令!(内附解决方案)

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  5. EasyHLS直播在Linux非root用户运行时出现无法写文件的问题解决mkdir 0777

    今天在Github上收到一个用户反馈的EasyHLS在linux上非root用户调用时,无法写目录的问题:https://github.com/EasyDarwin/EasyHLS/issues/3, ...

  6. Linux以指定用户非root用户运行程序、进程

    方式一: 使用su命令切换用户运行 su 用户名 方式二: useradd -s /sbin/nologin -M test   -s /sbin/nologin表示创建一个禁止登陆的用户(比如www ...

  7. deepin使用root身份运行

    https://blog.csdn.net/guanripeng/article/details/79630619

  8. 以非root身份安装Python的Module或者Package以及pip安装指定路径

    因为要远程访问公司的服务器,没有sudo的权限,所以在安装python的一些包的时候就不能安去默认路径了(比如以/usr/local/lib/为prefix的路径). 一般来讲用easy_instal ...

  9. Linux系统服务管理 服务管理

    Linux独立服务管理 启动服务 systemctl start 服务名称.service 设置开机自启动 systemctl enable 服务名称.service 停止开机自启动 systemct ...

随机推荐

  1. .NET Core和.NET Standard 区别与联系

    每一种托管实现(如Xamarin..NET Core或.NET Framework)都必须遵循.NET Standard实现BCL..NET STANDARD LIBRARY是.net 标准库,.NE ...

  2. 使用feign上传图片

    1.添加依赖,支持SpringEncoder <dependency> <groupId>io.github.openfeign.form</groupId> &l ...

  3. (5.5)mysql高可用系列——MySQL半同步复制(实践)

    关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...

  4. 浅谈Linux du命令

    **du(disk usage),顾名思义,查看目录/文件占用空间大小** 1.查看当前目录下的所有目录以及子目录的大小  du -h du -ah #-h:用K.M.G的人性化形式显示#-a:显示目 ...

  5. 小记---------spark优化之更优分配资源

      spark优化:在一定范围之内,增加资源与性能的提升是成正比的. 因此,       一个cpu core  执行一个task线程. task数: 若有 cpu core 2个.num-execu ...

  6. thinkphp6下无法获取header头中的Authorization(apache版)

    今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c&g ...

  7. 数据结构之单链表的实现-java

    一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...

  8. JS基础_数据类型-String类型

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. 不基于比较的排序算法:Counting-sort和Radix-sort

  10. Django框架——进阶之AJAX

    <script>$("#b1").on("click", function () { // 点击 id是b1的按钮要做的事儿 var i1 = $( ...