上云“加速器”——基于云效流水线快速上线企业门户网站

本文涉及的产品
对象存储 OSS,20GB 3个月
云效 DevOps 流水线,基础版人数 不受限
云解析 DNS,旗舰版 1个月
简介: 阿里云提出使用云效将项目代码部署到ECS,快速构建企业门户网站。该方案融合云原生技术和持续交付,通过云效流水线简化从开发到部署的全过程,实现快速迭代。文章详细阐述了技术架构,包括客户端、云解析DNS、VPC、ECS等组件,以及部署流程,包括准备阶段、部署网站服务、解析域名和可选的静态资源加速。此外,还介绍了如何使用云效平台创建流水线,实现自动化构建与部署,以及如何通过一键部署简化流程。整个方案旨在降低运维成本,提高速度和灵活性,同时提供域名备案和SSL证书配置的指导。

引言

在数字化转型的浪潮下,企业上云已成为不可逆转的趋势。随着互联网技术的飞速发展,企业门户网站作为企业的线上门面,不仅是品牌展示的窗口,更是连接客户、传递价值、驱动业务增长的关键平台,一个高效、稳定且富有吸引力的企业门户网站,能够跨越地理界限,24小时不间断地服务全球用户,成为塑造企业形象、增强市场竞争力的重要利器。

然而,传统网站部署方式往往伴随着高昂的时间成本与运维开销,难以满足企业对速度与灵活性的迫切需求。正是在这样的背景下,阿里云提出了全新的解决方案——使用云效将项目代码部署到云服务器ECS,快速完成一个企业门户网站的构建。该方案深度融合了云原生技术与持续交付理念,旨在通过云效流水线的强大能力,简化企业门户网站从开发到部署的全过程,实现快速迭代与即时反馈,让企业能够在瞬息万变的市场环境中迅速响应,保持领先。

在此,阿里云也推出了限时评测活动——体验高效构建企业门户网站解决方案并进行部署,写下您对解决方案的多维度评价及改进建议,发布评测,赢cherry机械键盘、小米路由器、护眼台灯、评测证书等多重好礼!

点击此处一键到达

image.png

下面,本文将深入实践并探讨如何利用阿里云云效平台的流水线功能,搭配弹性可扩展的云服务器ECS资源,构建并部署一个高性能的企业级门户网站。通过详实的步骤解析与实战演示,揭示如何借助云解析DNS等服务,确保用户请求无缝对接至云端,从而在保障访问速度与稳定性的同时,大幅降低IT基础设施的维护负担。

方案介绍

技术架构及相关基础设施和云服务

image.png

【专有名词解释如下】:

  • 客户端(Client):代表的是最终用户使用的设备或应用程序,例如浏览器或者移动应用。这些客户端会发起HTTP或HTTPS请求来访问企业门户网站。

  • 云解析DNS(Alibaba Cloud DNS):这是一个权威DNS服务,用于将用户的域名请求解析到对应的IP地址。在这个场景中,云解析DNS负责将客户端请求定向到VPC中的云服务器ECS实例。

  • 虚拟私有云(VPC):VPC是一个逻辑隔离的网络环境,在阿里云平台上创建。它可以包含多个可用区,每个可用区都有自己的物理数据中心。这种设计提供了高可用性和容灾能力。

  • 可用区(Availability Zone):可用区是在VPC内划分的区域,通常位于不同的物理数据中心。这样可以保证即使某个可用区发生故障,其他可用区仍然能提供服务。

  • 交换机(v-switch):交换机是VPC内的二层网络设备,用于连接同一可用区内不同ECS实例之间的通信。它也可以配置安全组规则以控制流量进出。

  • 云服务器ECS(Elastic Compute Service):ECS是阿里云提供的计算服务,可以用来运行企业门户网站的应用程序和服务。在这个方案中,ECS实例被部署在一个VPC内,可以通过云解析DNS接收来自客户端的请求。

  • 云效(Apsara DevOps):云效是一个持续集成和持续部署(CI/CD)平台,可以帮助开发者自动构建、测试和发布代码变更。在这个方案中,源代码或代码包会被提交给云效,然后由云效自动处理构建和部署过程。

