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