一次服务启动不了的“惨案”

原因

最近公司里的一个项目由要发布到阿里云上,为了一劳永逸采用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()其余略。。。。
相关文章
相关标签/搜索