推到云上

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替换了。

 

好,一切都可以了。

 

<think>我们正在处理用户的问题:如何将本地的编译包直接上传到端并分享给他人?注意用户没有源代码,只有编译后的包(可能是二进制文件、JAR包等)。根据引用内容,我们可以参考:引用[2]提到了上传本地Jar包到阿里效私有仓库,这涉及到Maven配置和上传。引用[3]是关于Git推送代码到端,但用户没有源代码,所以可能不适用。引用[4]提到了将本地Azure项目部署到端服务器,其中涉及选择数据中心等。但是用户的需求是上传编译包并分享,所以我们可能需要考虑以下几种方式:1.使用存储服务(如阿里OSS、腾讯COS、AWSS3等)上传文件,然后生成分享链接。2.使用Maven私有仓库(如Nexus、效等)来上传Jar包,然后其他人可以通过Maven依赖使用(适用于Java库)。3.使用代码托管平台(如GitHub、Gitee)的Release功能,但通常需要和源代码一起,不过也可以单独上传二进制包。4.使用FTP或文件共享服务(如百度网盘)等,但不够专业。根据用户提供的引用,我们重点参考引用[2](上传Jar到Maven私有仓库)和引用[4](部署到服务器)的思路,但用户并没有说部署到服务器运行,而是分享给他人使用。因此,我们分两种情况:情况一:如果编译包是Java的Jar包,并且希望他人通过Maven依赖使用,则使用Maven私有仓库。情况二:如果编译包是任何类型的文件(如可执行程序、压缩包等),则使用存储服务。由于用户没有明确说明,我们提供两种方案的指导。方案一:上传到Maven私有仓库(以阿里效为例,参考引用[2])步骤:1.配置Maven的settings.xml文件,添加私有仓库的认证信息。2.使用Maven命令上传Jar包。方案二:上传到存储(以阿里OSS为例,因为引用中提到了阿里,但其他类似)步骤:1.创建存储空间(Bucket)。2.使用OSS控制台或命令行工具上传文件。3.设置文件访问权限并生成分享链接。由于用户没有指定具体平台,我们以阿里为例,因为引用中提到了阿里。下面详细说明两种方案。</think>### 如何将本地编译包上传到端并分享给他人 #### 方案一:使用存储服务(通用推荐) 1. **上传文件到存储** - 登录服务控制台(如阿里OSS、腾讯COS、AWS S3) - 创建存储桶(Bucket),设置访问权限为**公共读**或**私有访问+临时链接** - 通过控制台或命令行工具上传编译包: ```bash # 阿里OSS示例(需安装ossutil) ossutil cp your-package.jar oss://your-bucket-name/ ``` 2. **生成分享链接** - 在存储控制台选择文件,生成**临时访问URL**(私有文件)或直接复制**公共URL** - 设置链接有效期(建议1-7天) 3. **分享给他人** - 将生成的URL发送给使用者 - 使用者可直接通过浏览器或`wget`下载: ```bash wget https://your-bucket.region.aliyuncs.com/your-package.jar ``` #### 方案二:使用Maven私有仓库(适用于Java库) > 参考引用[2]的效私有仓库方案 1. **配置仓库认证** - 在`settings.xml`中添加仓库认证信息: ```xml <server> <id>cloud-repo</id> <username>your-username</username> <password>your-token</password> </server> ``` 2. **上传JAR包** - 执行Maven部署命令: ```bash mvn deploy:deploy-file \ -DgroupId=com.your.group \ -DartifactId=your-artifact \ -Dversion=1.0.0 \ -Dpackaging=jar \ -Dfile=your-package.jar \ -Durl=https://repo.cloud.com/repository/maven-releases/ ``` 3. **使用者配置** - 使用者在`pom.xml`添加依赖: ```xml <dependency> <groupId>com.your.group</groupId> <artifactId>your-artifact</artifactId> <version>1.0.0</version> </dependency> ``` #### 方案三:通过代码托管平台(小型文件) 1. **创建Release版本** - 在GitHub/Gitee仓库的Release页面 - 拖拽编译包到附件上传区 2. **获取下载链接** - 发布后自动生成永久下载URL - 示例:`https://gitee.com/yourname/repo/releases/download/v1.0/package.zip` #### 关键注意事项 1. **权限控制** - 敏感文件建议使用**临时访问令牌**(如OSS的STS令牌) 2. **版本管理** - 文件名包含版本号:`myapp_v2.3.4.exe` 3. **安全扫描** - 上传前使用VirusTotal扫描文件 > 推荐优先使用存储方案(方案一),操作简单且通用性强。对于Java生态,Maven仓库(方案二)更符合开发规范[^2][^4]。 --- ### 相关问题 1. 如何为存储的编译包设置自动过期时间? 2. 上传到Maven私有仓库时如何解决依赖冲突? 3. 有哪些工具可以监控编译包的下载次数和使用情况? 4. 如何验证下载文件的完整性(如校验MD5)?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值