将 Web 应用部署到 Pivotal Web Services,Heroku中

本文详述了将Web应用部署至Pivotal Web Services与Heroku的步骤,包括账户注册、工具安装、应用打包、环境变量设置及服务绑定等关键流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将 Web 应用部署到 Pivotal Web Services 中

步骤

1:通过http://docs.run.pivotal.io/starting/注册账户

2:下载并安装客户端工具cf-cli

3:执行命令./gradlew assemble 进行打包成jar文件

4:执行命令cf login -a api.run.pivotal.io -u <acct> -p <pwd> -o <org> -s development

5:执行命令cf push your-app-name -p build/libs/<project>.jar

6: 根据网页console终端提示的URL登陆到系统。

 

7:src/main/resources 中创建名为 application-cloud.properties 的属性文件,当我们的应用在 PWS 中运行的时候,就会使用这个文件

spring.profiles.active=prod,redis

spring.redis.host=${cloud.services.redis.connection.host}

spring.redis.port=${cloud.services.redis.connection.port}

spring.redis.password=${cloud.services.redis.connection.password}

upload.pictures.uploadPath=file:/tmp

这会将 Redis 实例与应用进行绑定并激活另外两个 profileprod redis

8:最后一件需要做的事情就是禁用 Spring Session 的一项特性,在我们的主机实例上是无

法使用该特性的:

@Bean

@Profile({"cloud", "heroku"})

public static ConfigureRedisAction configureRedisAction() {

return ConfigureRedisAction.NO_OP;

}

说明

在应用服务方面,我们可以有很多的服务可供选择。其中有一个就是 Redis Cloud,它

有一个免费计划,带有 30MB 的存储空间,你可以选择使用这个计划。

通过这种方式,为其选择一个你喜欢的名字然后将其绑定到应用中。默认情况下,Cloud

Foundry 将会注入一些服务相关的属性到环境当中:

¿ cloud.services.redis.connection.host

¿ cloud.services.redis.connection.port

¿ cloud.services.redis.connection.password

¿ cloud.services.redis.connection.uri

这些属性会遵循相同的命名约定,所以如果你添加了多项服务的话,可以很容易地对

其进行跟踪。

默认情况下,Cloud Foundry 会启动 Spring 应用并激活 Cloud profile

注意,在云中使用文件系统要遵循不同的规则,参考

如下的链接以了解更多信息:http://docs.run.pivotal.io/devguide/deploy-apps/prepare-to-deploy.

html#filesystem

更多信息请参考:http://docs.spring.io/spring-session/docs/current/reference/html5/#api-redisoperationssessionrepositorysessiondestroyedevent

 

将 Web 应用部署到 Heroku 中

步骤:

1:在https://www.heroku.com/注册账户,需要翻墙软件配合,否则没有验证码

2: 在https://toolbelt.heroku.com 中下载heroku的客户端装包

3:使用 heroku login 命令将账号与 toolbelt 进行关联

4:如果你已经通过 UI 创建了应用,那么到应用的根目录下并通过如下的命令创建 Git

remoteheroku git:remote -a yourapp

这些命令所做的就是为 Git repository 添加一个名为 heroku Git remote。在 Heroku

部署的过程只是将我们的一个分支推送到 Heroku 上。remote 上安装的 Git hook 将会处理好剩余的事情。

5:Gradle 构建打包会自动在应用的根目录下尝试运行“./gradlew stage”命令。你可以通过该链接,获取 Gradle 构建打包的更多信息:

https://github.com/heroku/heroku-buildpack-gradle

我们还没有名为“stage”的任务,添加如下的代码到 build.gradle 文件中:

task stage(type: Copy, dependsOn: [clean, build]) {

from jar.archivePath

into project.rootDir

rename {

'app.jar'

}

}

stage.mustRunAfter(clean)

clean << {

project.file('app.jar').delete()

}

6:应用的根目录下创建名为 Procfile 的文件:

web: java -Dserver.port=$PORT -Dspring.profiles.active=heroku,prod

-jar app.jar

7:隐私信息从环境变量中取出spring.social.twitter.appId=${twitterAppId} 并且隐私信息保存到环境变量中heroku config:set twitterAppId=appId (或者dashboard 的页面,在 settings 标签页配置环境变量)

8:向服务器推送分支git push heroku master后自动执行

9:通过问 http://yourapp.herokuapp.com访问应用

--------------------------以下支持REDIS

10:执行heroku addons:create heroku-redis:test  激活了这个 add-on,当应用在 Heroku 运行的时候,会有一个名为 REDIS_URL 的环境变量可供使用。

11:使用 heroku config 命令来检查这个变量是否已经定义

12:调整 RedisConnectionFactory 适应 URL

13:修改Profile web: java -Dserver.port=$PORT -Dspring.profiles.

active=heroku,redis,prod -jar app.jar

 

说明:

 

第五步将会定义名为 stage 的任务,它将会复制 Spring Boot 在应用的根目录下所生成的 JAR 包并将其命名为 app.jar

按照这种方式,这个 JAR 会很容易找到。stage 任务依赖于 clean build 这两项 任务,这就意味着在 stage 任务启动之前会首先执行这两项任务。默认情况下,Gradle 会尝试优化任务的依赖图,所以我们必须提供一个提示,强制 clean 任务在 stage 之前执行。

最后,我们为已有的 clean 任务添加一条新的指令,用来删除生成的 app.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值