非编译类语言代码上线

非编译类语言代码上线

手动代码上线(非编译类语言)

1.码云创建代码仓库

[root@tomcat01 /opt]# rz yiliaoqixie.zip 
[root@tomcat01 /opt]# unzip yiliaoqixie.zip 
[root@tomcat01 /opt]# cd yiliaoqixie/
[root@tomcat01 /opt/yiliaoqixie]# git config --global user.name "孟诗雨"
[root@tomcat01 /opt/yiliaoqixie]# git config --global user.email "912418275@qq.com"
[root@tomcat01 /opt/yiliaoqixie]# git init
[root@tomcat01 /opt/yiliaoqixie]# git add .
[root@tomcat01 /opt/yiliaoqixie]# git commit -m '第一次提交'
[root@tomcat01 /opt/yiliaoqixie]# git remote add origin git@gitee.com:meng_shi_yu/yiliao.git
[root@tomcat01 /opt/yiliaoqixie]# git push -u origin master
码云上传代码就ok了  
是因为之前已经配置过码云了 

2.部署环境

[root@tomcat01 /opt]# mkdir data  新建空的目录
[root@tomcat01 /opt]# cd data/

[root@tomcat01 /opt/data]# git clone   git@gitee.com:meng_shi_yu/yiliao.git 
拉取码云上的代码
我在码云上更改了个文件

[root@tomcat01 /opt/data]# cd yiliao/     
[root@tomcat01 /opt/data/yiliao]# git remote 
origin
[root@tomcat01 /opt/data/yiliao]# git pull -u origin master 
更新我刚改的文件

这里面我用了之前的环境 环境不干净 所以报了502的错

[root@git_web01 ~]# mkdir /code

[root@tomcat01 /opt/data]# tar zcf yiliao_v1.tar.gz yiliao 
[root@tomcat01 /opt/data]# scp -rp yiliao_v1.tar.gz 10.0.0.7:/code

[root@git_web01 /code]# ls
yiliao_v1.tar.gz
[root@git_web01 /code]# mkdir /html
[root@git_web01 /code]# tar xf yiliao_v1.tar.gz -C /html
[root@git_web01 /code]# rm -rf /usr/share/nginx/html
[root@git_web01 /code]# ln -s /html/yiliao /usr/share/nginx/html
[root@git_web01 /code]# systemctl restart nginx

如果报502
看看nginx配置
[root@git_web01 /code]# cat /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
	 index index.html;
	 root /usr/share/nginx/html;   这一块改改 目录指向什么的
        }
    }
}
[root@git_web01 /code]# systemctl restart nginx.service 
访问 10.0.0.7

3.负载均衡配置一波

`lb端配置
[root@lb01 ~]# cat /etc/nginx/nginx.conf 
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream monitor {
    include /etc/nginx/upstream_monitor;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
       proxy_pass http://monitor;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
        }
    }
}
[root@lb01 ~]# cat /etc/nginx/upstream_monitor 
server 10.0.0.7;
server 10.0.0.8;

`web端配置
[root@git_web01 ~]# cat /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  10.0.0.5;
        location / {
	 index index.html;
	 root /usr/share/nginx/html;
        }
    }
}
10.0.0.5访问成功

4.源代码如果更新?

变化一次就从新打一次包推过去

[root@tomcat01 /opt/yiliaoqixie]# git pull -u origin master --tags 更新
[root@tomcat01 /opt/data]# tar zcf yiliao_v2.tar.gz yiliao 改v2就行
后面操作和第一次一模一样 

解压创建软链接的时候先删除之前的软链接 再创建
[root@git_web01 /code]# tar xf yiliao_v2.tar.gz -C /html
[root@git_web01 /code]# rm -rf /usr/share/nginx/html
[root@git_web01 /code]# ln -s /html/yiliao /usr/share/nginx/html
实现回滚就是这样 把软链接删了 重新建软链接就行

自动化代码上线(非编译类语言)

简单脚本自动化代码上线

分发密钥这个可以单另写一个脚本 一键推完

for循环ip也可以单另写一个脚本 ip 引用一下

[root@tomcat01 ~]# cat /server/scripts/codeOnline.sh
#!/bin/bash
for i in 7 8
do
scp -p /root/.ssh/id_rsa.pub 10.0.0.$i:/root/.ssh/authorized_keys
done

cd /opt/data/yiliao
git pull -u origin master --tags
git_version=`git tag|tail -1`
tar_name="yiliao_${git_version}.tar.gz"

if [ -f /opt/data/$tar_name ];then
   echo "当前已经是$git_version版了"
   exit 6
fi

cd /opt/data
tar zcf  /opt/data/$tar_name  yiliao

for n in 7 8
do
scp -rp /opt/data/$tar_name  root@10.0.0.$n:/code

ssh root@10.0.0.$n tar xf /code/$tar_name  -C /html

ssh root@10.0.0.$n mv /html/yiliao /html/yiliao_$git_version

ssh root@10.0.0.$n rm -fr /usr/share/nginx/html

ssh root@10.0.0.$n ln -s /html/yiliao_$git_version /usr/share/nginx/html
done

简单自动化回滚脚本

[root@tomcat01 /server/scripts]# cat roolback.sh 
#!/bin/bash
ver=$1
cd /opt/data/yiliao
all_tag=`git tag`

fanhuizhi=`echo $all_tag|grep -w -c $ver`    w参数是精确匹配 找2不会匹配到22

if [ ! $fanhuizhi -eq 1 ];then
   echo "请确认你输入的版本号是否存在!"
   exit 5
fi

for n in 7 8
do
ssh root@10.0.0.$n   rm -fr /usr/share/nginx/html
ssh root@10.0.0.$n ln -s /html/yiliao_$ver /usr/share/nginx/html
done

两个加一起

[root@tomcat01 /server/scripts]# cat auto_Online.sh 
#!/bin/bash
menu(){
cat<<EOF
###############
1.代码升级
2.回滚到指定版本
3.查看版本列表
4.退出
###############
EOF
}
menu
read -p "请输入你要执行的编号:" num
case $num in
    1)
    /bin/bash  /server/scripts/codeOnline.sh    调用脚本
    ;;
    2)
    read -p "请输入要回滚到的版本:" n
    /bin/bash  /server/scripts/roolback.sh $n   调用脚本
    ;;
    3)
    cd /opt/data/yiliao && git tag
    ;;
    4)
    exit
    ;;
    *)
    echo "请按要求输入{1,2,3,4}"
esac



#!/bin/bash
action=$1
version=$2
if [ $action == 'update' ];then
    /bin/bash  /server/scripts/codeOnline.sh

elif [ $action == 'rollback' ];then
   /bin/bash  /server/scripts/roolback.sh $version

elif [ $action == 'list' ];then
    cd /opt/data/yiliao && git tag

else
    echo '你的输入有误
    你可以执行以下命令:
    update  代码升级
    rollback $tag  回滚到指定版本
    list     查看版本列表
'
fi
posted @ 2019-11-27 14:25  干瘪的柠檬  阅读(251)  评论(0)    收藏  举报