应用引擎BAE-专业版

    配置app.conf

    app.conf是BAE提供的部署配置文件,用户通过配置app.conf提供的如下功能,实现对所托管Web应用的高级定制:

    • handlers: 自定义Web服务器规则
    • crond: 定时任务
    • environment: 环境变量
    • system_packages:安装系统软件包

    注意:app.conf须严格遵照YAML语法规范,任何不合规范的配置,如使用中文、Tab或不符合缩进规则等,均会导致部署失败。

    handlers

    handlers支持如下规则:

    • url与regex_url: 设置路由规则
    • errordoc: 自定义错误页面
    • expire: 设置过期时间
    • mime: 设置某类扩展名对应的文件类型
    • check_exist: 检查文件或目录是否存在

    如下为一个简单的app.conf文件handlers示例:

    handlers:
      - regex_url : /
        script: index.php
      - regex_url : ^/index\.html$
        script : index.php
    
      - errordoc : 404 /error/404.html
      - errordoc : 0 /error/default.html
    
      - expire : .jpg modify 10 years
      - expire : .swf modify 10 years
      - expire : .png modify 10 years
      - expire : .gif modify 10 years
      - expire : .JPG modify 10 years
      - expire : .ico modify 10 years

    关于上述规则的解释如下:

    • 指定默认首页为index.php
    • 当访问的URL匹配“/index.html”时,指向“index.php”
    • 对于404错误的提示页面指向“/error/404.html”
    • 对于除了404以外的错误,提示页面指向“/error/default.html”
    • 对于扩展名为.jpg/.swf/.png/.gif/.JPG/.ico的文件,其缓存失效时间为10年

    url与regex_url

    作用

    设置路由规则。当用户输入的URL字符串的子串与“url”所匹配的字符串一致时,执行script指定的操作;“regex-url”规则的功能与“url”规则相同,支持标准正则表达式,可与script、status_code及location规则配合使用,推荐使用regex-url规则。

    语法

    handlers :
      - url : <Regex>
        script : <File_Path>
      - url : <Regex>
        static_files : <File_Path>
      - regex_url : <Regex>
        script : <File_Path>
      - regex_url : <Regex>
        status_code : {301 | 302 | 403 | 404}
        [location : <Redirection_Page>]

    注意:

    [location: <Redirection_Page>]仅能在status_code设为301或302时使用。

    代码示例

    handlers :
      - url : /
        script : home.php
      - url : /index\.html
        script : home.php
      - url : /(aaa)/(.*\.gif)
        static_files : static/$2
      - url : /admin/.* 
        script : admin.php
      - regex_url : ^/[a-z0-9]*\.html$
        script : /index.php       
      - regex_url : ^/secure_page$
        status_code : 403
      - regex_url : ^/secure_page$
        status_code : 302
        location : http://example.com/error.htm
    示例 解释
    - url : /
      script : home.php
    指定默认首页为home.php
    - url : /index.html
      script : home.php
    当访问的URL包含“/index.html”时,指向home.php
    - url : /(aaa)/(.*.gif)
      static_files : static/$2
    当访问的URL包含“/aaa/xxx.gif”时,指向“static/xxx.gif”,其中“xxx”为不包含换行在内的任意字符串
    - url : /admin/.*
      script : admin.php
    当访问的URL包含“/admin/xxx”时,指向“admin.php”,其中“xxx”为不包含换行在内的任意字符串
    - regex_url : ^/[a-z0-9]*.html$
      script : /index.php
    当访问的URL匹配“/xxx.html”时,指向“index.php”,其中“xxx”必须为小写字母或者数字。
    - regex_url : ^/secure_page$
      status_code : 403
    当访问的URL匹配“/secure_page”时,返回403错误。
    - regex_url : ^/secure_page$
      status_code : 302
      location : http://example.com/error.html
    当访问的URL匹配“/secure_page”时,返回302错误,并转移至http://example.com/error.html

    errordoc

    • 作用

      自定义错误页面,设定Web服务器在处理用户请求发生错误时所返回的错误页面。

    • 语法

        handlers :
          - errordoc : <Error_Code> <Error_Response_Page>    

      注意:

      <Error_Code>为“0”时表示任意错误。

    • 代码示例

        handlers :
          - errordoc : 403 /error/403.html
          - errordoc : 404 /error/404.html
          - errordoc : 0 /error/default.html

    expire

    • 作用

      设置过期时间,指导浏览器对其进行缓存和失效操作。

    • 语法

        handlers :
          - expire : <File_Extension> {access | modify} <Number> {years | months | weeks | days | hours | minutes | seconds} 
    • 代码示例

        handlers :
          - expire : .pdf access 1 months

    mime

    • 作用

      设置某类扩展名对应的文件类型。

    • 语法

        handlers :
          - mime : <File_Extension> <Content_Type>
    • 代码示例

        handlers :
          - mime: .txt text/plain

    check_exist

    • 作用

      检查文件和目录是否存在,并根据判断结果进行处理,可与script、status_code、location规则配合完成使用。

    • 语法

        handlers :
          # 格式一
          - check_exist : {file_exist | dir_exist | not_exist}
            script : <File_Path>  
          # 格式二 
          - check_exist : {file_exist | dir_exist | not_exist}
            status_code : {301 | 302 | 403 | 404}
            [location : <Redirection_Page>]

      注意:

      [location: <redirection_page>]仅能在status_code设为301或302时使用。

    • 代码示例

      # example 1
      handlers :
        - check_exist : not_exist
               script : /index.php   
      
      # example 2
      handlers :
        - check_exist : not_exist
          status_code: 403
      
      # example 3
      handlers :
        - check_exist : not_exist
          status_code : 302
             location : http://example.com/error.html    

    crond

    • 作用

      定时执行Shell命令或脚本。

    • 语法

        crond :
          service : {on | off}
          crontab :
            - "<Cron_Expression> <Shell_Command>"

      <Cron_Expression>的语法如下图所示:

      <Cron_Expression>包括5个部分,每个部分均代表一个时间单位,分别是分、时、日、月、周。每个部分的取值范围如上图所示。

      时间单位是否必选取值范围允许的特殊字符
      必选0-59* , -
      必选0-23* , -
      必选1-31* , - L W
      必选1-12或JAN-DEC* , -
      必选0-6或SUN-SAT* , - L #
      可选1970-2099* , -
    • "*":代表取值范围内所有数字
    • ",":用于分隔多个取值,例如:"MON,WED,FRI"
    • "-":用于定义一个时间范围,例如:2010-2020
    • "L":代表“最后的”,例如:在“周”中填写5L,代表每个月最后一个周五
    • "W":代表距离当前最近的工作日,例如:15W,若15日为周日,则15W代表周一,即16日
    • "#":代表指定周的一个指定的日子,例如:5#3代表每个月第三周的周五
    • "/":代表“每”

    举例:

    • "0 12 * * *":每日12:00PM触发
    • "15 10 * * *":每日10:15AM触发
    • "*/5 14 * * *":从14:00PM开始,每5分钟触发一次,至14:55PM结束
    • "*/5 14,18 * * *":从14:00PM开始,每5分钟触发一次,至14:55PM结束;从18:00PM开始,每5分钟触发一次,至18:55PM结束
    • "15 10 L * *":每月最后一天10:15AM触发
    • "15 10 * * 6L":每月最后一个周六10:15AM触发
    • "15 10 * * 6#3":每月第三个周六10:15AM触发

    注意:

    • 最多支持10条<Shell_Command>,每条均需用“crontab”包起来。
    • 如果<Shell_Command>执行的是shell脚本,建议增加“sh”以确保命令被顺利执行。
    • 系统对<Shell_Command>执行的文件类型没有要求,用户只需确保该文件是可执行的。
    • 代码示例

        crond :
          service : on
          crontab :
            - "*/1 * * * * sh /home/bae/app/do.sh >> /home/bae/log/do_err.log"
            - "*/1 * * * * python /home/bae/app/test.py >> /home/bae/log/test.log"

    environment

    • 作用

      用户自定义环境变量。

    • 语法

        environment :
          <Variable_Name> : <Variable_Value>
    • 代码示例

        environment :
          USER_ENV1 : 1000
          USER_ENV2 : "hahaha"

    system_packages

    • 作用

      安装系统软件包,bae会对每个软件包执行apt-get install命令。

    • 语法

        system_packages :
          - <Package_Name>
         
    • 代码示例

        system_packages :
           - make
           - vim
    上一篇
    环境管理
    下一篇
    自定义镜像