整个流程始于客户端的访问请求,通过云解析DNS智能解析,将请求导向部署在阿里云ECS上的企业门户网站。在开发阶段,项目代码通过云效平台实现自动化构建与部署,确保高效、稳定的迭代更新。VPC与多可用区架构设计为网站提供了坚实的网络基础与故障隔离能力,加上云服务器ECS的弹性伸缩特性,有效应对访问高峰。同时,利用云效的持续集成与交付能力,团队能够聚焦于产品功能创新,而运维管理工作大为简化,显著降低了成本与时间投入。此外,可选的静态资源加速策略(如OSS存储结合CDN分发)进一步提升了用户体验,构建了一个全面优化、响应迅速的企业级线上门户。

方案部署

具体部署方案如下:

image.png

1.部署准备阶段

  • 准备阿里云账号:首先需要注册一个阿里云账户,以便访问所有相关服务。

  • 准备已备案的域名:为了合法合规地运营网站,需要提前准备好已经完成ICP备案的域名。

  • 创建云服务器ECS:在阿里云上购买并启动一台或多台ECS实例,作为网站的服务载体。

2.部署网站服务

  • 创建云效流水线:利用云效平台创建一个持续集成和持续部署的流水线,用于自动化构建和部署网站代码。

  • 将构建的产品部署到目标机器:当代码发生变化时,云效会触发构建过程并将新的版本部署到指定的ECS实例上。

  • 部署服务:安装必要的软件和服务,比如Web服务器(如Nginx)、数据库(如MySQL)和其他依赖项,以支持网站的正常运行。

3.解析域名

  • 通过云解析DNS将域名与IP地址绑定:使用阿里云的DNS服务,将已备案的域名映射到ECS实例的公网IP地址,使得用户可以通过域名访问网站。

  • 安装SSL证书提升用户信任:为了保护数据传输的安全性,建议安装SSL证书启用HTTPS协议,提高用户对网站的信任度。

4.(可选)静态资源加速

  • 将静态资源存储到OSS:将网站中的图片、CSS文件、JavaScript文件等静态资源存放到对象存储服务OSS中,以减少ECS实例的压力。

  • 配置CDN加速:通过阿里云的CDN服务,将静态资源缓存在离用户最近的边缘节点,缩短加载时间,改善用户体验。

上述步骤仅有四步,但实际操作起来对于非技术背景的企业用户或初次尝试云服务的个人来说,仍可能遇到诸如技术选型、环境配置、安全设置等具体细节的挑战,故此,阿里云也引入了一键部署的功能,旨在将整个部署流程高度自动化,使之对用户更加友好和直观。

申请域名备案(可选)

【前情提要】:

  • 如果您已经拥有域名,可跳过此步骤。

  • 如果您使用当前部署的服务器去申请域名备案,因备案要求,需要将云服务ECS实例从按量计费转为包年包月,具体请参考按量付费转包年包月。

域名申请和备案

创建域名信息模板并实名认证

登录阿里云域名控制台

image.png

在左侧导航栏单击信息模板,在信息模板页面单击创建新信息模板。

image.png

根据提示,完成域名持有者信息填写,单击提交。

image.png
image.png

提交之后可以在阿里云域名控制台的左侧导航栏的信息模板中找到待查看的信息模板,查看实名认证状态,域名实名认证资料的审核通常在1个工作日内可以完成,部分可能需要3~5个工作日,请您耐心等待审核结果。

购买域名

等到审核完成之后,下面可开始购买域名。登录阿里云域名注册。在阿里云域名注册页面的搜索框中,搜索您想要注册的域名以及域名后缀,单击查询域名。

image.png

对于查询结果为未注册的域名,单击加入清单。

image.png

在域名清单中确认已添加的域名,单击立即购买。在确认订单页面,选择域名的购买年限和域名所有者类型。若您注册的是“.gov.cn”后缀域名,域名持有者类型只能为企业。

image.png

完成支付后,域名注册订单会短暂的显示为处理中状态,待订单状态变为成功,域名即注册成功。

