• 应用部署
  • 应用部署
    • 准备应用
    • 1. 依赖
    • 2. 配置环境变量

    应用部署

    应用部署

    本文档从更高的层次介绍了如何在tsuru上面应用部署是如何工作的。

    准备应用

    如果你遵守12 Factor原则,你不需要做任何修改就可以在tsuru上部署。下面是应用部署在tsuru云上需要做的事情:

    • 从语言层面和操作系统层面定义好的依赖
    • 通过环境变量做好外部资源配置
    • 使用Procfile描述如何运行你的应用
      接下来我们稍微深入下这些话题。

    1. 依赖

    现在,实现的比较好的应用中依赖的定义都很清晰。在Python中,所有的依赖都写在requirements.txt或者类似的文件,Ruby中是Gemfile,Node.js中是package.json,以此类推。有些依赖还存在操作系统级别的依赖,像Ruby的Nokogiri gem或者MySQL-Python包,tsuru的单元启动时都很干净,所以你需要在一个名为requirements.apt的文件中声明这些操作系统依赖。这些文件中,应当像下面的列表一样声明包:

    1. python-dev
    2. libmysqlclient-dev

    2. 配置环境变量

    部署不同的所有地方(不同的环境,比如开发或者产品环境)都应当通过环境变量管理。tsuru很重视这个原则,所以它使用的所有服务需要的配置都是通过环境变量去设置,这样在tsuru上部署不同的环境就会很轻松。比如,如果要使用tsuru上的服务,如MySQL,当你把应用绑定到服务时,tsuru会从service API收到连接MySQL的所需要的设置,如用户名,密码,地址和数据库名。有了这些信息,tsuru会在应用所在的每个单元中对应的环境变量设置这些值。这些变量的名字由服务提供,在这个例子中,是MySQL服务。

    让我们来看看在tsuru上部署的Django应用的设置:

    1. import os
    2. DATABASES = {
    3. "default": {
    4. "ENGINE": "django.db.backends.mysql",
    5. "NAME": os.environ.get("MYSQLAPI_DB_NAME"),
    6. "USER": os.environ.get("MYSQLAPI_DB_USER"),
    7. "PASSWORD": os.environ.get("MYSQLAPI_DB_PASSWORD"),
    8. "HOST": os.environ.get("MYSQLAPI_HOST"),
    9. "PORT": "",
    10. }
    11. }

    你可能会问自己,“我怎么才能知道这些变量名字?”,不过别害怕!在tsuru上绑定应用时,它会返回运行所有服务要求tsuru在应用的单元上设置的所有变量(没有值,因为你不需要它们),如果你在命令行历史中丢失了这些环境变量,别担心!你总是可以通过<insert command here>去检查你的应用使用的服务,都生成了哪些变量。

    原文: http://doc.oschina.net/tsuru-paas?t=52832