如何将Angular 7项目部署到Google Cloud

时间:2019-05-04 16:20:42

标签: javascript angular7 gcloud

我已经构建了一个Angular 7应用程序,当我从本地Mac或远程centos服务器执行ng serve命令时,该应用程序可以很好地工作。

该应用程序正在使用php个文件来访问均在我的Google云上提供的MySQL数据库。

现在,在执行gcloud app deploy之后,我在屏幕上看到的最后一件事是消息:

  

nebula@0.0.0开始/ app   ng服务

     

sh:1:ng:未找到

我死在水中

我尝试了app.yamlcloudbuild.yaml文件的许多不同版本,以至于我什么都没学。

我从最基本的“英雄”应用开始尝试了同样的事情,并且遇到了同样的问题。

  

ng new xxx   cd xxx   npm安装   ng服务

然后我在浏览器中看到默认的Heros屏幕。

然后我创建此app.yaml文件

runtime: nodejs
env: flex

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10


service: 
  xxx

然后我尝试使用:

  

gcloud应用程序部署

完成后,我收到消息

  

已将服务[xxx]部署到[https://xxx-dot-project.appspot.com]

当我转到该网址时,我得到:

  

错误:服务器错误

服务器遇到错误,无法完成您的请求。 请在30秒内重试。

此运行的日志文件为:

    gcloud app logs tail -s xxx
    Waiting for new log entries...
    2019-05-04 15:27:35 xxx[20190504t102436]  "GET / HTTP/1.1" 404
    2019-05-04 15:27:35 xxx[20190504t102436]  "GET /favicon.ico HTTP/1.1" 404
    2019-05-04 15:28:56 xxx[20190504t102436]  "GET / HTTP/1.1" 404
    2019-05-04 15:32:45 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 15:32:50 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 15:33:06 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 15:33:10 xxx[prod]  "GET /run HTTP/1.1" 404
    2019-05-04 15:33:10 xxx[prod]  "GET /favicon.ico HTTP/1.1" 404
    2019-05-04 15:33:16 xxx[prod]  "GET /run HTTP/1.1" 404
    2019-05-04 15:33:16 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 15:33:19 xxx[prod]  "GET /login HTTP/1.1" 404
    2019-05-04 15:33:19 xxx[prod]  "GET /favicon.ico HTTP/1.1" 404
    2019-05-04 15:40:43 xxx[prod]  "GET /login HTTP/1.1" 404
    2019-05-04 15:40:46 xxx[prod]  "GET /login HTTP/1.1" 404
    2019-05-04 15:40:50 xxx[prod]  "GET /login HTTP/1.1" 404
    2019-05-04 15:40:50 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 15:40:53 xxx[prod]  "GET / HTTP/1.1" 404
    2019-05-04 16:01:50 xxx[20190504t105955]  "GET / HTTP/1.1" 500
    2019-05-04 16:01:51 xxx[20190504t105955]  /bin/sh: 1: ng: not found
    2019-05-04 16:06:19 xxx[20190504t105955]  "GET / HTTP/1.1" 500
    2019-05-04 16:06:20 xxx[20190504t105955]  /bin/sh: 1: ng: not found

我的问题是,有人可以提供该应用程序在Google云中运行的过程的简单示例吗?

4 个答案:

答案 0 :(得分:0)

创建项目后,将项目发布到GitHub上。 在GitHub Apps上,您必须立即安装Google Cloud Build,因为它需要访问您的存储库。 您还必须为新应用程序创建一个Google Cloud Project,并启用Cloud Build和Cloud App Engine。

有关更多详细信息,请参阅此处: https://medium.com/felixklauke/angular-google-cloud-build-app-engine-5e7c2038bdad

答案 1 :(得分:0)

在使用PHP后端部署Ng7应用程序时,我建议您使用两种不同的解决方案:

  • Firebase Hosting针对带有CDN的SPA进行了优化,以部署Ng应用程序(更改您的environment.ts以将其定向到AE端点。您将首先使用ng build构建应用程序,然后部署工件,因此,甚至不需要在结果包中使用Angular工具。
  • 使用AppEngine部署您的后端

答案 2 :(得分:0)

看起来去Firebase的建议是最有用的选项。

我离自己想去的地方很近,现在我看到了很多有用的附加功能。

答案 3 :(得分:0)

您可以使用类似于以下内容的app.yaml部署SPA(例如Angular):

runtime: nodejs10
env_variables:
  NODE_ENV: production
handlers:
  - url: /
    static_files: dist/my-project/index.html
    upload: dist/my-project/index.html

  - url: /
    static_dir: dist/my-project

您需要事先使用ng build --prod在本地构建角度项目,否则需要在package.json上设置predeploy命令,gcloud app deploy将调用该命令(例如predeploy": "npm run lint && npm run build -- --prod --aot")。同样重要的是,您需要确保忽略dist文件中.gcloudignore文件夹之外的所有文件。这将阻止Google Cloud上传这些文件。

# This file specifies files that are *not* uploaded to Google Cloud Platform
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
#   $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore

# Node.js dependencies:
node_modules/
webpack.config.js
src/
tsconfig.json
readme.md
ssl/
tslint.json
LICENSE
.editorconfig
.dockerignore
.gitignore

https://github.com/mrdulin/angular-apollo-starter包括所有这些文件