后续有关ICP备案前准备提交ICP备案ICP备案后操作在此不过多赘述,请有需要的用户请按照本链接的【申请域名备案】处进行操作。

image.png

高效构建企业门户网站——一键部署

一键部署资源

进入构建方案网站,点击【一键构建】。

image.png

直接进入到第三步【一键部署】环节,点击如下图所示的一键部署:

image.png

默认已经填写好了【资源栈名称】、【可用区】、【实例规格】。

image.png
image.png

设置实例服务器的【密码】;【域名】是选填项,如果有已经备案的域名可以直接填写在此处,全部完成后点击下一步。

image.png

进入总览面版,确认参数无误后,点击【创建】按钮。

image.png

此时会进入创建中的状态,需要稍等片刻。

image.png

创建成功如下所示:

image.png

创建流水线

接下来进入【云效】创建流水线。

image.png

在弹出面板中选择Java,顶部选择可视化编排,找到Java构建、部署到阿里云ECS/自有主机流水线,单击创建,进入流水线配置界面。

image.png

配置流水线

下面开始配置流水线,在最左侧添加流水线源。

image.png

选择流水线源为代码源,选择Codeup。

image.png

点击新建代码仓库。

image.png

在代码管理页面右上角,单击导入库。

image.png

在导入代码库弹出框,选中URL导入,在源代码仓库地址填入https://atomgit.com/aliyun_solution/web-demo.git ,单击确定。

image.png

回到流水线源配置页面,选择刚刚创建的代码仓库。并点击添加,完成流水线源的配置。

image.png

接下来配置Java构建上传。

单击Java构建上传。

image.png

在右侧编辑面板内,选择任务步骤 > 构建物上传,在打包路径下新增一个deploy.sh,关闭编辑面板。

image.png

下面配置部署任务,单击主机部署。

image.png

配置制品。在右侧编辑面板的制品下拉框选择上游构建阶段的产物,如制品名称.Artifacts_xxx。

image.png

单击新建主机组,在新开的全局设置 > 主机组管理页面中再次单击新建主机组。

image.png

单击新建主机组,在新开的全局设置 > 主机组管理页面中再次单击新建主机组。

image.png

在新建主机组弹窗中,填入自定义的主机组名称,然后单击确定。

image.png

在主机组详情页面,单击添加新主机,添加方式选择阿里云ECS,单击添加服务连接。

image.png

在新建服务连接面板单击+新建,完成RAM授权后,创建服务连接。

image.png

回到接入新主机面板,地域下拉框选择华东1(杭州),勾选您在该地域下创建的ECS实例,单击保存。

image.png

回到流水线主机部署的编辑面板,在主机组下拉框选中刚刚创建的主机组。

image.png

部署脚本。在部署脚本文本框中填入如下脚本

image.png

单击流水线页面右上角保存并运行,在弹出的运行配置弹窗中单击运行。

image.png

流水线触发,开始执行:

image.png

等到运行完毕后,如下图所示:

image.png

访问验证

访问对应公网IP即可查看到部署内容:

image.png

解析域名

而要想使上面申请的域名能够正常解析到公网IP,还需要配置域名解析。

登录云解析DNS控制台

image.png

在域名解析页面,权威域名页签下,点击目标域名处的解析设置按钮,进入解析设置页面。

单击添加记录,填写域名解析信息,然后单击确认。

image.png

配置证书(可选)

