開工第一天,新年第一篇,開工大吉,諸事順利!
因爲流程自動化改造,需要對一些項目啓動方式進行標準化,之前通過遠程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