pipeline发布java网站项目
一.安装pipeline,Git plugin,Git Parameter Plug-In,Pulish Over SSH等插件并生成插件语法。
系统管理—>系统配置—>Publish over SSH配置
#此配置是使用ssh生成一对密钥,将id_rsa私钥放置于此,将id_rsa.pub拷贝到你要部署的远程web服务器上。
#使用root账户生成一对密钥ssh-keygenssh-copy root@x.x.x.x (拷贝到要部署的web服务器上实现免密登录)
新建项目(流水线)---->配置---->最下面流水线语法
1.Git Parameter Plug-In插件
2.Git plugin插件
3.triggers触发器
4.Pulish Over SSH插件
二.配置流水线脚本
pipeline { agent { label "task1" } parameters { gitParameter branch: ' ...
集成Ansible,实现发布多台Web服务器
实验环境:
gitlab(4G)
jenkins(3G)
slave/ansible
nginx
tomcat
tomcat
192.168.1.2/24
192.168.1.3/24
192.168.1.4/24
192.168.1.5/24
192.168.1.6/24
192.168.1.7/24
架构原理:使用gitlab作为代码版本管理系统,jenkins作为代码持续集成测试,结合ansible实现批量部署多台web服务器,nginx作为反向代理服务器代理后端web集群。
自动化部署流程:
1.git代码拉取
2.编译构建
3.推送到远程web服务器
4.备份web服务器上网站根目录的程序文件
5.部署新的程序文件到网站根目录
6.重启web服务验证访问
部署:
安装docker(gitlab服务器和jenkins服务器)
https://blog.csdn.net/qq_24760259/article/details/106785283
安装gitlab
###########安装配置git ...
案例十八文件系统入侵检测
对某个目录创建,删除文件监控挖矿病毒;应用程序和系统漏洞勒索病毒:可执行文件/usr/bin 串改 注入网站根目录/wwwroot 串改 注入#安装inotify-tools工具wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repoyum -y install inotify-tools
inotifywait 用法:inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [--format <fmt> ] [--timefmt <fmt> ] <file> [ ... ] 选项: -m:监视 -r:递归监视 -q:减少冗余信息 -e/--event:要监视的事件列表; 可监视的事件:create,delete,modify,move,access,attrib(元数据被修改),open,close - ...
案例十七DOS攻击防范脚本
Dos拒绝服务式的攻击点对点原理:tcp半连接c->sc<-sc->sDDos洪水式攻击cc攻击 请求web页面,耗尽服务器资源ssh防暴力破解(ip,次数) tail /var/log/audit/audit.log
#存放屏蔽的IP文件touch /tmp/drop_ip.log
#!/bin/bash#获取当前的时间,以nginx访问日志中的日期记录格式为准DATE=$(date +%d/%b/%Y:%H:%M)#nginx日志文件路径LOG_FILE=/usr/local/nginx/logs/default.access.log#获取日志文件中最后5000条日志,打印其中当前1分钟访问超过10次的IP;5000条日志根据你的应用访问量评估ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}')#循环遍历当前1分钟访问超过10次的IPfor IP i ...
案例十六自动发布PHP项目
环境:lnmp环境
#!/bin/bash#记录当时的时间DATE=$(date +%F_%T)#网站根目录(指定传参的形式,根据某个项目去指定)WWWROOT=/usr/local/nginx/html/$1#数据备份目录BACKUP_DIR=/data/backup#临时工作目录WORK_DIR=/tmp#项目名称PROJECT_NAME=php-demo# 拉取代码#切到临时目录下cd $WORK_DIR#判断当前下有没有项目名称目录,那么没有就会去github克隆项目到当前目录if [ ! -d $PROJECT_NAME ]; then git clone https://github.com/lizhenliang/php-demo#切到项目名称目录 cd $PROJECT_NAMEelse cd $PROJECT_NAME#否则有的话,就去增量拉取 git pullfi# 部署#判断当前网站的根目录是否存在,如果没有那就去创建if [ ! -d $WWWROOT ]; then mkdir -p $WWWROOT rsync -avz --excl ...
案例十五自动发布JAVA项目(tomcat)
#首先部署jdk,apache-tomcat,git,maven环境jdk安装地址:https://www.cnblogs.com/mrfo/p/10223277.htmlapache-tomcat安装地址:wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gzyum -y install git yum -y install unzipmaven安装地址:wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz#创建一个备份目录mkdir -p /data/backup
配置jdk以及maven的环境变量cat /etc/profileexport JAVA_HOME=/usr/local/jdk1.8export PATH=$PATH:$JAVA_HOME/bin:/usr/local/maven3.6/bin
# ...
案例十四nginx访问日志分析与切割
#移动nginx的默认日志文件到/tmp下mv /usr/local/nginx/logs/default.access.log /tmp/#发送一个信号,nginx会生成一个日志文件default.access.logkill -USR1 $(cat /var/run/nginx.pid)#再次查看default.access.log会为空cat /usr/local/nginx/logs/default.access.log #然后访问页面,重新生成日志#然后执行脚本文件会在log目录下创建一个月份的目录,log目录下的default.access.log文件就为空,月份目录下就是每天进行切割归档的日志文件
#!/bin/bash#定义当前nginx日志的目录路径LOG_DIR=/usr/local/nginx/logs#获取前一天的时间(零点执行的话)YESTERDAY_TIME=$(date -d "yesterday" +%F)#在nginx的log目录下创建一个按月份的归档目录,月份目录下就是每天的日志LOG_MONTH_DIR=$LOG_DIR/$(d ...
案例十三nginx访问日志分析
#实现的功能访问最多的IP访问最多的页面访问页面状态码数量根据时间段来访问最多的IP
#!/bin/bash# 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"#表示位置参数LOG_FILE=$1echo "统计访问最多的10个IP"#sort表示降序;-k2表示对第二列数字,-nr表示从大到小进行降序;head -10表示打印前10行,length表示统计数量#解释:打印日志中访问的IP以及每个IP访问对应的次数,(并统计IP的个数,也就是UV)awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' ...
案例十二MySQL数据库备份
#创建一个名为backup的用户来备份数据create user "backup"@"localhost" identified by "123.com";#授权给backup用户管理要备份的数据库的权限mysql> grant all on lz.* to "backup"@"localhost";
分库
#!/bin/bash#记录当时备份的时间DATE=$(date +%F_%H-%M-%S)#备份的主机,用户,密码以及备份到哪个目录下HOST=localhostUSER=backupPASS=123.com#创建要备份数据库所存放的目录BACKUP_DIR=/data/db_backup#egrep表示过滤掉不备份的库#遍历要备份的数据库DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|inform ...
案例十一监控MySQL主从同步状态是否异常
#!/bin/bash #连接的主机用户名密码HOST=localhostUSER=rootPASSWD=123.com#2>/dev/null表示忽略掉警告#打印匹配包含"Slave_.*_Running:"这个值的行,*代表通配符IO_SQL_STATUS=$(mysql -h$HOST -u$USER -p$PASSWD -e 'show slave status\G' 2>/dev/null |awk '/Slave_.*_Running:/{print $1$2}')#遍历循环for i in $IO_SQL_STATUS; do#以:为分隔符去掉右边的值,*代表右边所有值 THREAD_STATUS_NAME=${i%:*}#以:为分隔符去掉左边的值,*代表左边所有值 THREAD_STATUS=${i#*:}#判断IO和SQL线程的状态是否为YES if [ "$THREAD_STATUS" != &q ...