关于 IBM Cloud Lite

  1. 使用 IBM Cloud Lite(轻量) 套餐需要注册一个账户,注册是免费的,也无需信用卡,并且账户永不过期
  2. 在 IBM Cloud Lite 套餐中包含 Cloud Foundry 服务,后端应用程序就是创建在这个上面。可以免费创建多个应用程序,只要这些应用程序占用的内存加起来不超过 256M 就 OK。如果超过 256M,就会产生费用。
  3. 如果创建的应用程序超过 10 天没有被访问,会进入休眠状态;如果超过 30 天没有被访问,则会被删除。
  4. 跟其他很多托管平台不一样的是,在 IBM Cloud 中创建的应用程序没有流量限制
  5. 除了 Cloud Foundry 外,IBM Cloud Lite 套餐中还包含很多其他免费的服务,如 Cloudant 数据库。这些服务可以很好的与 Cloud Foundry 应用程序集成在一起。

虽然 IBM Cloud Lite 有较多好处,但如果博客访问量较大,还是建议购买其他服务商的付费产品。因为由于众所周知的原因,IBM Cloud Lite 的大多数服务器都无法访问,只有美国达拉斯的可以访问(下文会说到)。服务器在美国,且没有 CDN,所以访问速度非常慢,只适合小型博客使用。

注册 IBM Cloud 账户

注册地址:https://cloud.ibm.com/registration。注册需要一个电子邮箱,需要注意的是,登录的时候所需要的 IBMid 其实就是这个邮箱。

注册成功后就可以登录到 IBM Cloud 了,登录地址:https://cloud.ibm.com/login

在 Cloud Foundry 上创建应用程序

  1. 在仪表盘页面,点击 “创建资源”:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图1

  2. 点击 Cloud Foundry 创建 Cloud Foundry 应用程序:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图2

  3. 创建一个公共应用程序:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图3

  4. 接下来开始填写应用程序的相关信息并创建应用程序:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图4在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图5
    区域只能选择达拉斯,运行时选择 Python。
    域选择 us-south.cf.appdomain.cloud,创建好应用程序然后访问的时候的域名就是 主机名.us-south.cf.appdomain.cloud,其他域都被墙了,所以域只能选择这个。
    组织就是注册时的邮箱。
    填写完成后点击右边的创建按钮。

  5. 创建完成后会进入应用程序的管理页面:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图6
    点击运行时 -> SSH 可以远程连接到应用程序进行操作:在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图7
    但使用在线的 SSH 只能进行简单管理,要实现应用程序的发布、构建等主要功能,需要依赖 ibmcloud cli 工具。

使用 ibmcloud cli 发布应用程序

ibmcloud cli 是用于管理 ibmcloud 上资源的命令行工具,在 linux 上可以使用 curl -sL http://ibm.biz/idt-installer | bash 命令安装。

要发布一个应用程序,需要经过以下步骤(命令行下):

  1. 登录到 IBM Cloud:ibmcloud login,ibmcloud cli 工具会以交互式的方式让用户登录到 IBM Cloud。
  2. 设置目标 Cloud Foundry 组织和空间:ibmcloud target --cf
  3. 发布应用程序:ibmcloud cf push,这会将代码发布到默认的应用程序上。如果有多个应用程序,可以使用 ibmcloud cf push 应用程序名 来将代码发布到指定的应用程序。

关于 ibmcloud cli 的详细用法,参考官方文档

应用程序的结构

发布到 IBM Cloud 上的应用程序必须具有一些特定的文件:

  1. manifest.yml 文件,这个文件规定了应用程序的一些信息,如: ```yaml applications:
  • name: marsvet # 应用程序名称 memory: 64M # 占用内存大小 routes:
    • route: marsvet.us-south.cf.appdomain.cloud # 域名 ```
  1. Procfile文件,该文件规定应用程序如何启动,如:

    1. web: python app.py
  2. requirements 文件。应用程序会自动安装该文件中指定的 Python 包。

可以从 https://github.com/IBM-Cloud/get-started-python 拷贝 IBM Cloud 提供的示例程序,这是个 flask 应用程序,可以完美运行在 IBM Cloud 上。在开发自己的应用程序时,可以将它作为基础模板。

连接 Cloudant 数据库

Cloudant 是 IBM Cloud 提供的一种键值数据库,它可以很容易地与 Cloud Foundry 应用程序集成起来。

每个 Lite 账户只能免费创建一个 Cloudant 实例,并具有 1GB 的免费空间。

在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图8

创建完成后可以在 Cloudant 详情页面中管理对应的 Cloudant 实例。

Cloudant 实例有两种访问方法,一种是点击 管理 -> Launch Cloudant Dashboard 登录仪表盘,在网页端执行增删查改等操作:
在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图9

第二种是在代码中连接数据库进行操作:

  1. from cloudant import Cloudant # python 访问 cloudant 数据库需要安装 cloudant 包
  2. from flask import Flask
  3. DB_USERNAME = "xxxxx"
  4. DB_PASSWORD = "xxxxx"
  5. DB_URL = "xxxxx"
  6. app = Flask(__name__)
  7. client = Cloudant(DB_USERNAME, DB_PASSWORD, DB_URL, connect=True) # 连接 Cloudant 实例
  8. @app.route('/dbtest')
  9. def dbtest():
  10. db = client.create_database("sentence", throw_on_exists=False) # 连接 sentence 数据库,如果不存在则新建
  11. json_document = {
  12. "sentence": "Where there's a start, there's a finish.",
  13. "date": "2019-10-19"
  14. }
  15. new_document = db.create_document(json_document) # 创建一个文档
  16. if new_document.exists():
  17. return "数据库测试成功!"

用代码连接 Cloudant 实例,需要先 详情页面 -> 服务凭证 -> 新建凭证,然后点击查看凭证,找到凭证中的 usernamepasswordurl 字段,这三个字段是用代码连接数据库所需要的凭证,对应上面代码中的 DB_USERNAMEDB_PASSWORDDB_URL 三个变量。
在 IBM Cloud 上部署永久免费的 Flask 应用程序 - 图10

如何防止应用程序休眠

现在有很多免费的云监控服务,如阿里云监控,使用这些免费监控服务就可以定期访问 Cloud Foundry 应用程序,使它不进入休眠状态了。

云监控的使用方法不再赘述。