配置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>
    

    注意:

    为“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: ]仅能在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