目录

前言

作为一个Java后端开发者,tomcat想必是最最最熟悉的一个开发组件了,tomcat环境的搭建部署都十分简单。安装部署只需要两步,第一步下载,第二步解压,这样一个基础的tomcat环境就搭建好啦。通常直接执行tomcat目录下的bin/startup.sh脚本进行启动,执行bin/shutdown.sh脚本进行关闭。刚工作那段时间一直都是这么操作的,玩的不亦乐乎,工作几年后忽然发现还能以daemon守护进程的方式进行运行,一下子被这波操作给安利了,简直666,今天就来说说如何操作。

版本

系统:CentOS-6.4 (系统有点老,手头就这一个镜像)

tomcat:8.5.60

关注本文末尾微信公众号,回复“666”获取常用开发工具包,内含常用开发组件,节省翻墙下载时间。

安装部署

1.下载

从tomcat库中选择一个最新版本进行下载

https://mirrors.cnnic.cn/apache/tomcat/

这边选择tomcat8 最新的版本,复制文件地址

https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.60/bin/apache-tomcat-8.5.60.tar.gz

cd /usr/local/work/
wget --no-check-certificate https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.60/bin/apache-tomcat-8.5.60.tar.gz

tar -zxvf apache-tomcat-8.5.60.tar.gz

2.创建用户

# 创建用户组
groupadd tomcat
# 创建用户(无登录权限)并加入tomcat组
useradd -g tomcat -s /usr/sbin/nologin tomcat

3.安装jsvc

# 进入tomcat bin目录
cd tomcat-8.5.60/bin/
# 解压 daemon
tar -zxvf commons-daemon-native.tar.gz

cd commons-daemon-1.2.3-native-src/unix/
# 调整为jdk安装目录
./configure --with-java=/usr/local/work/jdk1.8.0_172

make
cp jsvc /usr/local/work/tomcat-8.5.60/bin
cd /usr/local/work/tomcat-8.5.60/bin/

4.编辑daemon.sh

在daemon.sh中开头第二行添加如下信息

# chkconfig: 2345 20 80
# description: Startup script for the Tomcat 8.5.60 Server

在daemon.sh中该行test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat上放添加jdk及tomcat信息

这边TOMCAT_USER=tomcat需和上面创建的用户名一致

# jdk安装目录
JAVA_HOME=/usr/local/work/jdk1.8.0_172
# tomcat目录
CATALINA_HOME=/usr/local/work/tomcat-8.5.60
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat

4.赋权并添加服务

# 更改文件所有者
chown -R tomcat:tomcat /usr/local/work/tomcat-8.5.60
# 赋予用户执行权
chmod a+x /usr/local/work/tomcat-8.5.60/bin/daemon.sh
# 复制至/etc/init.d/
cp daemon.sh /etc/init.d/tomcat8
# 添加服务
chkconfig --add tomcat8
# 查看已有服务
chkconfig --list

# 启动
service tomcat8 start
# 关闭
service tomcat8 stop

至此tomcat已以daemon方式运行了,重启服务器后tomcat服务也会自动启动,nice。

5.日志中文乱码

在daemon方式运行后,在tomcat/logs目录下会出现2个新文件,如下

# 运行pid信息
catalina-daemon.pid
# 日志输出信息 原先日志输出文件 catalina.out
catalina-daemon.out

让我们查看下日志信息

tail -f -n 500 /usr/local/work/tomcat-8.5.60/logs/catalina-daemon.out

原先都是正常的,现在怎么乱码了呢,操作如下即可

打开/etc/init.d/tomcat8,在$LOGGING_MANAGER行调整如下

test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

追加编码配置“-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8”

按如下配置

test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

调整完后赶紧试一把,OK,搞定。

