• 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,并不符合我们生产时真正的要求,接下来我们会继续对流水线进行改造。

  • 相关阅读:
    nginx.conf配置
    前端学习2——CSS3
    【C++干货铺】初识模板
    并联机器人结构分析与领域应用
    《八》QSplitter拆分器以及QDockWidget窗口详解
    MAML:User Diverse Preference Modeling by Multimodal AttentiveMetric Learning
    xatlas源码解析(七)
    Redis学习笔记—常见应用场景—BitMap
    C语言 一、二维数组
    代码随想录算法训练营第三十五天|860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
  • 原文地址:https://www.cnblogs.com/Tassdar/p/16054271.html