用于上传静态文件的app.yaml设置

时间:2017-03-17 08:08:41

标签: python file google-app-engine static app.yaml

我遇到了Python App Engine Web应用程序的app.yaml设置问题。不知怎的,除了index.html其他静态文件(javascript,CSS和HTML),我在我的应用程序中没有部署到应用程序引擎。我在static_files中的脚本下尝试了uploadapp.yaml元素的各种组合。虽然其中一些可以在本地开发者应用服务器上运行,但是当通过gcloud app deploy部署在应用引擎上时,它们无法工作。 gcloud生成的日志不会显示任何错误。它们为我的所有静态文件显示DEBUG消息,例如“跳过上传[...]”。

应用程序的目录结构(它是一个AngularJS应用程序)如下:

<APP ROOT>
├── app.yaml
├── my_scripts
│   ├── foo.py
│   └── ...
├── index.html
├── mainapp.py
└── web
    ├── assets
    │   ├── css
    │   │   ├── bootstrap.min.css
    │   │   ├── bootstrap-theme.min.css
    │   │   ├── ....
    │   │   └── ....
    │   └── js
    │       ├── app
    │       │   ├── app.js
    │       │   └── ....
    │       └── lib
    │           └── ...
    └── partials
        ├── login.html
        └── ...

以下是我的应用程序的app.yml文件。

runtime: python27
api_version: 1
threadsafe: true

handlers:

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /(user|tasks)/.*
  script: mainapp.app

- url: /
  static_files: index.html
  upload: index.html

- url: /web
  static_files: web\/[^\n]*
  upload: web\/[^\n]*

- url: /web
  static_dir: web

非常感谢任何帮助我解决此问题的指示。

2 个答案:

答案 0 :(得分:1)

您已更改路由顺序。也就是说,/web应该在/处理程序之前,以便GAE路由首先查找/web,然后查找/(记下顺序)从上到下)。如果您在/之前定义/web,则会始终显示index.html文件,因为/也会匹配/web

handlers:

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /(user|tasks)/.*
  script: mainapp.app

- url: /web
  static_dir: web

- url: /
  static_files: index.html
  upload: index.html

此外,我希望您无法将^web添加到skip_files

中的app.yaml部分

答案 1 :(得分:1)

以下处理程序配置对我有用:

- url: /(user|tasks)/.*
  script: mainapp.app

- url: /
  static_files: index.html
  upload: index.html

- url: /web
  static_files: web/(.*)/(.*)/(.*)/(.*)
  upload: web/(.*)/(.*)/(.*)/(.*)

- url: /web
  static_dir: web