我已经构建了一个Angular 7应用程序,当我从本地Mac或远程centos服务器执行ng serve
命令时,该应用程序可以很好地工作。
该应用程序正在使用php
个文件来访问均在我的Google云上提供的MySQL数据库。
现在,在执行gcloud app deploy
之后,我在屏幕上看到的最后一件事是消息:
nebula@0.0.0开始/ app ng服务
sh:1:ng:未找到
我死在水中
我尝试了app.yaml
和cloudbuild.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云中运行的过程的简单示例吗?
答案 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应用程序时,我建议您使用两种不同的解决方案:
ng build
构建应用程序,然后部署工件,因此,甚至不需要在结果包中使用Angular工具。答案 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