3 分钟
各种免费云服务平台汇总
一、heroku
heroke是一个Paas服务提供商,提供一定的免费额度。
他提供的是一个针对不同语言的运行平台,而不是完整的虚拟机。
拥有一个全功能的cli客户端,对于自动化帮助很大
1、heroke注册、安装
(1)注册
(2)安装cli客户端
方式1
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
snap下载
sudo snap install heroku --classic
功能列表
- 创建新的Heroku应用程序
- 缩放您的测功机编队
- 运行一次性的dynos
- 采取数据库备份
- 配置插件
验证安装
heroku --version
安装自动完成
heroku update && heroku plugins:install autocomplete && heroku autocomplete
(2)cli客户端常用命令
2、heroke简单使用
一下全部以heroku cli工具实现(也可以通过web管理页面实现)
假设创建一个通知服务的用户微服务为例:(Java)
(1)登录
heroku login
(2)创建一个应用
heroku create notice-service-user
# 输出如下
# Creating ⬢ notice-service-user... done
# https://notice-service-user.herokuapp.com/ | https://git.heroku.com/notice-service-user.git
(3)创建Java SpringBoot程序
略
(4)创建git仓库并推送到heroku远程仓库
# cd project dir
git init
heroku git:remote -a notice-service-user #关联远程仓库
git add .
git commit -am "make it better"
git push heroku master
这样就完成了部署
访问https://notice-service-user.herokuapp.com/
查看程序
其他内容
追踪程序输出
#输出最近输出
heroku logs
#获得日志流(阻塞等待)
heroku logs -t
(5)同时提交到Github上
git remote add origin https://github.com/rectcircle/notice-service-user.git
git push origin master
3、使用数据库
(1)让项目添加数据库的支持
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置数据源
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/notice_service_user
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.MySQL5Dialect
创建实体类和DAO类
//User
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
//UserRepository
public interface UserRepository extends JpaRepository<User, Long> {
}
测试
mvn spring-boot:run
(2)heroke配置数据库
查看所有已安装插件
heroku addons -A
插件商城 heroku-postgresql文档 mysql 必须要 认证信用卡
添加Postgres插件到应用
# heroku addons:create 插件名:套餐
# hobby-dev 是免费套餐
heroku addons:create heroku-postgresql:hobby-dev
当数据库添加成功之后,就会添加一个数据库连接url到环境变量,变量名为:DATABASE_URL
如果你的是Java程序,将会自动创建JDBC_DATABASE_URL
环境变量 参见
查看环境变量
#查看环境变量
heroku config
#查看Java环境变量
heroku run echo \$JDBC_DATABASE_URL
(3)在Java中配置
# 生产环境
---
spring:
profiles: production #生产环境
datasource:
driverClassName: org.postgresql.Driver
url: ${JDBC_DATABASE_URL}
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
添加postgresql驱动依赖
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
(4)添加运行命令
在项目根目录添加Procfile
文件
web: java -Dserver.port=$PORT -jar target/notice-service-user.jar --spring.profiles.active=production
(5)提交部署
开一个终端准备查看日志
heroku logs -t
在另一个终端提交
git add .
git commit -m "add database support"
git push heroku master
注意事项
可能输入如下异常,
2018-06-06T16:15:20.184433+00:00 app[web.1]: 2018-06-06 16:15:20.183 INFO 4 --- [ main] o.h.e.j.e.i.LobCreatorBuilderImpl : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
2018-06-06T16:15:20.184453+00:00 app[web.1]:
2018-06-06T16:15:20.184456+00:00 app[web.1]: java.lang.reflect.InvocationTargetException: null
...
但是这不是错误参见
查看
访问https://notice-service-user.herokuapp.com/
查看程序
4、heroke cli常用命令
heroku login #登录
heroku create <app name> #创建
heroku git:remote -a <app name> #关联远程仓库
git push heroku master #推送部署
#输出最近输出
heroku logs
#获得日志流(阻塞等待)
heroku logs -t
heroku addons -A #查看已装插件
# heroku addons:create 插件名:套餐
# hobby-dev 是免费套餐
heroku addons:create heroku-postgresql:hobby-dev #安装免费数据库服务
#查看定义的环境变量
heroku config
#查看运行中的Java环境变量
heroku run echo \$JDBC_DATABASE_URL
#登录远程shell
heroku run shell