b2b電子商務(wù)網(wǎng)站開(kāi)發(fā)在線排名優(yōu)化工具
概述
涉及:1)sh 無(wú)法直接運(yùn)行java命令,可以軟連,此處是直接路徑
2)sh腳本報(bào)一堆空格換行錯(cuò)誤:需將轉(zhuǎn)成unix標(biāo)準(zhǔn)格式;
#切換到上傳的腳本路徑
dos2unix 腳本文件名.sh
2)SELINUX 授權(quán)允許啟動(dòng)sh 腳本
3)SELINUX 授權(quán)允許啟動(dòng)寫(xiě)入的日志文件
軟連接方法(無(wú)需操作)
cd /usr/bin
ln -s -f /usr/local/jdk17/java
操作步驟
1、新建sh 腳本
?新建:service_script.sh 腳本
注:需要配置
1)jdk的路徑;2)程序日志路徑;3)java 名稱(chēng)
#!/bin/bash
#這里替換為jar包名字
APP_NAME=hy-admin.jar
#根據(jù)實(shí)際情況修改參數(shù)
JVM="-server -Xms4g -Xmx4g"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"export JAVA_HOME=/usr/local/jdk17
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin#使用說(shuō)明,用來(lái)提示輸入?yún)?shù)
usage() { echo "Usage: sh 執(zhí)行腳本.sh [start|stop|restart|status|log|backup] [port]" exit 1
} port=$2
#檢查指定端口是否是有程序在運(yùn)行
is_exist(){# 默認(rèn)端口if [ "${port}" == "" ]; then# 默認(rèn)使用9000port=9000fi # 獲取端口占用的進(jìn)程號(hào)pid=`lsof -i:$port | awk 'NR == 2' | awk '{print $2}'`#如果不存在返回1,存在返回0if [ -z "${pid}" ]; then return 1 else return 0 fi
} #啟動(dòng)方法
start(){ is_exist if [ $? -eq "0" ]; then echo "${port} 端口已經(jīng)被 ${pid} 進(jìn)程占用" else #nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 #后臺(tái)啟動(dòng)jar包,且控制環(huán)境變量,根據(jù)實(shí)際情況修改吧。#nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null 2>&1 &cd /data/hy-cost-grain-proecho "">log.filenohup ${JAVA_HOME}/bin/java -jar ${APP_NAME} --server.port=${port} >log.file 2>&1 &echo " ${APP_NAME} 進(jìn)程 $! 在 ${port} 端口啟動(dòng)中......"logfi
} #停止方法
stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pidecho "${port} 端口的進(jìn)程 ${pid} 已經(jīng)被中斷" else echo "${port} 端口未啟用" fi
} #輸出運(yùn)行狀態(tài)
status(){ is_exist if [ $? -eq "0" ]; then echo "${port} 端口已被進(jìn)程 ${pid} 占用" else echo "${port} 端口未被占用" fi
}
#重啟
restart(){ stop start
} #日志
log(){# 輸出實(shí)時(shí)日志tail -n 100 -f log.file
}#備份
backup(){#根據(jù)需求自定義備份文件路徑。BACKUP_PATH=./back/#獲取當(dāng)前時(shí)間作為備份文件名BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'#備份當(dāng)前jar包c(diǎn)p -r ./$APP_NAME $BACKUP_PATH$BACKUP_DATE'.jar'
}#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說(shuō)明
case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; "log") log ;; "backup") backup ;; *)
usage
;;
esac
注意上傳的.sh腳本轉(zhuǎn)成系統(tǒng)可識(shí)別的unix編碼格式的文件
上傳后切換到腳本路徑:運(yùn)行如下命令
dos2unix service_script.sh
2、生成日志文件并授權(quán)
SELINUX 允許啟動(dòng)寫(xiě)入日志的文件;2-3步驟,理論也可以關(guān)閉SELINUX
echo ''>/data/hy-cost-grain-pro/log.file
chmod 777 /data/hy-cost-grain-pro/log.file#授予啟動(dòng)腳本寫(xiě)入
semanage fcontext -a -t var_log_t /data/hy-cost-grain-pro/log.file
restorecon -Rv /data/hy-cost-grain-pro/log.file#查看授權(quán)
semanage fcontext -l|grep var_log_t
3、授權(quán)啟動(dòng)腳本啟動(dòng)權(quán)限
設(shè)置 SELINUX 允許啟動(dòng)運(yùn)行的腳步,2-3步驟,理論也可以關(guān)閉SELINUX
#允許運(yùn)行啟動(dòng)腳本
semanage fcontext -a -t init_exec_t /data/hy-cost-grain-pro/service_script.sh
restorecon -R -v /data/hy-cost-grain-pro/service_script.sh#查看授權(quán)
semanage fcontext -l|grep init_exec_t
4、新建啟動(dòng)服務(wù)文件
[Unit]
Description=java-cost-grain-pro
After=syslog.target
[Service]
Type=simple
#延遲啟動(dòng),如果jar包需要運(yùn)用到數(shù)據(jù)庫(kù),所以在這加了睡眠10秒
ExecStartPre=/bin/sleep 8
ExecStart=/data/hy-cost-grain-pro/service_script.sh start
ExecReload=/data/hy-cost-grain-pro/service_script.sh restart
ExecStop=/data/hy-cost-grain-pro/service_script.sh stop[Install]
WantedBy=multi-user.target
5、上傳并加入開(kāi)機(jī)自動(dòng)
上傳至 :/etc/systemd/system
#刷新服務(wù)配置
systemctl daemon-reload
# 啟動(dòng)服務(wù)
systemctl start java-grain-9000.service
# 服務(wù)開(kāi)機(jī)自啟
systemctl enable java-grain-9000.service
# 停止服務(wù)
systemctl stop java-grain-9000.service
# 查看服務(wù)狀態(tài)
systemctl status java-grain-9000.service -l
重啟,測(cè)試開(kāi)機(jī)自啟,啟動(dòng)花了15s
reboot
?
?可能問(wèn)題:
1)無(wú):lsof 命令
yum install lsof
?2)?SELinux 介紹
SELinux 有三種工作模式,注意:沒(méi)有特別安全要求,可以使permissive;不同級(jí)別配置相同;
-
enforcing:強(qiáng)制模式。任何違反策略的行為都會(huì)被禁止,并且產(chǎn)生警告信息。
-
permissive:允許模式。違反策略的行為不會(huì)被禁止,只產(chǎn)生警告信息。
-
disabled:關(guān)閉 SELinux。
3)selinux 永久關(guān)閉
一、臨時(shí)關(guān)閉
setenforce 0
注意:重啟系統(tǒng)后還會(huì)開(kāi)啟。
二、永久關(guān)閉
1、vim /etc/selinux/config,SELINUX=disabled,然后保存退出。
2、 vim /etc/sysconfig/selinux,SELINUX=disabled,然后保存退出。
注意:如未生效重啟即可?
三、驗(yàn)證方法
輸入命令:getenforce ?
4)若切換路徑的數(shù)據(jù)庫(kù)也能自啟:請(qǐng)參考本人博客
Centos(rocky,red Hat) yum 安裝mysql,切換路徑并設(shè)置開(kāi)機(jī)自啟
Centos(rocky,red Hat) yum 安裝mysql,切換路徑并設(shè)置開(kāi)機(jī)自啟_rocky和red hat_小云小白的博客-CSDN博客1、安裝方式介紹mysql安裝共3中方式1)yum安裝,最簡(jiǎn)單的方式2)rpm包安裝,切記下載相應(yīng)系統(tǒng)的 穩(wěn)定版 源碼包,相對(duì)較簡(jiǎn)單3)壓縮包安裝:自由度高,但配置相應(yīng)復(fù)雜,且需要自己注冊(cè)自啟服務(wù)注:1,2,3無(wú)法在一臺(tái)機(jī)器上共存,1,2可以通過(guò)mulit-mysql啟動(dòng)多個(gè)服務(wù)看,但無(wú)法實(shí)現(xiàn):單機(jī)上的myql主從只有3方式支持1臺(tái)安裝多個(gè)mysql服務(wù),實(shí)現(xiàn)mysql主從一、安裝步驟1.獲取最新的yum rmp包地址下載地址:MySQL :: MySQL Commu_rocky和red hathttps://blog.csdn.net/qq_26408545/article/details/124114793?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22124114793%22%2C%22source%22%3A%22qq_26408545%22%7D