zoukankan      html  css  js  c++  java
  • 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)选择安装方式进行安装。

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

    本地运行环境

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

     

    3.3准备应用

    须知

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

     

    配置文件

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

     

    ① requirements.txt

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

      使用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会自动进行上传和依赖的安装。

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

    3.5调试

    利⽤⽇志logs进⾏debug

      cf logs [name_of_your_app] --recent

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

     

    常见问题

    ① 数据库配置

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

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

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

     

    ② 未开放其他hosts访问

     

    ③ 静态文件地址

    5.部署结果

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

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

     

     

  • 相关阅读:
    面试题八 二进制中 1 的个数
    面试题七 斐波那契数列
    面试题六 用两个栈实现队列
    第 3 章 第 2 题 求级数问题 递归法实现
    第 3 章 第 1 题 精简冗余 if 语句问题 使用数组实现
    第 2 章 第 10 题 测量电灯泡体积问题
    第 2 章 第 9 题 顺序 & 二分搜索效率分析问题
    带缓冲的IO( 标准IO库 )
    Linux 中权限控制实例
    Linux 中权限的再讨论( 下 )
  • 原文地址:https://www.cnblogs.com/acyo/p/13450806.html
Copyright © 2011-2022 走看看