• Azure DevOps (七) 通过SSH部署上传到服务器的应用


    上一篇中,我们实现了通过FTP把流水线编译出来的制品上传到我们的公网服务器上,这一篇我们来研究一下通过azure的ssh连接到服务器

    把应用在服务器上运行起来。

    文章配套视频专栏:

    https://space.bilibili.com/38649342/channel/seriesdetail?sid=2267536

    首先,我们书接上文,在release流水线的agent中添加第三个task,我们在右侧搜索ssh,点击添加。

     添加完成之后,需要我们去维护一个ssh的连接信息,我们点击Manage会跳转到azure的服务连接管理界面,在这里我们添加一个ssh的信息。

    下拉到ssh,点击下一步,填入SSH的信息,主要要在勾选一下下面的单选框,让所有流水线都可以访问到这个凭证。

    然后返回我们流水线的SSH界面,刷新选择我们新创建的凭证,选择inline scripts选项,编写脚本,在编写脚本之前我们需要准备一些东西

    1.守护进程的文件

    2.nginx的反向代理文件

    当然也可以不进行反向代理,直接暴露服务也是没问题的,测试环境无所谓,生产上肯定是要包一下反向代理的,所以我们按生产的来。

    守护进程文件内容我这里写了一个简单的

    [Unit]
    Description=Example java App running on centos
    
    [Service]
    WorkingDirectory=/home/ftp
    ExecStart=/usr/bin/java -jar /home/ftp/demo-app.jar
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=root
    
    [Install]
    WantedBy=multi-user.target

    nginx反向代理节点把80代理到1433:

    server {
        listen        80;
        location / {
            proxy_pass         http://localhost:1433;
            proxy_http_version 1.1;
            proxy_set_header   Upgrade $http_upgrade;
            proxy_set_header   Connection keep-alive;
            proxy_set_header   Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
        }
    }

     然后我们需要在服务器上线先手动把守护进程和反向代理配置好,这样日后流水线发布的时候只需要重启一下守护进程应用就自动重启了。

    接下来我们在bash中输入重启守护进程的命令,用于每次流水线执行完后重启应用。

    cd /home/ftp/app
    tar -xvf demo.tar.gz
    systemctl start demo

    然后我们运行一下流水线看看效果,运行成功,没有报错。

     我们上服务器看一下应用程序,守护进程重启成功,程序正常运行。

     到这里,我们通过流水线完成了从代码构建-》制品上传到服务器-》重启应用的整套流程,但是这只是一个非常简单的demo,并不符合我们生产时真正的要求,接下来我们会继续对流水线进行改造。

  • 相关阅读:
    乐字节Java编程语言发展,面向对象和类
    乐字节Java编程之方法、调用、重载、递归
    乐字节Java循环:循环控制和嵌套循环
    乐字节Java反射之四:反射相关操作
    乐字节Java反射之三:方法、数组、类加载器和类的生命周期
    乐字节Java反射之二:实例化对象、接口与父类、修饰符和属性
    乐字节Java反射之一:反射概念与获取反射源头class
    Java变量与数据类型之三:数据类型与转义字符
    数论 N是完全平方数 充分必要条件 N有奇数个约数
    动态规划专题 01背包问题详解 HDU 2546 饭卡
  • 原文地址:https://www.cnblogs.com/Tassdar/p/16054271.html
Copyright © 2020-2023  润新知