我遇到了Python App Engine Web应用程序的app.yaml
设置问题。不知怎的,除了index.html其他静态文件(javascript,CSS和HTML),我在我的应用程序中没有部署到应用程序引擎。我在static_files
中的脚本下尝试了upload
和app.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
非常感谢任何帮助我解决此问题的指示。
答案 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