CentOS7通過systemctl啓動tomcat及JAVA service wrapper

       開工第一天,新年第一篇,開工大吉,諸事順利!

       因爲流程自動化改造,需要對一些項目啓動方式進行標準化,之前通過遠程ssh的方式啓動停止java程序會出現,啓動失敗或者啓動後端口正常監聽,但無法通過頁面訪問的情況。綜上問題,將java程序啓動停止改爲systemctl進行管理 ,方便操作,避免重複啓動或者進程沒有殺掉等其他一系列問題。

一、配置Tomcat啓動變量

編輯tomcat bin目錄下的setenv.sh文件如不存在請創建,添加如下配置,保存退出

export CATALINA_HOME=/data/tomcat
export CATALINA_BASE=/data/tomcat
export CATALINA_PID="$CATALINA_BASE/tomcat.pid"

二、創建service文件

進入 /usr/lib/systemd/system目錄,創建tomcat.service及daemon.service,文件內容如下 

#tomcat項目

[Unit]
Description=tomcat
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/data/tomcat/tomcat.pid
ExecStart=/data/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
User=root
Group=root

[Install]
WantedBy=multi-user.target
#daemon項目

[Unit]
Description=daemon
After=network.target

[Service]
Type=forking
ExecStart=/data/daemon/bin/testDaemon start
ExecStop=/data/daemon/bin/testDaemon stop
PrivateTmp=true
User=root
Group=root

[Install]
WantedBy=multi-user.target

保存退出,添加service文件的可執行權限,設置爲開機自啓動

systemctl enable tomcat.service
systemctl enable daemon.service

三、遇到的坑

在CentOS7上啓動tomcat非常緩慢,主要原因在於實例化SecureRandom對象,解決方法有以下兩種:

1. 在Tomcat環境中解決:

可以通過配置 JRE 使用非阻塞的 Entropy Source:

在 catalina.sh 中加入這麼一行:-Djava.security.egd=file:/dev/./urandom 即可

2. 在 JVM 環境中解決:

打開 $JAVA_PATH/jre/lib/security/java.security 文件

將securerandom.source=file:/dev/random替換成securerandom.source=file:/dev/./urandom

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章