欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

推到云上

程序员文章站 2022-06-09 12:33:23
...

PaaS提供了一个就绪的应用部署平台其中带了若干扩展服务,例如数据库和消息brokers。

 

最流行的两个Paas平台是:Cloud Foundry、Heroku

 

1、部署到Cloud Foundry

它来自于Pivotal,赞助Spring框架以及Spring平台中的其他库的公司就是它。其中一个最吸引人的事情就是

它即是开源的,同时也有若干商业发行版。它甚至可运行在一个公司数据中心的防火墙里,提供一个私有云。

 

我们准备将reading-list应用部署到Pivotal Web Services上,它是一个公共的Cloud Foundary,托管地址在

http://run.pivotal.io/ 。但你要先注册个账号。PWS提供了一个60天的免费试用,在这期间都不需要你提供任何信用卡信息。

 

一旦注册了PWS账号,下一步就是下载并安装cf命令行工具,从此地址下载,

https://console.run.pivotal.io/tools ,用cf工具将你的程序推送到它上面。

 

不过,首先,你需要用cf登录你的PWS账号:

C:\Users\Administrator>cf login -a api.run.pivotal.io
API endpoint: api.run.pivotal.io

Email> fanjg_ajy@163.com

Password>
Authenticating...
OK

Targeted org fanjg_ajy-org

Targeted space development

 

API endpoint:   https://api.run.pivotal.io (API version: 2.96.0)
User:           fanjg_ajy@163.com
Org:            fanjg_ajy-org
Space:          development

 

 接下来是推送你的程序:

$ cf push sbia-readinglist -p build/libs/readinglist.war

其中sbia-readinglist是你给应用在Cloud Foundry上取的一个名字,因此它必须不能和其他应用名冲突,它会作为一个子域名用来访问你的应用。为此,它提供了一个选项可用来生成随机域名,

但你还是要提供域名参数,但有两个随机可供选择的单词将被追加到你提供的域名,这样就生成了子域名。

 

不仅仅是WAR,包括可执行JAR,甚至未编译的Groovy脚本——run via the Spring Boot CLI。

 

如果一切顺利的话,就应该可以访问部署好的应用了。

由于该应用使用的数据库是嵌入式的H2数据库,因此应用重启后,数据就丢失了。但Cloud Foundry

提供了几个数据库可供你选择,包括MySQL以及PostgreSQL,它们以marketplace services形式存在。

因为我们的程序中已经包含了PostgreSQL JDBC驱动,那就用PostgreSQL服务吧,此服务名叫

elephantsql。

 

elephantsql服务有几个不同的计划可供选择,从small development-sized databases到

large industrial-strength production databases。

C:\Users\Administrator>cf marketplace -s elephantsql
Getting service plan information for service elephantsql as fanjg_ajy@163.com...
OK

service plan   description                                            free or paid
turtle         4 concurrent connections, 20MB Storage                 free
panda          20 concurrent connections, 2GB Storage                 paid
hippo          300 concurrent connections, 100 GB Storage             paid
elephant       300 concurrent connections, 1000 GB Storage, 500Mbps   paid

 

那我们就假设选的是turtle吧。但现在要创建此数据库服务的一个实例,执行如下命令:

C:\Users\Administrator>cf create-service elephantsql turtle readinglistdb
Creating service instance readinglistdb in org fanjg_ajy-org / space development as fanjg_ajy@163.com...
OK

 

服务实例创建完毕后,接下来需要将其绑定到我们的应用上,执行命令

$ cf bind-service sbia-readinglist readinglistdb

 

将一个服务绑定到一个应用,只不过就是为应用提供一些细节(存储在环境变量VCAP_SERVICES中)关于如何连接到这个服务。我们可以重写应用读取此环境变量,使用它提供的信息来访问数据库服务,但没这个

必要,相反,执行下面的命令就行了

$ cf restage sbia-readinglist

上面的命令会强制Cloud Foundry重新部署应用并获取VCAP_SERVICES的值。它这么做的时候,

你会发现我们的应用声明了一个DataSource bean,并用引用了那个数据库服务的DataSource替换了。

 

好,一切都可以了。