1 前言
一直以来都觉得Tomcat以root身份运行非常不安全,故研究Tomcat如何以普通用户身份运行,以下是参考网络上的一些配置实现Tomcat以daemon方式运行于CentOS 6&7系统下面。
2 实践部分
2.1 环境配置
2.1.1 系统环境
ipaddress=10.168.0.157
OS=CentOS 6&7
2.1.2 配置编译环境
1
|
yum -y
install
gcc gcc-c++
make
expat-devel
|
2.1.3 下载JDK
1)下载页面:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2)下载选择
请选择“jdk-8u111-linux-x64.tar.gz”下载,命令行如下:
1
|
wget http:
//download
.oracle.com
/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64
.
tar
.gz?AuthParam=1479977626_06aed8a715c8fbbc10f72c89ee38910b
|
2.1.4 下载Tomcat
1)下载页面
http://tomcat.apache.org/
2)下载选择
请选择“Tomcat 9.0.0.M13”下载(注意选择“Binary Distributions”)版本,命令行如下:
1
|
wget http:
//apache
.fayea.com
/tomcat/tomcat-9/v9
.0.0.M13
/bin/apache-tomcat-9
.0.0.M13.
tar
.gz
|
2.1.5 配置防火墙
In CentOS 6
1
|
vim
/etc/sysconfig/iptables
|
增加如下行:
1
|
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
|
重启防火墙使服务生效
1
|
/etc/init
.d
/iptables
restart
|
In CentOS 7
1
2
3
|
firewall-cmd --permanent --add-port=8080
/tcp
firewall-cmd --reload
firewall-cmd --list-all
|
2.2 配置JDK
2.2.1 创建java目录
1
|
mkdir
/usr/java
|
2.2.2 解压
1
2
|
tar
xf jdk-8u111-linux-x64.
tar
.gz
mv
jdk1.8.0_111
/usr/java/
|
2.2.3 配置环境变量
1
|
vim
/etc/profile
|
末尾加入如下内容:
1
2
3
4
|
export
JAVA_HOME=
/usr/java/jdk1
.8.0_111
export
JRE_HOME=${JAVA_HOME}
/jre
export
CLASSPATH=.:${JAVA_HOME}
/lib
:${JRE_HOME}
/lib
export
PATH=${JAVA_HOME}
/bin
:$PATH
|
注:以上配置只是为了下面的daemon环境的编译,编译完可以注释
2.2.4 配置生效
1
|
source
/etc/profile
|
2.2.5 环境变量测试
1
|
java -version
|
2.3 配置Tomcat
2.3.1 创建tomcat目录
1
|
mkdir
/usr/tomcat
|
2.3.2 解压
1
2
|
tar
-xf apache-tomcat-9.0.0.M13.
tar
.gz
mv
apache-tomcat-9.0.0.M13
/usr/tomcat/
|
2.3.3 配置环境变量
1
|
vim
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/setenv
.sh
|
输入如下配置
1
2
3
4
5
|
JAVA_HOME=
/usr/java/jdk1
.8.0_111
JRE_HOME=${JAVA_HOME}
/jre
CATALINA_HOME=
/usr/tomcat/apache-tomcat-9
.0.0.M13
CATALINA_BASE=${CATALINA_HOME}
JAVA_OPTS=
'-server -Xms2048m -Xmx4096m -Xss512k'
|
环境变量配置请参考以下命令输出的内容:
1
|
grep
'^#'
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/catalina
.sh
|
2.3.4 解压daemon工具包
1
|
tar
-xf
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/commons-daemon-native
.
tar
.gz
|
2.3.5 编译daemon工具包
1
2
3
|
cd
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/commons-daemon-1
.0.15-native-src
/unix/
.
/configure
make
|
2.3.6 配置daemon运行环境
1
2
3
|
cp
jsvc
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/
useradd
-M -d
/usr/tomcat/apache-tomcat-9
.0.0.M13/ -s
/sbin/nologin
tomcat
chown
-R tomcat:
/usr/tomcat/apache-tomcat-9
.0.0.M13
|
2.3.7 手动测试服务启停
1
2
|
sudo
-u tomcat
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh start
sudo
-u tomcat
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh stop
|
确认服务正常启动与关闭:
1
|
netstat
-antp
|
浏览器测试确认:
2.3.8 启动服务与配置服务开机启动
In CentOS 6
1
2
3
|
ln
-s
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh
/etc/init
.d
/tomcat9
/etc/init
.d
/tomcat9
start
vim
/etc/init
.d
/tomcat9
|
第二行加入如下内容:
1
|
# chkconfig: 2345 55 25
|
配置服务自启动:
1
|
chkconfig tomcat9 on
|
In CentOS 7
1
|
vim
/lib/systemd/system/tomcat9
.service
|
输入如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[Unit]
Description=seafile
After=network.target
[Service]
Type=forking
ExecStart=
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh start
ExecReload=
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh restart
ExecStop=
/usr/tomcat/apache-tomcat-9
.0.0.M13
/bin/daemon
.sh stop
PrivateTmp=
true
[Install]
WantedBy=multi-user.target
|
测试服务运行
1
2
3
|
systemctl start tomcat9.service
systemctl restart tomcat9.service
systemctl stop tomcat9.service
|
配置服务自启动
1
|
systemctl
enable
tomcat9.service
|
===============================================================