一次服務啓動不了的「慘案」

原因

最近公司裏的一個項目由要發佈到阿里雲上,爲了一勞永逸採用jenkins結合ansible作了自動化部署,期間各類小坑,都一一解決,惟一的一個大坑,傷神了一下午才解決掉!由於項目架構是基於springboot的,因此直接jar包運行,爲了方便直接把運行jar包作成了centos的服務,可是自建服務的Type=forking 沒有進行設置,卻是一運行啓動正常了就關閉,以前還加了重試機制,致使服務一直在重啓。 
雖然是個小記錄,可是在這裏你能大概瞭解一下自動化部署相關的一些東西,以及centos7的服務建立相關東西. 
另外鼓勵項目,尤爲是springboot項目都用自建服務的方式來進行部署安裝,由於用systemctl能直接控制,journalctl調試查看日誌真的是太方便了。java

自動化部署工具-jenkins

安裝與配置很少說,主要是新建一個任務裏的配置,由於這裏須要ansible,因此須要提早安裝一下ansible插件。git

  1. 配置裏代碼庫裏配好git路徑spring

  2. 在構建的shell裏作編譯代碼腳本以及本份,跟ansible playbook的調用(ansible相關能夠查看我以前寫的ansible入門那篇文章)shell

#定義常量
WORKSPACE=`pwd`
WAR_DIR=${WORKSPACE}/target
JAR_PRE=哈哈哈(包的名字)*.jar
JAR_HOME=/data/yiran/build
JAR_BAK=/data
/yiran/build_history
DATE=$(date +%Y%m%d%H%M%S)
JAENAME=action${DATE}.jar
#編譯包
mvn clean package -Dmaven.test.skip=true
#備份
mv ${JAR_HOME}/${JAR_PRE} ${JAR_BAK}/
mv ${WAR_DIR}/${JAR_PRE} ${JAR_HOME}/${JAENAME}
#ansible版本邏輯is 1.中止服務 2.啓動服務
ansible-playbook -i /etc/ansible/hosts yrServer /data/yiran/yaml/first.yaml --extra-vars "jarName=${JAENAME}"

ansible劇本

---
- hosts: yrServer
  vars:
    srcHome: /data/yiran/build
    descHome: /usr/local/xxx/bin
  remote_user: root
  tasks:
    - name: copy files
      copy: src={{srcHome}}/{{jarName}} dest={{descHome}}/xxx.jar
    - name: reload xxxservice
      service: name=xxx enabled=yes state=restarted
   

centos7自建服務

  1. 在/usr/lib/systemd/system 下建立xxx.service 賦754權限centos

[Unit]
Description=service‘s desc
After=network.target

[Service]

User=root
Group=root
Type=forking
ExecStart=/usr/local/xxx(這裏是你根據你實際狀況建的文件夾)/bin/server.sh
#Restart=always
#RestartSec=10
TimeoutSec=60

[Install]

WantedBy=multi-user.target

  1. 在 /usr/local/xxx(這裏是你根據你實際狀況建的文件夾)/bin/ 下建立server.shspringboot

#!/bin/bash
nohup /usr/bin/java -jar /usr/local/xxx/bin/xxxx.jar  --spring.profiles.active=prod  &
echo Start Success!

構建與測試

jenkis裏點擊當即構建,在服務器上netstar -lnp|grep 80 ,查看服務器已經啓動,運行正常bash

相關命令:systemctl stat/status/stop/enable/… xxx(建立的服務名) 
journalctl -u xxx(服務名) -f -b服務器

略。。。。
824 11:08:39 localhost.localdomain server.sh[115642]: 11:08:39,242 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
824 11:08:39 localhost.localdomain server.sh[115642]: 11:08:39,243 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@133314b - Registering current configuration as safe fallback point
////////////////////////////////////////////////////////////////////
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//
                  /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//
                 | \_|  ''\---/''  |   |                       //
//
                 \  .-\__  `-`  ___/-. /                       //
//
               ___`. .'  /--.--\  `. . ___                     //
//              ."" '
<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'
========         //
//
                          `=---='                              ////      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ////            佛祖保佑       永不宕機     永無BUG                    //////////////////////////////////////////////////////////////////////8月 24 11:08:43 localhost.localdomain server.sh[115642]: MyBatisConfiguration.pageHelper()其餘略。。。。
相關文章
相關標籤/搜索