Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程的方式运行。这样的话,可以很方便地启动 / 停止应用程序,同时也可以支持开机自启。开机自启tomcat是比较重要的,可以保证由于意外而使机器需要重启时不需要手动重启tomcat就可以自动恢复服务。
简而言之,在生产环境中我们需要将tomcat配置成以daemon守护进程来运行,主要有以下几个原因:
- 以daemon方式运行tomcat可使tomcat不受终端影响,不会因为退出终端而停止运行。
- 可以让tomcat以普通用户身份运行。
- 可以让tomcat在系统启动时自动运行,且实现非root用户自运行。
1、在/usr/local/apache-tomcat-7.0.68/bin中有commons-daemon-native.tar.gz 压缩包(每个版本都有对应的包在tomat包里)
2、解压commons-daemon-native.tar.gz
tar -zxvf commons-daemon-native.tar.gz
3、解压完成,出现commons-daemon-1.0.15-native-src文件夹(目录)
4、 执行configure 文件
cd commons-daemon-1.0.15-native-src/unix ./configure
5、 编译 (注意不是安装,这里的是为了编译出jsvc文件)
make
6、 编译完成后出现jsvc文件夹,复制jsvc到/usr/local/apache-tomcat-7.0.68/bin目录下面
cp jsvc ../../
7、避免内存溢出,设置环境变量(添加setenv.sh,内容如下)该文件放在bin下边,跟daemon.sh文件同级
#add tomcat pid CATALINA_PID="$CATALINA_BASE/tomcat.pid" #add java opts JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx2048M -XX:MaxNewSize=256m"
8、/usr/local/apache-tomcat-7.0.68/bin/daemon.sh start启动tomcat
9、配置tomcat为系统服务,并实现自动启动,首先修改/usr/local/apache-tomcat-7.0.68/bin目录下daemon.sh脚本,在首行 #!/bin/sh 的下一行添加服务配置信息
# chkconfig: 2345 20 80
# description: Startup script for the Tomcat 7.0.65 Server
10、找到 test ".$TOMCAT_USER" = . && TOMCAT_USER= 这一行,在前面加上jdk和tomcat环境配置
JAVA_HOME=/usr/softwares/jdk1.6.0_45 CATALINA_HOME=/usr/softwares/apache-tomcat-7.0.68 test ".$TOMCAT_USER" = . && TOMCAT_USER=wyan
参数说明
chkconfig 的2345表示默认服务级别,启动顺序为20,关闭顺序为80
TOMCAT_USER=wyan,以wyan用户来执行tomcat程序
11、把tomcat添加成系统服务进行启动,在上面的配置正确后,要将daemon.sh添加成为服务就非常简单了,只需要创建一个软链到/etc/rc.d/init.d/目录中即可(此步骤需要切换root,并且路径要为全路径)
ln -s /usr/softwares/apache-tomcat-7.0.68/bin/daemon.sh /etc/rc.d/init.d/tomcat7
注意:切换到root用户,然后修改连接归属用户
chown -R wyan:wyan /etc/rc.d/init.d/tomcat7
然后可以切换到wyan用户进行启动停止测试
1.启动:
service tomcat7 start
2.停止:
service tomcat7 stop
12、添加tomcat7服务自动启动,并查看是否添加成功
chkconfig --add tomcat7 #添加tomcat服务
chkconfig --list tomcat7 #查看服务是否添加成功
然后重启linux发现tomcat会自动启动成功,注意守护进程是root的,工作进程是wyan的,这一点要知晓
问题记录:把日志清除后,重启linux,tomcat随系统自动启动,发现日志中catalina-daemon.out日志文件所属用户是root,这个应该是正常的
如果要把这个文件所属用户改成wyan,操作方式是保留catalina-daemon.out文件,并且chown -R wyan:wyan catalina-daemon.out执行,重启后文件所属用户仍然是wyan
但是如果删除文件后,重启,文件所属用户又会变成root,所以catalina-daemon.out文件尽量不要删除;以后再找完美解决方案
遇到问题描述:
在使用了daemon方式启动后,发现应用打印出的日志为乱码,之前的启动方式不为乱码,在网上找了很多方法,解决方式都是在daemon.sh文件中添加字符集,最后通过添加如下配置解决:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
添加配置最好添加在之前配置的代码下边挨着,方便维护;(问题解决原理就是这里配置的字符集与linux的字符集相同,查看linux字符集命令:echo $LANG)