运行环境

程序里面如何判断BAE环境的版本?

查看环境变量 SERVER_SOFTWARE。

用$username = getenv('HTTP_BAE_ENV_AK'); getenv username 和passwd失效是为什么呢?

BAE不再支持这种使用方式,请直接在代码中使用AK/SK字符串。

直接上传war包后用context.getRealPath()获取真实路径为什么返回null?

原因是BAE的Java环境将Tomcat等服务程序的路径做了修改,与开发者本机环境可能不完全相同。解决方法有如下两种:

  • 直接上传war包解压后的文件到BAE,context.getRealPath()不会再返回null。
  • 修改Tomcat配置使Tomcat解压war包。

BAE出口IP能使用吗?

不能使用,因为BAE的出口IP是多个随机的。

BAE出口IP地址范围有哪些?

当前BAE出口IP地址包括:

  • 61.135.185.83
  • 61.135.185.235
  • 119.75.219.52
  • 119.75.219.53
  • 119.75.219.61
  • 111.13.101.137
  • 220.181.7.214

注意:请合理使用BAE出口IP地址。如果我们监测到该IP地址被用于非法抓取、攻击等操作(或者收到用户举报后被证实属实),我们将采取严厉的处罚措施。

phpadmin为什么打不开?

可能是浏览器阻止了bce.baidu.com的弹出窗口。请修改浏览器的相关配置,允许来自bce.baidu.com 的弹窗或尝试更换浏览器。

在BAE环境中,应用的代码所在的目录是哪里?

/home/bae/app/

BAE支持C#吗?

不支持。BAE架设在大规模的Linux集群上,基于Linux操作系统。

BAE提供备案服务吗?

百度云的备案服务为每一种产品提供一定的免费服务配额。对于BAE,用户可对两个网站进行免费备案,超出部分须提工单额外申请。

BAE支持安装自己的SSL证书吗?

不支持。BAE本身提供泛域名的SSL,不允许用户安装自己的SSL。

BAE支持websocket吗?

BAE本身不支持websocket,但可通过开通Port端口来提供webscoket。具体操作方法,请参看利用扩展服务实现基于websocket的聊天室

BAE提供的数据库可以在本地访问吗?

不能,考虑到安全等因素,本地不允许直接访问BAE数据库,可通过控制台或在BAE部署内部访问。

BAE环境中是否可以运行二进制程序?

可以运行。前提条件如下:

  • 该程序在 ubuntu 12.04 64位 server 上编译通过。

  • 该程序依赖的动态库在BAE环境中存在。目前BAE环境中已经提供了绝大多数常见的动态库。对于相对小众的动态库,开发者需将其打包到应用程序中,并且要设法让二进制程序在运行时能找到该动态库。

什么是worker模式?

worker部署类型可满足开发者执行长期任务的需求。例如开发者可实现一个自定义的网络爬虫,实现sleep长期在后台运行,7*24小时独占socket接口等功能。

写在本地文件夹的文件为什么会丢失?

BAE目录下动态创建的文件、目录随时可能消失,因为当轻量虚拟机出现故障或轻量虚拟机所在物理机器出现故障时,需将这个轻量虚拟机动态迁移到别的物理机器上,保证应用的“高可用性”。迁移后,原来轻量虚拟机里动态创建的文件、目录都会丢失,这是PaaS通用的处理逻辑。

作为开发者,应该意识到PaaS的这种特性,尽量将需要持久化的数据或需要被多个轻量虚拟机共享的数据放到MySQL, Redis, MongoDB, BOS等存储服务器上,来解决共享文件的需求。

执行单元默认配额是多大?

每个执行单元都具有一定的资源配额,应用如果使用了超过配额的资源,就可能出现不可预期的错误。例如疯狂分配内存,大量占用磁盘空间等等。

  • 代码空间:存放代码,容量上限为100M,不能改变。
  • 运行环境的磁盘:保存临时文件,容量上限为2G,不能改变。
  • 运行环境的内存:所购买套餐的内存大小,开发者可通过升级套餐改变内存大小,需要提前申请,申请成功后可自行在控制台中调节套餐。
  • CPU: 与其它轻量虚拟机分享CPU。
  • 网络: 流入5Mb/s;流出5Mb/s。

