如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用

如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用,第1张

以下是一个简单的安装方法。 $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer $ java -version java version "180_60" Java(TM) SE Runtime Environment (build 180_

在迁移到云的过程中,很多企业选择部署私有云计算环境。这种模式的优点很多,整合了IT投资和资源、自动化任务并引入诸如虚拟化这样的新技术。通常,云模式为传统老设备和新技术的引入之间打通了道路。

公有云面临安全问题挑战,但是您应该在自己的数据中心内已经解决了大多数问题。为什么不把这些解决方案通过整合和自动化进行扩展,以降低云项目起步时的复杂性

  

迁移到云并不等于虚拟化

很多企业 IT 部门在考虑迁移到云的时候总是想到虚拟化,实际上并非如此。在一些数据中心,虚拟平台都是服务提供的核心,但是云并非仅仅指技术实现方式。实际上,它们还包括了人员、流程、 整合和控制。迁移到云意味着对企业内重复服务内容的整合,以及对一些日常和傻瓜式工作 的自动化处理,可以解放员工去完成更复杂的工作。

云可以是共享架构,可能是虚拟化的,也可能包含物理硬件。例如Google 的 Gmail 和微软的SkyDrive ,这些服务并不需要虚拟化,他们都建立在大量的物理机上。企业的很多私有云也可以这样搭建,

事实上,有时候虚拟化甚至还会带来一些麻烦,比如基于如Microsoft Cluster Service 这类技术的服务,使用虚拟化环境反而可能会发生冲突。此外还包括资源争夺、安全问题、个别虚拟机管理的复杂性等等问题。

企业要实现的目标应该是整合而不是虚拟化。如果你能把50 台文件和打印服务器整合到三台集群物理宿主机上,无论是否采用了虚拟化技术,这就是一种成功的云,。

  

从虚拟化环境迁移到云

首先,标准化基础技术

虚拟化技术通过使用虚拟机模板和自动化部分安装部署工作,实现了操作系统配置的标准化。同时也对数据复制、防火墙和其它安全工具、OS 以及存储配置工作的标准化提供帮助。

这些标准化可能为虚拟化和云计算提供帮助。 如果您无法创建一种万能的方案,就选择多种类型,目标是一次性解决配置问题。拥有 10 种不同类型的虚拟机要比3000 个各不相同的系统好得多。

其次,自动化

自动化可以有效消除许多重复性工作。例如:通过向虚拟机模板中添加常规应用软件来避免之后安装它,不再去每台服务器上创建本地账户,而改用集中的Lightweight Directory Access Protocol 或Active Directory 实例代替,会更加高效,通过配置管理工具,如Puppet 或Chef 来自动更改和管理服务器配置的工作。

就算是一组常规的运行命令脚本都能帮助极大。系统管理员可以通过使用命令脚本大幅减少重复性工作,能只输入一次的命令,就绝不输入两次。

自动化并非提供自助服务所必需的。通常云都被看做一种自助服务,但是 IT 行业花费 很多年时间包装跟创建和管理服务器相关的流程。这些流程通常服务于如何监控服务器或服务,文件如何创建或授权如何管理等等内容。抛开这些事情去提供自助服务是一种错误。

  

调查调整企业内的IT服务

一旦通过标准化和自动化为云打好了基础,就可以开始进行进一步的较为复杂的工作了,调查企业中运行 的IT 服务,不要以为会很简单,这绝对是一项不小的挑战,你需要找到各项服务存在的原因。

人们总是有好的理由来复制服务。例如,企业的主Web 服务器不能支持某种技术,所以部门创建了自己的 Web 服务器。存档这些需求并努力扩展中央系统功能以满足它们。您还需要具备足够的灵活性。迁移到云需要对 IT 系统构架的长期整合过程,从中您会发现很多意想不到的惊喜。

我现在使用的是小鸟云,6月新近活动认证可获得0元服务器,建议去看看!

1 Puppet

Puppet是一款开源工具,旨在为系统管理员大大简化自动化和报告工作。它基本上是款配置管理软件,有助于配置和维护企业网络中的服务器及其他系统。系统管理员通常每天要花大量时间重复做同样的任务。他们总是想要使这些任务实现自动化,以便有更多的时间来处理其他项目或学习新的概念和脚本语言。管理员可以通过编写脚本使任务实现自动化,但是在拥有大型网络的公司,脚本不是很方便。这时候,Puppet就大有用场,因为借助Puppet,你可以:

为网络上的每个主机定义独特的配置设置;

不断监测网络,查找任何变动;

帮助高效地创建和管理用户;

帮助管理每个开源工具的配置设置。

2 CHEF

Chef是另一款可供Linux系统管理员使用的流行的自动化工具。它用Ruby和Erlang编写,对于配置和维护公司的服务器大有帮助,无论贵公司拥有十台服务器还是上百台。它还可以帮助你将云端服务器与亚马逊EC2、OpenStack、RackSpace或谷歌云整合起来。Chef可以将你的基础设施转变成代码,那样借助代码,你只要更改几行代码,就能轻松撤下一台服务器,从而让你轻松管理服务器。物理节点还意味着:将变更内容部署到生产环境之前,可以对它轻松进行测试,你还可以轻松控制针对代码的每次更新的版本。Chef DK为你提供了测试和管理配置的所有工具,Chef Server充当你所有“菜谱”(recipe)的存储库,可以管理与服务器连接的每个节点。Chef客户软件在每个客户端上运行,时不时收到服务器方面的信息,从而更新其配置设置。

3 CFEngine

面向Linux系统管理员的下一款自动化工具是CFEngine,这是另一个领先的自动化系统,可帮助你轻松管理整套基础设施,并使之实现自动化。一旦你使用CFEngine为网络中的系统定义了配置,那么CF Engine就会自动确保配置符合规范。不用说,如果你的网络中有10个或100个节点,可以在短短几秒内更新或改动任何一个节点或所有节点。CFEngine之所以受到许多Linux系统管理员的青睐,是由于它运行成本低、响应速度快、具有自愈合功能。

4 Ansible

Ansible是Red Hat提供的一款开源配置管理和IT企业自动化软件,随带一种简单的编程语言,让系统管理员能够高效地处理自动化和配置过程。Ansible由控制机器和控制机器控制的节点组成。节点是通过SSH来加以控制的。Ansible的主要特点之一是代理并不是部署到节点 ,但是完全借助SSH来进行通信。易学易用、具有一致性、高可靠性和安全性是让Ansible脱颖而出的其他特性。Ansible的唯一局限就是无法配置裸机和虚拟机。

5 Foreman

Foreman是另一种用于取证分析的开源配置管理工具。Foreman提供了仪表板,我们可以通过仪表板来配置裸机服务器和虚拟机。默认情况下,无论我们何时安装Foreman,它都使用Puppet作为配置工具。不过借助插件,Foreman还支持与其他配置管理工具整合起来,比如Chef、Puppet、Ansible、Salt及其他众多工具。Foreman自动化工具还随带各种各样的接口,包括命令行接口、Web前端以及REST API。Foreman的其他一些显著功能包括如下:

通过仪表板,管理Puppet模块和puppet类方面的改动;

很容易从Foreman仪表板来管理Puppet环境;

由于仪表板,创建主机群(Hosts Group)以及为主机群添加puppet模块变得很轻松;

可以从Foreman仪表板,轻松添加Puppet模块或推送到节点。

6 Katello

Katello是另一种开源自动化工具。换而言之,我们可以说Katello是一种开源版的Red Hat satellite Server;如果我们不想花钱在企业产品及其支持上,就可以用它来代替Red Hat satellite Server。Katello已被Foreman收购,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:

给基于Linux的服务器(RHEL和CentOS )打补丁;

使用Pulp Service来同步代码库;

使用Foreman进行各种配置;

它还可以处理订阅内容管理,并审计所有已部署的软件包;

借助Katello,你可以为所有主机创建主机群,另外还可以在单一主机或一群主机上批量执行操作。

7 Nagios

Nagios现在名为Nagios Core,它是一种开源自动化和监控工具,可以管理基础设施中的所有系统。它还提供警报服务,一旦察觉到你的网络中哪里有问题,就会提醒系统管理员。借助SNMP以及Nagios,系统管理员还可以控制并管理打印机、路由器和交换机。Nagios让我们得以创建事件处理工具,一旦某个应用程序及其服务停运,就可以自动重启出现故障的那个应用程序及其服务。

三种注册方式

Puppet注册方式基本上有三种:手动注册,自动注册和预签名注册

1手动注册

手动注册是由Agent端先发起证书申请请求,然后由Puppet server端确认证书方可注册成功,这种注册方式安全系数中等,逐一注册(puppet cert --sign certname)在节点数量较大的情况下是比较麻烦的,效率也低,批量注册(puppet cert --sign --all)效率很高,一次性便可注册所有的Agent的请求,但是这种方式安全系数较低,因为错误的请求也会被注册上。

2自动注册

这种注册方式简单来讲是通过Puppet master端的ACL列表进行控制的,安全系统较低,也就是说符合预先定义的ACL列表中的所有节点请求不需要确认都会被自动注册上,也就是说你只需要知道ACL列表要求,其次能和PuppetMaster端通信便可轻易注册成功。当然,它的最大优点就是效率非常高

(1)查询认证情况

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"     (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0

+ "localhost"            (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom"    (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

(2)在master上清除客户端已经agent注册信息的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(3)在agentdomaincom端删除注册过的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(4)在Puppet master端编写ACL列表

代码如下:

root@101133:puppet# cat autosignconf

domaincom

root@101133:puppet# /etc/initd/puppetmaster restart

Stopping puppetmaster:             [  OK  ]

Starting puppetmaster:             [  OK  ]

(5)客户端申请注册证书

代码如下:

root@101134:ssl# puppet agent --test

Info: Creating a new SSL key for agentdomaincom

Info: Caching certificate for ca

Info: csr_attributes file loading from /etc/puppet/csr_attributesyaml

Info: Creating a new SSL certificate request for agentdomaincom

Info: Certificate Request fingerprint (SHA256): FD:70:31:87:C6:44:EC:8D:18:0D:F5:10:E3:CE:5B:DC:EA:31:BD:BC:8C:C7:B2:80:F7:7E:2C:F2:4E:FB:12:90

Info: Caching certificate for agentdomaincom

Info: Caching certificate_revocation_list for ca

Info: Caching certificate for ca

Info: Retrieving pluginfacts

Info: Retrieving plugin

Info: Caching catalog for agentdomaincom

Info: Applying configuration version '1418292313'

Notice: /Stage[main]/Test/File[/tmp/agenttxt]/ensure: defined content as '{md5}fc3ff98e8c6a0d3087d515c0473f8677'

Notice: Finished catalog run in 013 seconds

(6)服务端查看证书

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"  (SHA256) FE:04:96:32:46:A4:54:BF:A9:4F:20:CA:EF:7E:F7:C6:A6:88:34:4A:D9:7E:50:54:FA:C0:10:29:87:F9:1C:6E

+ "clientdomaincom" (SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5

+ "localhost"         (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom" (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

3预签名认证

预签名注册是在agent端未提出申请的情况下,预先在puppet master端生成agent端的证书,然后复制到节点对应的目录下即可注册成功,这种方式安全系数最高,但是操作麻烦,需要提前预知所有节点服务器的certname名称,其次需要将生成的证书逐步copy到所有节点上去。不过,如果你的系统中安装了kickstart或者cobbler这样的自动化工具,倒是可以将证书部分转换成脚本集成到统一自动化部署中注:生产环境中建议此方式进行注册,既安全又可靠

(1)查询认证情况

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"     (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0

+ "localhost"            (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom"    (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

(2)在master上清除客户端已经agent注册信息的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(3)在agentdomaincom端删除注册过的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(4)puppet server端预先生成agent证书

代码如下:

puppetca --generate  agentdomaincom

(5)agent节点生成目录结构

代码如下:

puppet agent --test

(6)puppet master端copy证书到agentdomaincom上

代码如下:

root@101133:puppet#scp /var/lib/puppet/ssl/private_keys/agentdomaincompem  agentdomaincom:/var/lib/puppet/ssl/private_keys/

root@101133:puppet#scp /var/lib/puppet/ssl/certs/agentdomaincompem  agentdomaincom:/var/lib/puppet/ssl/certs/

root@101133:puppet#scp /var/lib/puppet/ssl/certs/capem  agentdomaincom:/var/lib/puppet/ssl/certs/capem

常用命令

1puppet master

puppet master 默认是以Ruby内建的WEBRick在后台运行的守护进程,同样也可以采用最常用的Web服务器apache和nginx替换WEBRick以提升性能puppet master主要功能是编译配置文件,文件,模版,节点的自定义插件

代码如下:

root@101133:nodes# puppet master --help

puppet master [-D|--daemonize|--no-daemonize] [-d|--debug] [-h|--help]

 [-l|--logdest syslog|FILE|console] [-v|--verbose] [-V|--version]

 [--compile NODE-NAME]

--daemonize: #-D发送到后台守护进程,默认选项

--no-daemonize: #不发送到后台守护进程

--debug: #完整调试

--help: #输出帮助

--logdest: #日志发送方式,默认是syslog

--verbose: #显示详细信息

--version: #打印puppet版本

--compile: #以JSON的方式输出编译的catalog

使用--getconfig输出默认配置文件

代码如下:

root@101133:puppet# puppet master --genconfig puppetconf

puppet不启用后台守护进程的方式运行

代码如下:

root@101133:puppet master --no-daemonize --verbose

2puppet agent

puppet agent 在每个节点以守护进程方式运行,通常每30分钟向master请求一次,以确认新的信息并询问是否有变更然后负责运行编译好的catalog代码

代码如下:

root@101134:tmp# puppet agent --help

puppet agent [--certname NAME] [-D|--daemonize|--no-daemonize]

 [-d|--debug] [--detailed-exitcodes] [--digest DIGEST] [--disable [MESSAGE]] [--enable]

 [--fingerprint] [-h|--help] [-l|--logdest syslog|eventlog|FILE|console]

 [--masterport PORT] [--no-client] [--noop] [-o|--onetime] [-t|--test]

 [-v|--verbose] [-V|--version] [-w|--waitforcert SECONDS]  

使用--noop参数,puppet运行catelog,但不执行配置

root@101134:tmp# puppet agent --noop

3puppet apply

puppet apply 是puppet运行命令,主要在检测manifests时或在没有网络连接的情况下使用不同于puppet agent,puppet apply在运行时不会连接master

代码如下:

root@101134:tmp# puppet apply --help

puppet apply [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]

 [-e|--execute] [--detailed-exitcodes] [-L|--loadclasses]

 [-l|--logdest syslog|eventlog|FILE|console] [--noop]

 [--catalog catalog] [--write-catalog-summary] file  

(1) 将输出信息输出到日志文件

代码如下:

root@101133:manifests# puppet apply -l /tmp/initpp initpp

root@101133:manifests# cat /tmp/initpp

Fri Dec 12 16:17:46 +0800 2014 Puppet (notice): Compiled catalog for puppetdomaincom in environment production in 004 seconds

Fri Dec 12 16:17:47 +0800 2014 Puppet (notice): Finished catalog run in 004 seconds

4puppet cert

它用于管理本地证书,查看未签名证书,签署证书,废除证书,清除证书

代码如下:

puppet cert action [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]

 [--digest digest] [host]  

常用操作:

clean #清除证书

fingerprint #打印证书指纹

generate #生成客户端证书

list #查看认证客户端列表

print #打印主机证书的全文信息

revoke #废除已认证的主机

sign #签署认证

verify #验证本地指定的认证

命令参数:

--all #执行所有操作,包括'sign','clean', 'list', and 'fingerprint'

--digest #设置证书指纹加密的方式

--debug #启用完整调试模式|

--verbose #显示详细信息

--version #显示版本

(1)查看请求认证的客户端列表

代码如下:

root@101133:nodes# puppet cert list

(2)为主机agentdomincom签署验证

代码如下:

root@101133:nodes# puppet cert sign agentdomaincom

(3)列出所有签名和未签名的证书

代码如下:

root@101133:nodes# puppet cert list --all

+ "agentdomaincom"  (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86  #符号+表示已经签署过认证

"clientdomaincom" (SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5

(4)给所有未签署认证的请求颁发认证:

代码如下:

root@101133:nodes# puppet cert sign --all

(5)查看所有已签署认证的客户端列表

代码如下:

root@101133:nodes# puppet cert list --all

+ "agentdomaincom"  (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86

5puppet kick

它用于连接到agent客户端主动运行puppet agent --test命令类似主动触发配置

目录

一、CICD简介

二、CICD实践过程

三、含泪踩坑

四、 历史 文章指路

一、CICD简介

1、CICD定义

2、DevOps定义

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps的基础核心是CICD。

CICD的基础核心是自动化。

二、CICD实践过程

1、起因

在我之前的团队,因为要切换全新业务线,需要为新业务搭建一套全新的环境,所有东西从0开始。

原先只是用于部署测试环境,后面决定一起部署生产环境,这个过程中我还造成了一个严重生产环境问题,好在当时的生产环境还未正式使用,未造成严重影响。

在当时挺害怕也挺有压力的,但是后面项目完整落地,平稳运行,我还是挺有成就感的,接下来我将整个项目过程完整的分享出来。

2、技术栈选型

首先进行技术栈选型,我们选择的是Jenkins,Jenkins当属业内持续集成老大哥,有着非常丰富的插件,也可以选择gitlab集成的CICD,因为我们还有其它的测试脚本需要集成,所以Jenkins对于我们来说是最优的选择;

Ansible是批量运维工具,通过编写yaml脚本,可以方便实现批量管理多台机器,并且Ansible是比较轻量级应用,很容易上手;

shell脚本可以用于执行一系列命令。

其它的就结合团队项目情况进行搭建。

3、Jenkins应用部署实现流程

首先来梳理下整个项目的实现流程,主要分为Jenkins主节点和应用服务器,是一对多的关系。

Jenkins主节点的主要负责项目部署前的工作,主要包含拉取代码,前端打包,后端打包,快照版检测,将压缩包和部署脚本发送到目标机器(即应用服务器),远程调用目标机器上的部署脚本进行代码替换。

应用服务器部署脚本执行过程有:解压压缩包,停止服务,覆盖代码,拉取disconf,应用目录分组赋权,重启服务,检查服务是否有进程,查看启动日志,删除/tmp目录下旧压缩包。

Jenkins应用部署流程图

4、任务计划

41、搭建环境

Jenkins

指路Jenkins系列如何搭建Jenkins环境。

Ansible

Git

GitLab

因为这个我没有实践成功的教程,所以在这里就不贴啦~

Nodejs

Maven

JDK

Nginx

2、编写前置脚本

3、编写应用部署脚本

4、Jenkins配置

指路Jenkins系列如何构建Jenkins Job。

新增Job,主要用于拉取代码,执行Maven编译,执行app_buildsh,将压缩包通过ssh发送到目标机器,远程调用目标机器的deploysh。

三、含泪踩坑

踩坑1

问题描述:在错误的路径拉取配置,原因是未成功解压压缩包。

解决方案:校验压缩包是否解压成功解压成功,并且在cd到正确的路径后添加&&(&&表示上一条命令执行成功再执行下一条命令)才进行拉取配置。

踩坑2

问题描述:项目没有正常停止,导致无法重新启动。

解决方案:虽然执行kill -9,但是未找到根本原因,因此加了一个检测机制,如果检测没有正常停止服务,则退出程序。

踩坑3

问题描述:生产部署脚本拉取了开发环境的的jdbc配置,原因是生产部署脚本写错了开发环境disconf的域名,当时我同时在搞开发生产环境的脚本,开发和生产是两套不同的脚本,一时混乱写错了,吓得一批,好在当时生产环境还没投产使用。

解决方案:为了避免后续这种情况的发生,而且是必须避免的,我们通过环境名称来判断走开发还是生产域名,这样就能保证脚本一致性了。

在这个项目实际遇到的问题远不止上面这几个,在这个实践过程中,我对整个应用部署流程有了更深的理解,平时方方面面的学习终于集中化起来进行实践了。

我习惯将学到的知识和遇到的问题记录起来,在写这篇文章的过程回过头来看,五味杂陈,原来我都经历了这些哈哈哈

踩过的坑终究使我更加强大,带你见证呱呱本呱成长为参天大呱~

搞测试,不迷路

呱呱大王本呱带你飞!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情