Linux Tomcat安装篇(daemon运行,开机自启动)的更多相关文章

  1. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口

    Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...

  2. Linux(CentOS)系统下设置nginx开机自启动

    Nginx 是一个很强大的高性能Web和反向代理服务器.下面介绍在linux下安装后,如何设置开机自启动.首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:vi ...

  3. CentOS6.8下安装memcached并设置开机自启动

    参考资料:http://www.cnblogs.com/handongyu/p/6419305.html    http://coolnull.com/1986.html 一.安装libevent 首 ...

  4. CentOS6.8下安装redis并配置开机自启动

    参考资料:http://www.bubuko.com/infodetail-1006383.html   http://www.cnblogs.com/skyessay/p/6433349.html ...

  5. linux下安装jsp开发运行环境(centos7)

    1 开发环境包括 1)apache-tomcat 2)java-jdk 3)mysql 2 apache-tomcat安装(应该先装java再装tomcat) 1)到官网下载最新版本(不建议用yum安 ...

  6. Linux Tomcat安装及端口配置

    1.  JDK安装配置 待写 2. Tomcat安装配置 1,下载Tomcat链接,到启动测试. 将文件apache-tomcat-8.5.50.tar.gz移动到/usr/tomcat/下,并解压 ...

  7. linux 7安装telnet,设置telnet自启动,使用root telnet登录

    1.安装启动服务 # yum install telnet-server # yum install xinetd # systemctl enable xinetd.service # system ...

  8. Linux Tomcat安装部署项目

    一.上传Tomcat服务器

  9. InstallShield2015制作安装包----------安装后实现电脑开机自启动

    开机自启动有两个方法: 一 .把程序的快捷方式放在”开始---启动“目录下. 二.把程序的安装目录放在注册表”“. 实现方法一: 1.编写bat脚本.执行bat启动exe. a)核心:cmd命令  : ...

随机推荐

  1. Nginx跳转配置

    1.携带目录调转到后端,后端无目录,location配置如下 例子: i2.jusdacfj.com/ideas_edi/--10.0.2.137:7040/10.0.2.138:7040 locat ...

  2. 833. Find And Replace in String —— weekly contest 84

    Find And Replace in String To some string S, we will perform some replacement operations that replac ...

  3. leetcode117:search-rotated-sorted-array

    题目描述 给出一个转动过的有序数组,你事先不知道该数组转动了多少 (例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2). 在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引, ...

  4. Python面试题及答案汇总整理(2019版)

    发现网上很多Python面试题都没有答案,所以博主花了很长时间搜集整理了这套Python面试题及答案,由于网上的Python相关面试题大多数都是2019年的,所以我这个也是2019版的,哈哈~ (文末 ...

  5. springboot整合rabbitMq实现消息延时发送

    实现思路:利用mq的ttl设置消息失效时间 当达到设置时间后通过交换机到达死信队列中,消费者端绑定读取死信队列中信息来达到延时发送消息的功能. demo 如下: (1)在pom.xml 中引入rabb ...

  6. pipe()管道通信

    管道 管道的概念: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如下特质: 1. 其本质是一个伪文件(实为内核缓冲区) 2. 由两个 ...

  7. 对“线上问题 不能gdb调试怎么处理??“”的思考

    Q1:线上问题的process 都为release版本!不带调试信息怎么查?(目前有时需要查线上问题, 不得不解决这个问题) 之前查问题都是编译环境编译一个带有debug信息的版本进行替换来调试,但是 ...

  8. async await 你真的用对了吗?

    大部分同学了解Promise,也知道async await可以实现同步化写法,但实际上对一些细节没有理解到位,就容易导致实际项目中遇到问题. 开始先抛结论,下文将针对主要问题点进行论述. 1.所有as ...

  9. 【Kubernetes学习笔记】-服务访问之 IP & Port & Endpoint 辨析

    目录 不同类型的IP Pod IP Cluster IP 不同类型的Port port nodePort TargetPort containerPort hostPort Endpoint Endp ...

  10. msfconsle核心命令学习

    back 取消当前模块 banner check 检查当前exploit是否对目标有效,并不进行真正的攻击 color 禁用或启用输出是否包含颜色 connect 可以通过connect命令来链接Ne ...