CloudFoundry应用部署记录

Cloud Foundry应用部署记录

本文地址:https://www.cnblogs.com/acyo/p/13450806.html

未经作者授权禁止转载及使用

 

1.前言

  Cloud Foundry是业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。Cloud Foundry平台可从Cloud Foundry Foundation作为开源软件获取,也可从众多商业服务供应商处作为软件产品或软件服务获取。

  本文是作者在学习Cloud foundry的应用部署记录,给自己留做参考,演示了在云平台Pivotal Web Services (PWS)部署Django框架的python应用的过程。PWS是Pivotal公司提供的公有云服务,其底层架构Cloud Foundry,其他同类型平台操作与之类似。

  部署过程中请参考Pivotal官⽅⽂档Cloud Foundry官⽅⽂档以了解更多。

 

2. 部署条件

2.1设备要求

  向Cloud Foundry部署应用对于设备没有显要的条件要求,一般电脑均可实现。对操作系统依赖较小,Linux,MacOS和Windows下都能完成部署且操作相同。

2.2支持应用类型

  Cloud Foundry目前支持的应用类型有Binary,GO,HWC,Java,.NET,NGINX,NODE.js,PHP,Python,R,Ruby,Staticfile。

2.3平台服务

  不同商业平台的服务费用标准不同,手册演示所使用的是PWS的免费服务,也是我在多种尝试后体验最好的部署方法,最高提供2G运行内存,可以满足小型应用的需求。

 

3.部署过程

3.1平台注册并登录

注册账号

  在Pivotal官网(https://account.run.pivotal.io/z/uaa/sign-up)注册帐号。

建立架构

  登陆PCF平台,选择PWS。打开PWS管理界面创建组织org,默认space为development,我们的应用将要部署在space下。整体架构如下所示:

  --org

    --space

      --app

3.2本地环境准备

安装cf cli

  CF CLI(Cloud Foundry Command Line Interface)是CF的终端管理工具,我们部署应用的执行命令由此提供。根据操作系统的类型,可在PWS管理界面下方Tools或者在Cloud Foundry的github页面(https://github.com/cloudfoundry/cli#downloads)选择安装方式进行安装。

CloudFoundry应用部署记录_第1张图片

  安装完成之后,打开cmd,执行命令cf可检查是否安装正确。

CloudFoundry应用部署记录_第2张图片

本地运行环境

  建议安装好能够运⾏应⽤的本地环境,以便进⾏调试,部署应用前需要确保本地运⾏没有问题,以提高部署的成功率。

 

3.3准备应用

须知

  本文仅以展示了Django框架的python应用,如果需要部署其它类型的应用或有更多的需求,请在官方文档https://docs.cloudfoundry.org/buildpacks/对应类型的buildpacks查看部署要求,而不能直接套用该手册。

 

配置文件

  在项目根目录下新建文件:

 

① requirements.txt

  在该文件中列出运行所需要的依赖文件以及版本号。

CloudFoundry应用部署记录_第3张图片

  使用Pycharm在终端执行pip freeze>requirements.txt即可,需要注意版本兼容性等问题,如2.1后的Django不再⽀持MySQL 5.*。

 

② Procfile

  由于python_buildpaack缺少应用的启动指令,需要在该文件内自行填写,例如:

#按照示例需要在requirementst.txt添加gunicorn

 

③ runtime.txt

  在runtime.txt中标明python版本,注意所用的Buildpack是否⽀持该版本,可在⽂档中查询。

 

④ mainfest.yml

  该文件用用来描述部署在CF上应用的配置信息,部署过程中将自动从该文件中获取。此⽂件提供了众多⾃定义设置,包括名称、内存分配额、实例数量等等,示例中的内容是必要的。关于mainfest.yml更多内容⻅⽂档:https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html

 

修改端口

  Host地址改为0.0.0.0,port需要从$PORT环境变量中获取。可以在manage.py中添加:

 

3.4使用cf cli进行部署

登录

  运行cf login -a https://api.run.pivotal.io

  分别输⼊刚刚注册的账号和密码,选择要部署的org和space。使⽤cf help -a可以显示所有命令。

 

Push

  在应⽤根⽬录下运行cf push,等待一段时间,cf cli会自动进行上传和依赖的安装。

CloudFoundry应用部署记录_第4张图片

  运行cf push -help可以显示push的更多使⽤⽅法。如果遇到FAILED,可以参照下节内容进行调试。

3.5调试

利⽤⽇志logs进⾏debug

  cf logs [name_of_your_app] --recent

CloudFoundry应用部署记录_第5张图片

  日志记录了应用部署时的详细过程,绝⼤多数失败的原因都可以在这里中找到,修复后重新push即可。

 

常见问题

① 数据库配置

  使⽤远程数据库时确保settings.py中的database设置正确,若切换需要重新进行makemigratinos和migrate。

还可以使⽤平台提供的数据库服务。对于mysql来说,登陆平台后,在Marketplace⻚⾯搜索ClearDB,选择⽅案,绑定部署的应⽤。

CloudFoundry应用部署记录_第6张图片

  打开平台的应⽤界⾯,在Service中找到ClearDB,点击View Credentials可获取远程连接数据库的地址、账号等信息。

CloudFoundry应用部署记录_第7张图片

 

② 未开放其他hosts访问

 

③ 静态文件地址

CloudFoundry应用部署记录_第8张图片

5.部署结果

CloudFoundry应用部署记录_第9张图片

  如果push中没有报错,并且看到了这样的画面,那么恭喜你,应用已经部署成功了。在此处和Pivotal平台管理界面都可以看到应用的运行情况。

CloudFoundry应用部署记录_第10张图片

  点击view app打开应用(routes格式为https://appname.cfapps.io)以检查验证。

 

 

你可能感兴趣的:(CloudFoundry应用部署记录)