Tomcat非root身份运行制作Linux系统服务管理
理论知识怱略,马上开始实战
一、首先准备好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系统服务管理的更多相关文章
- Linux下非root用户运行Tomcat
PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...
- 【出错记录】Tomcat非root用户启动无法拥有权限读写文件
简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...
- ElasticSearch Root身份运行
https://blog.csdn.net/lahand/article/details/78954112 如果以root身份运行将会出现以下问题,这个错误,是因为使用root用户启动elastics ...
- Linux 曝出严重安全漏洞,受限用户亦可提权至 Root 身份运行任意命令!(内附解决方案)
本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...
- EasyHLS直播在Linux非root用户运行时出现无法写文件的问题解决mkdir 0777
今天在Github上收到一个用户反馈的EasyHLS在linux上非root用户调用时,无法写目录的问题:https://github.com/EasyDarwin/EasyHLS/issues/3, ...
- Linux以指定用户非root用户运行程序、进程
方式一: 使用su命令切换用户运行 su 用户名 方式二: useradd -s /sbin/nologin -M test -s /sbin/nologin表示创建一个禁止登陆的用户(比如www ...
- deepin使用root身份运行
https://blog.csdn.net/guanripeng/article/details/79630619
- 以非root身份安装Python的Module或者Package以及pip安装指定路径
因为要远程访问公司的服务器,没有sudo的权限,所以在安装python的一些包的时候就不能安去默认路径了(比如以/usr/local/lib/为prefix的路径). 一般来讲用easy_instal ...
- Linux系统服务管理 服务管理
Linux独立服务管理 启动服务 systemctl start 服务名称.service 设置开机自启动 systemctl enable 服务名称.service 停止开机自启动 systemct ...
随机推荐
- .NET Core和.NET Standard 区别与联系
每一种托管实现(如Xamarin..NET Core或.NET Framework)都必须遵循.NET Standard实现BCL..NET STANDARD LIBRARY是.net 标准库,.NE ...
- 使用feign上传图片
1.添加依赖,支持SpringEncoder <dependency> <groupId>io.github.openfeign.form</groupId> &l ...
- (5.5)mysql高可用系列——MySQL半同步复制(实践)
关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...
- 浅谈Linux du命令
**du(disk usage),顾名思义,查看目录/文件占用空间大小** 1.查看当前目录下的所有目录以及子目录的大小 du -h du -ah #-h:用K.M.G的人性化形式显示#-a:显示目 ...
- 小记---------spark优化之更优分配资源
spark优化:在一定范围之内,增加资源与性能的提升是成正比的. 因此, 一个cpu core 执行一个task线程. task数: 若有 cpu core 2个.num-execu ...
- thinkphp6下无法获取header头中的Authorization(apache版)
今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c&g ...
- 数据结构之单链表的实现-java
一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...
- JS基础_数据类型-String类型
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 不基于比较的排序算法:Counting-sort和Radix-sort
- Django框架——进阶之AJAX
<script>$("#b1").on("click", function () { // 点击 id是b1的按钮要做的事儿 var i1 = $( ...