服務(wù)器環(huán)境準(zhǔn)備
?論?的寶塔還是?動(dòng)命令?,本機(jī)還是遠(yuǎn)程,需要提供的軟件服務(wù)有:
1. mysql 5.7
2. redis 最新版即可
3. java 1.8
java服務(wù)
jar ?件存儲(chǔ),根據(jù)??需求來(lái),此處僅為示例
/www/wwwroot/VueProjectHome/ 分別存放平臺(tái)端,商戶管理端,商城
/www/wwwroot/JavaProjectHome 分別存放Crmeb-admin.jar和Crmeb-front.jar
啟動(dòng)shell根據(jù)項(xiàng)?中的轉(zhuǎn)移過(guò)去修改對(duì)應(yīng)?錄配置,注意設(shè)置執(zhí)?權(quán)限
如下示例:
#!/bin/bash
#開(kāi)始時(shí)間 時(shí)間戳
startTime=`date +'%Y-%m-%d %H:%M:%S'`
#接口項(xiàng)目站點(diǎn)路徑(目錄按照各自配置)
APP_PATH=/www/wwwroot/xxx
#APP_PATH=/Library/WebServer/Documents/zhongbang/java/crmeb/target
#jar包文件名稱
APP_NAME=$APP_PATH/Crmeb-admin.jar
#日志文件名稱
LOG_FILE=$APP_PATH/crmeb_out.log
#啟動(dòng)環(huán)境 # 如果需要配置數(shù)據(jù)和redis,請(qǐng)?jiān)?application-prod.yml中修改, 用jar命令修改即可
APP_YML=--spring.profiles.active=prod
#數(shù)據(jù)庫(kù)配置
rm -rf $LOG_FILE
echo "開(kāi)始停止 Crmeb 項(xiàng)目進(jìn)程"
#查詢進(jìn)程,并殺掉當(dāng)前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ $pid ];then
echo "pid: $pid"
kill -9 $pid
echo "Crmeb 項(xiàng)目進(jìn)程進(jìn)程終止成功"
fi
sleep 2
#判斷jar包文件是否存在,如果存在啟動(dòng)jar包,并時(shí)時(shí)查看啟動(dòng)日志
if test -e $APP_NAME;then
echo '文件存在,開(kāi)始啟動(dòng)此程序...'
# 啟動(dòng)jar包,指向日志文件,2>&1 & 表示打開(kāi)或指向同一個(gè)日志文件 --spring.profiles.active=prod 啟動(dòng) prod環(huán)境
nohup java -jar $APP_NAME $APP_YML > crmeb_out.log 2>&1 &
echo "正在發(fā)布中,請(qǐng)稍后......"
sleep 10s
#通過(guò)檢測(cè)日志來(lái)判斷
while [ -f $LOG_FILE ]
do
success=`grep "Started CrmebAdminApplication in " $LOG_FILE`
if [[ "$success" != "" ]]
then
# echo "Crmeb start ........."
break
else
# echo "Crmeb Running ......."
sleep 1s
fi
# echo "開(kāi)始檢測(cè)啟動(dòng)失敗標(biāo)記"
fail=`grep "Fail" $LOG_FILE`
if [[ "$fail" != "" ]]
then
echo "項(xiàng)目啟動(dòng)失敗"
tail -f $LOG_FILE
break
else
# echo "Crmeb Running ......."
sleep 1s
fi
done
echo "Crmeb Started Success"
endTime=`date +'%Y-%m-%d %H:%M:%S'`
startSecond=$(date --date="$startTime" +%s);
endSecond=$(date --date="$endTime" +%s);
total=$((endSecond-startSecond))
# shellcheck disable=SC2027
echo "本次運(yùn)行時(shí)間: "$total"s"
# shellcheck disable=SC2086
echo "當(dāng)前時(shí)間:"$endTime
else
echo '$APP_NAME 文件不存在,請(qǐng)檢查。'
fi
#在 $APP_NAME 同級(jí)目錄下運(yùn)行 ./startAdmin.sh 命令即可啟動(dòng)項(xiàng)目。
如果啟動(dòng)中遇到不能正常啟動(dòng) 如:的錯(cuò)誤,那么根據(jù)下?示例配置你的環(huán)境變量,即使在配置前java -version 都能正確識(shí)別也是要配置的,請(qǐng)遵守,別浪費(fèi)時(shí)間哦!
Could not find or load main class org.springframework.boot.loader.JarLauncher
nginx掛在前端??后處理跨域
Vue項(xiàng)?打包注意,原來(lái)的?域名直接連接的?式是API直接配置java靜態(tài)代理站點(diǎn)
?如官?的Vue管理端配置的是:api.admin.merchant.java.crmeb.net
若?ip+端?的?式訪問(wèn)需要配置為當(dāng)前的靜態(tài)站點(diǎn)域名或者 / 都可以 。此?法也適合于不??域名的部署?式
let domain='http://你的ip:8891'
vue打包后的項(xiàng)?存儲(chǔ)位置可以根據(jù)??需求來(lái),此處僅為示例,重要能正常讀取。
僅供參考:
注意:此處的api和單獨(dú)部署的稍有不同,api?的是前端的域名,因?yàn)閷?duì)應(yīng)域名做了 /api的轉(zhuǎn)發(fā),訪問(wèn)了服務(wù)器的java程序?qū)?yīng)的tomcat端?。使?/api的配置是為了處理跨域。
期間如果遇到特殊問(wèn)題環(huán)境評(píng)論區(qū)中討論。