此时默认的采用 http 的方式,下面我们来给网站开启 HTTPS。(必须有域名才可以免费申请SSL证书

登录数字证书管理服务控制台

image.png

在左侧导航栏,选择证书管理 > SSL证书管理。

image.png

在SSL 证书页面,单击免费证书页签。

image.png

在免费证书页签,单击立即购买。

image.png

在立即购买面板,保持默认选项,仔细阅读并勾选服务协议,单击立即购买并完成支付。

image.png

单击创建证书。在证书申请面板,配置免费证书参数,单击提交审核。

image.png

证书签发后,证书状态将变更为已签发,您需要下载和配置证书。

在证书所在行的操作列,单击下载。

image.png

在证书下载对话框中,根据服务器类型下载证书。本示例使用Nginx做转发,所以下载Nginx版本。

image.png

压缩包解压之后会得到2个文件,具体如下图所示。

image.png

使用WinSCP、Xshell等工具上传.key证书文件和.pem证书私钥文件到轻量应用服务器的指定目录,例如:/home。

执行以下命令,新建https_server_test.js项目文件。

cd /home
sudo touch https_server_test.js

执行以下命令,修改https_server_test.js文件。

vim https_server_test.js

按i键进入编辑模式,并将以下内容添加至https_server_test.js文件中。内容如下所示:

// 启动https服务需要https包
// 读取文件需要fs包
const https = require('https');
const fs = require('fs');

// 将两个证书文件读取放到options对象中
// 使用readFileSync()方法,顺序地执行读文件和启动服务操作
const options = {
   
    key: fs.readFileSync('/home/cert-file-name.key'),
    cert: fs.readFileSync('/home/cert-file-name.pem')
};

// 创建服务器,启动服务器,设置监听端口号
https.createServer(options, (req, res) => {
   
    res.end('hello world\n');
}).listen(443);

说明如下:

/home/cert-file-name.key:需替换为实际上传私钥文件的绝对路径。
/home/cert-file-name.pem:您需要输入实际上传SSL证书文件的绝对路径。

添加完成后,按Esc键退出编辑模式,并输入:wq后按Enter键,保存并退出文件。

执行以下命令,使SSL证书生效。

sudo node https_server_test.js

使用浏览器访问 https://对应的域名 。如果浏览器地址栏中出现小锁标志或者显示链接是安全的,表示证书已经安装成功。

image.png

静态资源加速

至此,采用https访问云效一键部署门户网站的实践差不多也接近尾声了。唯一还缺少的就是静态资源加速优化。这一块主要是将网站的静态资源(JS文件、CSS文件、图片、音视频文件等)存储在OSS上,CDN会将OSS源站的文件提前缓存到CDN全球加速节点,用户请求访问或下载资源时,可以就近获取到CDN节点上已缓存的资源,从而实现资源访问加速。

image.png

进入网站静态资源访问加速界面中,点击一键部署即可。

image.png
image.png

构建企业门户网站——手动部署

大家可以注意到这个标题,我把“高效”二字直接去掉了,对比一键部署,手动部署就麻烦很多。

在实际部署中光是资源准备阶段就需要花费至少20分钟来完成。

image.png

对比一键部署几乎不超过5分钟,两者简直是高下立判!

而除去部署过程之外,域名申请、SSL证书安装、DNS解析都是一摸一样的,在这里也不赘述了。所以,无论从时间成本、人力资源分配,还是从技术复杂度和安全性考虑,选择一键部署都是更为明智的选择。

优化建议

首先还是紧扣问题吧。

1) 在体验过程中是否得到足够的引导以及文档帮助?如果没有,还欠缺什么部分?

2) 部署流程指引是否满足操作需求?例如展示是否友好、提示信息是否完整、多个部署项是否容易遗漏等。

关于这两点我就一块说吧。首先值得肯定的是文档的操作确实还是很细致的,步骤说明也很详尽,整个流程下来能够按照指南顺利完成操作。但是如果对于不太了解的人而言会显的有一些,为什么说乱呢?

如果采用一键部署,在资源编排服务创建时就可以填入域名,理论上可以将域名的申请操作作为首选项放在所有步骤的开头,但是在教程界面里面,域名申请却都是统一放在后面的申请域名备案下面的。

image.png

我个人的考虑是因为本身域名申请的流程和所需时间就比较长,如果作为操作实践文档,建议不管怎样都需要将域名的申请提示及步骤放在最开头,最担心的是用户应用都创建好了,结果发现还需等待域名生效。

image.png

再然后是关于申请域名备案下面的这几点,其实是没有按照逻辑顺序来排列的。正常情况下一般的操作是申请域名——>配置域名解析——>配置SSL证书(可选)——>静态资源加速(可选) ,建议把顺序调整成该正常逻辑。

