云效流水线+ECS服务器,自动化部署属于自己的Web页面

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 项目协作,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
简介: 本文主要介绍如何通过使用ECS服务器与npm,结合云效的流水线服务以仓库代码提交为触发方式,进行了基于Vue的Web网页部署。

引言


本文主要结合自身项目构建经历,介绍如何通过使用ECS服务器与npm,结合云效DevOps的流水线服务,以仓库代码提交为触发方式进行基于Vue的Web网页部署。从而带来集成式开发部署的良好体验。如有不足之处,欢迎各位开发者指正。


0、前言


 本文为参与飞天加速计划·高校学生在家实践的活动文章。本人为北京邮电大学软件工程专业的一名大三学生,通过本学期崔毅东老师的“云计算技术”课程了解到本活动。希望通过使用ECS云服务器来完成对云计算相关课程内容的学习,并希望结合阿里云云效服务,来更好地指导本学习实践课程的相关开发。



1、工件准备

本文中所使用到的工件有:

  • 阿里云云效
  • 阿里云ECS服务器
  • Node.js
  • 一个基于Vue的Web项目


2、配置步骤


2.1 准备工作

 首先我们来介绍一下云效。云效是一个一站式DevOps平台,能够为开发者从需求分析、项目协作与文档管理、产品开发与跟踪、项目测试与交付的一整套完整开发环境。云效平台所提供的功能如下图所示,健全的功能体系属实为项目开发提供了更好的便捷性与更高的效率。

 回到正题。首先需要注册一个阿里云的ECS服务器,并在云效上免费申请注册企业。这里不再进行赘述。

image.png

 

为了便于我们的主机部署,我们还需要在ECS服务器中安装Node.js:

(1)首先登录Node.js官网下载安装包:http://nodejs.cn/download/

(2)之后将安装包上传至服务器,解压缩后配置环境变量,具体内容可以参考这里

(3)为了便于我们部署页面,还需要安装serve插件:

npm install -g serve



2.2 配置云效代码管理仓库

 为便于我们采用云效流水线工具进行自动化部署,在申请开通云效服务后,我们首先来到工作台,点击右上角的【代码管理】进入到我们企业的代码仓库添加我们的项目代码:

image.png

【代码管理】功能其实就相当于一个Git仓库。进入Codeup代码管理界面后,可以点击右上角的【添加库】,新建或导入我们的项目代码:

image.png

  • 新建代码:可以像在Gitee或Github上新建代码仓库一样轻松构建我们的代码仓库:
  • 导入代码库:支持多种导入方式,包括GiteeGithub

image.png

完成项目代码的构建后,即可在项目内部配置部署流水线功能。



2.3 流水线的配置

 来到相应的项目中,点击页面左侧的【流水线】,然后在页面中选择【新建流水线】:

image.png

 在新建流水线界面,我们可以看到云效根据不同的开发环境,提供了多种流水线模板,这里大家可以根据自身需求,选择合适的模板:

image.png

在选定模板后,我们即可点击流水线上的项目,进行我们的流水线配置了。



2.3.1 添加流水线源

image.png

流水线源即为我们需要执行流水线源的项目代码。

点击【添加流水线源】后,我们便可以在页面右侧选择我们需要进行配置的相应代码仓库。

image.png

在这里,我们选择了已经在【Codeup(代码管理)】中部署好的项目。



2.3.2 配置主机部署

 为了将构建好的项目制品部署在主机上,我们需要在流水线上点击【主机部署】,然后在右侧界面选择需要部署到的主机上:

image.png

 如果是第一次部署,可以选择【新建主机组】,根据列表中情况选择相应的主机:

image.png

 这里以阿里云ECS为例,我们可以在本页面添加服务连接,然后根据自己的ECS服务器所处地域对主机进行添加(如忘记ECS服务器的所在地域,可以在【控制台】-【云服务器ECS】中查看相应实例的地址):

image.png



2.3.3 配置代码提交自动运行流水线

 流水线支持webhook方式触发流水线的运行。我们可以在流水线的编辑页面,选择上方的【触发设置】,复制触发器信息:

image.png

 然后来到【代码管理】所需配置的项目界面,选择左下角的【设置】,然后选择【Webhooks】-【新建Webhook】,刚才复制的触发器链接填写至此,然后在触发器上勾选触发事件。这里我们选择【推送事件】。