配额申请多久才能有结果?

BAE有专人负责配额的审批,一般每周的一三五上午审批,个别配额需要按照相应的要求推迟审批;在提交审批的申请时,务必详细填写使用场景和申请理由以及自己的需求,如果再加上自己应用的链接,便于让审批人员更好的了解您的应用,申请会变得很容易。

应用配置文件app.conf有哪些注意事项?

  • 勿使用中文,否则发布会失败;
  • 勿使用Tab键,否则可能会发布失败,应使用空格代替;
  • 严格遵循YAML语法规范,否则可能会发布失败;
  • 空格的缩进一定要严格对齐,否则可能会发布失败。

页面出的各种错误码是什么意思?

  • 6xx 错误

    • 650 – 对应部署尚未创建或已被删除。
    • 651 – 域名规则延迟所导致,出现概率极低,可能发生在部署刚创建完成或代码发布中,即域名虽已创建成功并已于部署绑定,但因延迟无法正常访问。
    • 653 – 域名应用的键值尚未生效导致的错误,即域名已创建并已与后端绑定,但域名对应键值对外生效需要时间,在此期间访问应用会发生错误。最可能发生在部署创建完成后的几秒内,若持续报错,请与技术支持联系。
    • 654 – HTTP请求发生在部署所对应多个执行单元中的故障单元时导致的错误。系统会检测出故障的执行单元并对其进行恢复,故障时间应该只是短短一瞬间,若持续报错,请与技术支持联系。
    • 680 – IP被应用防火墙封禁导致的错误。开发者的不当错误致使IP被列入黑名单。
    • 681 – IP超过应用防火墙限额。
  • 3xx, 4xx 错误

    应用代码以及app.conf配置问题导致的错误。

  • 5xx 错误

    可能由应用代码本身的问题导致。若排除后仍报错,请与技术支持联系。

  • 500 – 一般情况下是由应用代码本身的问题导致。

  • 503 – 由应用压力过大致使资源被耗尽导致。请稍后再尝试,或增加执行单元并加大内存。若持续报错,请结合资源监控数据与技术支持联系。

  • 505 – 应用被封禁导致。

为什么在访问应用时出现404?

可能原因有两种:

  • app.conf中的URL转发规则没有配好,导致所请求的URL不知该如何处理。

  • 所请求的是一个静态文件,而应用中不存在这个静态文件。

系统资源为何会被回收?

为防止恶意占用资源,若开发者未按时支付账单,BAE有权收回资源。待账单支付后,方可继续使用,具体如下:

  • 账单发出后,7日仍未支付,将自动封禁该用户,回收其所有执行单元(服务终止,但代码仍保留)。
  • 6个月之内支付账单,则自动解封该用户,根据封禁之前的执行单元状态恢复服务。
  • 6个月后仍未支付,则代码删除且不可恢复。

自定义的域名为什么无法绑定?

要使用自定义域名,首先要到相关的工信部门进行域名备案,未备案的域名无法绑定。备案完成24后,BAE才能获取到域名数据,此时方可进行域名绑定。

BAE基础版是否支持中文域名绑定?

可以支持中文、英文域名绑定。

如何能把BAE运行环境中动态生成的文件下载到本地?

目前没有通用办法, 可以尝试如下两种方法:

  • 写程序将BAE环境中的文件上传到BOS;
  • 通过“端口服务Port”,实现SSH登陆到执行单元,然后通过SFTP下载文件。

BAE基础版是否支持跨域访问BOS Bucket?

BAE基础版支持通过公网跨域访问BOS Bucket;支持通过内网访问同一区域内的BOS Bucket。

BAE基础版是否支持跨域访问RDS?

BAE基础版支持跨域访问RDS。不管RDS是否跨域,BAE基础版只支持通过公网访问RDS。如果用户需要通过内网访问RDS,推荐使用BAE专业版。