最近公司里的一个项目由要发布到阿里云上,为了一劳永逸采用jenkins结合ansible作了自动化部署,期间各类小坑,都一一解决,惟一的一个大坑,伤神了一下午才解决掉!由于项目架构是基于springboot的,因此直接jar包运行,为了方便直接把运行jar包作成了centos的服务,可是自建服务的Type=forking 没有进行设置,却是一运行启动正常了就关闭,以前还加了重试机制,致使服务一直在重启。
虽然是个小记录,可是在这里你能大概了解一下自动化部署相关的一些东西,以及centos7的服务建立相关东西.
另外鼓励项目,尤为是springboot项目都用自建服务的方式来进行部署安装,由于用systemctl能直接控制,journalctl调试查看日志真的是太方便了。java
安装与配置很少说,主要是新建一个任务里的配置,由于这里须要ansible,因此须要提早安装一下ansible插件。git
配置里代码库里配好git路径spring
在构建的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}"
---
- 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
略
在/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
在 /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服务器
略。。。。
8月 24 11:08:39 localhost.localdomain server.sh[115642]: 11:08:39,242 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
8月 24 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()其余略。。。。