image.png

经过上述的配置后,在每次通过Git推送Commit后,流水线便可自动运行。



2.3.4 配置流水线命令

   为了便于我们自动化部署Web应用,我们还需要对流水线上的某些环节配置额外的命令:

(1)Node.js构建

 由于我们需要通过npm的serve命令,将项目文件打包生成dist目录以便用于web页面启动,因此需要选中【Node.js构建】,在Node.js构建中添加如下命令:

npm install

npm run serve

image.png

 注意:有时我们的项目使用到的插件无法从淘宝npm的镜像上下载到,从而可能导致构建出错的问题;建议将默认命令中的cnpm替换为npm。若项目中有使用到我们自定义的npm插件,配置方法可参考这里


(2)主机构建

 由于构建完成后,流水线会将我们的代码制品打包放置在指定的位置,这里我们可以根据自身需要更改部署配置的下载路径:

image.png

 由于在本次项目中,我们需要使用制品文件中的dist目录进行Web页面部署,因此这里我们编写脚本,将生成的制品文件解压到需要的目录下:

tar -zxvf /home/admin/app/package.tgz /home/admin/app/

image.png

(3)额外命令

 在解压完毕后,我们还需要在主机上使用serve命令启动我们的Web页面,这里我们建议在ECS服务器上新建一个简单的脚本,专门用于调用serve服务。(运行流水线的服务器并不是我们的ECS主机,直接在流水线上调用,可能会引起无法找到命令导致运行失败。运行失败可以删除该流水线任务,直接在ECS主机上使用该脚本即可)

 以本项目为例,我们登录ECS服务器,在/opt目录下新建脚本文件flow.sh,编写如下内容:

#!bin/bash# 这里我们采用了绝对路径调用的方式,防止系统无法识别到serve命令# 如果不清楚serve所在的目录,可以通过which serve命令进行查看/etc/opt/node/bin/serve /home/admin/app/dist


之后使用chmod 777 /opt/flow.sh将脚本转化为可执行文件。

然后来到流水线,在界面右侧选择新的任务,这里我们选择【执行命令】:

image.png

 然后更改任务名称为【执行serve dist】(自定义名称即可),然后在执行命令中执行我们的脚本即可:

image.png



3、服务器安全组配置

 我们可以看到,通过serve命令部署的Web页面端口默认为3000,由于ECS服务器的安全组规则受限,我们无法通过外网直接访问,还需要开放该端口。image.png

 我们这里可以来到阿里云控制台,选择我们相应的ECS服务器,在侧边栏中选择【网络与安全】-【安全组】,在选择相关的实例后,在【入方向】中点击【手动添加】放行3000端口,这样即可在我们的主机上访问我们部署好的页面了。

image.png

效果如下:

image.png

image.png



4、使用收获

  • 了解了ECS服务器在镜像、网络安全、存储等方面的功能以及基本的配置方法;
  • 学会了通过远程连接ECS服务器,在ssh和sftp环境下执行基本的命令;
  • 熟悉了如何使用ECS服务器,结合云效以及流水线工具进行自动化部署。



相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
移动开发 数据挖掘 开发者
服务器发送事件(SSE)在现代Web开发中的关键作用
服务器发送事件(SSE)是HTML5标准协议,用于服务器主动向客户端推送实时数据,适合单向通信场景。相比WebSocket,SSE更简洁高效,基于HTTP协议,具备自动重连、事件驱动等特性。常见应用场景包括实时通知、新闻推送、数据分析等。通过Apipost等工具可轻松调试SSE,助力开发者构建高效实时Web应用。示例中,电商平台利用SSE实现秒杀活动通知,显著减少延迟并简化架构。掌握SSE技术,能大幅提升用户体验与开发效率。
|
12月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
251 3
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
144 3
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
867 0
|
16天前
|
人工智能 运维 监控
当AI遇上自动化:运维测试终于不“加班”了
当AI遇上自动化:运维测试终于不“加班”了
153 9
|
23天前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
2月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
74 4
|
4月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
252 4
|
8月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
305 14

热门文章

最新文章

下一篇
开通oss服务