image.png

除了上述两个之外,其实这个教程还可以再详细一些。比如这些位置仅有描述并无对应图:

image.png

又比如配置证书下面:

image.png

给了两个文件,但是并未详细说明这个文件是否全部适用于本教程的配置操作。建议修改如下:

image.png

或者直接把对应的内容提取出来重新编写一个文档也可以。

总的来说吧,其实还是有很多细节可以优化的,整体上没有很大问题,在教程的界面排版和逻辑顺序上还略微有些瑕疵,可以加以优化。

3) 一键部署与手动部署,更倾向于哪一种部署方式?有哪些可以改进的地方?

首先申明一下,这里的手动部署其实是算伪手动部署,因为还是用到了云效流水线的,不是完全的全流程手动本地部署,仅仅是预备资源的手动部署。

下面说一下结论,我更倾向于一键部署。这种方式极大地简化了部署流程,减少了人工操作的复杂性和出错概率,特别适合于需要快速部署和迭代的场景,或是对技术细节不太熟悉的用户。通过预设的配置模板和脚本,系统能够自动完成环境配置、代码部署、服务启动等一系列繁琐步骤,确保每次部署的一致性。这对于维护多环境(如开发、测试、生产环境)的一致性尤为重要,避免了因环境差异导致的“在我机器上能跑”问题。

而对接云效流水线之后,持续集成/持续部署(CI/CD)流程紧密结合,也支持代码变更的即时推送和自动部署,加速了软件交付的速度。团队可以更快地响应市场变化或用户反馈,持续优化产品功能和用户体验。

对于团队协作而言,一键部署降低了新成员上手的门槛,使得开发者无需深入了解底层部署细节,就能快速部署应用并进行开发工作,促进了团队的高效运转。同时,运维人员也能从重复的手动部署工作中解放出来,专注于更高级别的系统监控、性能优化和安全加固等工作。

而此次,仅仅是最基础的部署到ECS,如果碰到最近如Kubernetes等架构,实现一键部署会变得更加便捷。这些技术提供了强大的环境隔离和资源管理能力,使得应用可以在几乎任何基础设施上以一致的方式部署和运行,进一步推动了DevOps文化的实践。

结语

经过全面的实践与分析,我们深入探索了如何运用阿里云云效平台的流水线功能,协同高性能的云服务器ECS,成功构建并部署了一个集高效性、稳定性和吸引力于一体的企业级门户网站。这一过程不仅展现了云原生技术与持续交付理念的深度融合,还验证了阿里云解决方案在帮助企业缩短部署时间、降低运维成本、加速业务创新方面的显著成效。

同时,本次评测也指出了当前部署流程及文档存在的一些不足,包括域名申请步骤的位置安排、操作流程的逻辑顺序、以及部分环节缺乏直观图解说明等问题,这些都是未来优化的方向。尽管如此,文档的整体详实度和操作指导性依然值得认可,通过针对性的改进,可以进一步提升用户的使用体验和效率。

通过阿里云提供的这一创新部署方案,企业不仅能够快速构建起门户形象的线上基石,更能在激烈的市场竞争中,依托技术的力量,实现业务的敏捷迭代与持续增长,最终达到提升品牌形象、深化市场影响力的目标。

面对未来,随着技术的不断进步和云服务的日益成熟,企业门户网站的构建与部署将更加智能化、自动化,而阿里云将持续作为这一变革进程中的重要推手,助力每一家企业乘云而上,拥抱数字时代的无限可能。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
4月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
91 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
4月前
|
Devops API
阿里云效流水线API简单使用
阿里云效流水线API简单使用
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之流水线构建出现问题,连接不到nuget,该如何处理
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
Java 应用服务中间件 测试技术
阿里云云效产品使用合集之云效流水线如何使用alb ingress的脚本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
缓存 运维 前端开发
阿里云云效操作报错合集之如何解决在使用流水线构建net8应用时遇到无法构建的报错
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
敏捷开发 缓存 5G
阿里云云效产品使用合集之流水线中的webhook是否可以设置为变量
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。