我有一个使用App Engine标准JAVA作为后端API的Angular Web应用程序。
在同一项目下托管有角度的Web应用程序的最佳方法是什么?
我想将Web应用程序托管在同一个Google项目下。
当我将文件放在Java API项目下的src / main / Webapp文件夹下时,该应用程序运行正常。但是,这需要每次我需要更改Web应用程序时都刷新后端API。
或者,遇到了类似这样的事情,用于在GCS存储桶中托管角度应用程序: https://medium.com/@asanoop24/deploying-angular-6-app-on-google-app-engine-b6259d4c16c2
关于在GAE上托管有角度的Web应用程序的首选方法有何建议?
谢谢
答案 0 :(得分:0)
这是您可以考虑的一种方法。我将它用于Google AppEngine Standard上的多个完整堆栈部署,由于GAE功能(版本,流量拆分,日志...),因此更喜欢此版本(相对于GCS)。但是成本可能会高于GCS公共存储桶。
要这样做:
1)为前端部署第一项服务
只需简单部署由dist
生成的Angular ng build --prod
文件夹。
选择一个简单的标准python
环境即可。
app.yaml
应该看起来像:
runtime: python27
threadsafe: true
api_version: 1
handlers:
- url: /(.+\.js)
static_files: app/\1
upload: app/(.+\.js)
- url: /(.+\.css)
static_files: app/\1
upload: app/(.+\.css)
- url: /(.+\.png)
static_files: app/\1
upload: app/(.+\.png)
- url: /(.+\.jpg)
static_files: app/\1
upload: app/(.+\.jpg)
- url: /(.+\.svg)
static_files: app/\1
upload: app/(.+\.svg)
- url: /favicon.ico
static_files: app/favicon.ico
upload: app/favicon.ico
- url: /(.+\.json)
static_files: app/\1
upload: app/(.+\.json)
- url: /(.+)
static_files: app/index.html
upload: app/index.html
- url: /
static_files: app/index.html
upload: app/index.html
我确信处理程序规则可能会得到优化。我不是regexp的专家。 ;-)
deploy
文件夹的目录结构应类似于:
/deploy
app.yaml
/app => generated by ng build
index.html
...bundles..js
/assets
...
此默认服务将照常在https://YOUR_PROJECT_ID.appspot.com
上提供。
2)为后端部署第二项服务
然后(并且仅在第一次前端部署之后),在Java标准环境下为后端部署第二个服务。
但是我们在<service>
标记内精确调整了服务的名称。在这里,我选择api
,但可以使用其他任何名称。
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<version>1</version>
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
<instance-class>F4</instance-class>
...
<service>api</service>
...
这项新服务将在https://YOUR_SERVICE_NAME-dot-YOUR_PROJECT_ID.appspot.com
上提供,因此在https://api-dot-YOUR_PROJECT_ID.appspot.com
。
请注意在后端管理CORS,以正确接受来自https://YOUR_PROJECT_ID.appspot.com
的请求。