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

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

以下Shell脚本主要修改值

tomcatPath:tomcat目录

runUser:以哪个身份运行

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

mkdir /usr/local/apache-tomcat-7.0./sbin/
vi /usr/local/apache-tomcat-7.0./sbin/tomcat-server
#复制tomcat-server的代码 chmod +x /usr/local/apache-tomcat-7.0.94/sbin/tomcat-server 
#!/bin/bash
#Authtor : suk
#Date :
#Email : @qq.com . /etc/init.d/functions #Result Code
RETVAL= #Tomcat Pid
TomcatPid=null #Tomcat Home
tomcatPath=/usr/local/application/apache-tomcat-7.0. runUser='tomcat' getTomcatPid()
{
TomcatPid=$(ps -ef | grep java |grep tomcat | grep -w $tomcatPath | grep -v 'grep ' | awk '{print $2}') } checkTocamtPid()
{
getTomcatPid
if [ -n "$TomcatPid" ];
then
#run
RETVAL=
else
#no run
RETVAL=
fi
} start()
{
checkTocamtPid
if [ $RETVAL -eq ];
then
getTomcatPid
action "Tomcat Already Running Pid:【$TomcatPid】" /bin/false
exit $RETVAL
else
/bin/sudo su - $runUser $tomcatPath/bin/startup.sh
getTomcatPid
action "Start Tomcat Success Pid:【$TomcatPid】" /bin/true
fi
} restart()
{
checkTocamtPid
if [ $RETVAL -eq ];
then
stop
sleep
fi
start
} stop()
{
checkTocamtPid if [ $RETVAL -eq ];
then
getTomcatPid
/bin/kill - $TomcatPid
action "Stop Tomcat PID:【$TomcatPid】" /bin/true
else
action "Tomcat Status No Running" /bin/false
fi
} #Check Tomcat Status
status()
{
checkTocamtPid
[ $RETVAL -eq ] && echo "Tomcat is Running Pid:【$TomcatPid】" || echo "No Tomcat Running"
} #Check Tomcat Start Logs
logs(){
logsPath=$tomcatPath/logs/catalina.out
if [ ! -f $logsPath ];then
echo "$logsPath Not Eixts"
else
/usr/bin/tail -f $logsPath
exit $RETVAL
fi
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
logs)
logs
;;
*)
echo $"Usage: $0 {start|stop|restart|status|logs}"
esac

tomcat-server

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

useradd tomcat

三、把tomcat目录权授

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

注意:

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

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

vi /lib/systemd/system/tomcat.service

[Unit]
Description=Tomcat server daemon
Documentation=/data/application/apache-tomcat-8.5.
#注意:一般tomcat服务都是在数据库或redis等启动之后,再运行,确保数据库或redis有制作systemctl,在配置到After,mysql.service redisd.service名字是编写systemctl时的文件名
After=network.target mysql.service redisd.service [Service]
Type=forking
PIDFile=/usr/local/apache-tomcat-7.0./tomcat.pid
ExecStart=/usr/local/apache-tomcat-7.0./sbin/tomcat-server start
ExecStop=/usr/local/apache-tomcat-7.0./sbin/tomcat-server stop
Restart=/usr/local/apache-tomcat-7.0./sbin/tomcat-server restart
PrivateTmp=True [Install]
WantedBy=multi-user.target

5、配置Tomcat Pid生产的位置

注意:

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

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

6、刷新systemctl配置

#重新加载配置文件
systemctl daemon-reload #服务开启,关闭,重启
systemctl start tomcat.service
systemctl stop tomcat.service
systemctl restart tomcat.service #设置开机自动启动
systemctl enable tomcat.service

注意:

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

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. CDH目录

    配置文件都在:/etc/服务名, 看hadoop的classpath |grep conf /etc/hadoop/conf log都在: /var/log/服务名 看scm的log: tail -1 ...

  2. 牛客小白月赛14 -G (筛法)

    题目链接:https://ac.nowcoder.com/acm/contest/879/G 题意:给定A1和A数组公式: 以及B数组: 求 思路:利用筛法更新b数组,最后求异或和即可. AC代码: ...

  3. Centos 7 下Gitlab 自启动设置

    禁止 Gitlab 开机自启动: systemctl disable gitlab-runsvdir.service 启用 Gitlab 开机自启动: systemctl enable gitlab- ...

  4. windows10 AppStore安装 应用商店重新安装

    点击左下角的搜索按钮,如下图所示   输入powershell,在结果中找到widows powershell应用,如下图所示   右键单击widows powershell应用,选择以管理员运行,如 ...

  5. MSSQL读取某视图中的字段类型及相关属性

    SELECT 新字段类型 = '',表名 = case when a.colorder=1 then d.name else '' end,表说明 = case when a.colorder=1 t ...

  6. mybatis 基础(二) 动态sql 关于where if / where choose when otherwise

    个人理解: where if就相当于正常的java中的if 语句,如果有多个条件组合判断的话用 and, or连接 而where choose when otherwise choose就好像是swi ...

  7. Ruby学习中(首探数组, 注释, 运算符, 三元表达式, 字符串)

    一. 数组 1.定义一个数组 games = ["英雄联盟", "绝地求生", "钢铁雄心"] puts games 2.数组的循环 gam ...

  8. Dapper多表查询时子表字段为空

    最近在学习使用Dapper时百度了一篇详细使用教程,在做到多表查询的时候,出现如下情况. 使用的SQL如下, SELECT * FROM [Student] AS A INNER JOIN [Juni ...

  9. C# 面向对象8 值类型和引用类型

    值类型和引用类型 概念 示意图: 1.值类型,在栈中开辟一块空间,存储 2.引用类型,在堆中开辟一块空间,存储数据,然在栈中开辟一块空间存储堆中的数据的地址

  10. java 问题汇总

    1.自动加载出错 require a bean of .... The injection point has the following annotations: - @org.springfram ...