如何将 nodejs 应用程序部署到 google 云?
How to deploy a nodejs application to google cloud?
我正在尝试将 nodejs 应用程序部署到 google 云,我已经发布了几个关于我遇到的错误以及如何修复这些错误的问题。让我说明一下我的努力...
I tried following the tutorial,hello world 应用程序部署。当我输入部署命令时,
$ gcloud preview app deploy app.yaml --set-default
它给了我一个错误,说托管虚拟机不适用于您的应用程序所在的区域。我联系了来自 Google 的人,一位来自 google 的技术支持代表,他说他叫 Ling,他说他是 "wasn't aware managed vms weren't supported in India",他要我指出我是在哪里找到这些信息的。所以我发给他,记下其中一个答案。好的.....
So, I was stuck, didn't really know what to do. Searched "how to deploy nodejs app on google cloud" and found a video in which a google developer informed me that there are "two main ways to run your application in the cloud, infrastructure as a service and platform as a service". Running it on app engine was the platform as a service, and that was off the list so I went with my only remaining option. There is a tutorial, the bookshelf app 教程,也是 google,最后一部分描述了如何 运行 您的应用程序在计算引擎上。我试图完成教程,但是当我输入命令时
git push cloud 7-gce:master
将我的代码推送到存储库,它要求我输入用户名和密码,教程中从未提到过,我不知道输入什么。我发现 this question but I'm not sure it applies to my situation. So next I went through some tutorials suggested by Zachary Newman, and I wasn't able to follow the tutorial 他们使用 ubuntu 的地方,因为当他们告诉你 hello.js 文件时,这真的很奇怪,因为我必须通过 ssh 进入我创建的 ubuntu 图像 vm 和一切真的很慢,我不熟悉 linux 上的命令,所以我不得不在创建 hello.js 文件后查找如何 "save and exit"。我得到的是"web server"到运行,它是反向代理nginx服务器,但是由于不知道APP_PRIVATE_IP_ADDRESS是什么,所以访问页面时,可以看到nginx页面但不是应该显示的 "hello world" 消息。请参阅先决条件标题,了解本教程试图教我的内容。好的....
problem 3) On the google developers console, once you log in, there is a navigation section on the left, there is a link to the "Cloud Launcher". In there I found a link to create a Virtual Machine with nodejs installed, it's created by Bitnami. I clicked it and my vm was running, I went to the external ip address provided, and saw a Congratulations (ugh...) page by Bitnami. I didn't really know what to do from there, so I posted another SO question. A bitnami developer told me I "need to copy your files to the remote repository, create the configuration files and after that you have to include that configuration in the configuration of Apache to serve the application". How?!?! He just posted a link as well to a bitnami wiki page。我使用 filezilla 连接到我的虚拟机,并尝试将我的应用程序文件上传到虚拟机。我能够上传除节点模块之外的所有内容(它们上传时间太长,并且由于某种原因 ftp 客户端在上传 10 分钟左右后不断失去与服务器的连接)。所以我想我会直接通过 ssh 进入实例并尝试 npm 安装我的依赖项。但是它给了我更多的错误...
problem 4) I don't know why this post was put on hold, but I found this。我现在找不到确切的页面,但我在 google 文档中的某个地方读到我们无法按设计将实例作为 root/administrator SSH,并且我们必须在其中执行一些高级配置为了能够做到这一点。问题是我无法安装依赖项,除非我以管理员身份通过 ssh 登录....:'( 所以我只是用 filezilla 上传了我的节点模块。一切看起来都很好,我 ssh 进入我的实例,然后我 cd 进入我的应用程序目录并输入命令
node app.js
几乎就像是在嘲笑我一样,它在控制台注销了 "connected to mongo...." 和 "Listening on port 3000....."。我很兴奋,我认为它正在工作......
problem 4) 服务器从未真正启动 运行ning 我想,它无法连接到我 运行 的 mongodb 数据库(另一个实例) ]ning,这是连接到我的 app.js 文件
中的 mongodb 实例的命令
mongoose.connect('mongodb://****/myappdatabase');
其中 **** 表示我的 mongodb 实例的外部 IP。大约 5 分钟后,我在 ssh 浏览器上出现错误
Error: connect ETIMEDOUT ****:27017
但是谁有时间阅读所有这些权利?
我不是开发人员,我没有太多编程经验(实际上接近于零)。我是一个爱好者。我拿起了一本 stephen g 写的关于 c 编程的书。 kochan 大约 5 或 6 个月前,从那时起,我一直在关注 Internet 上的教程、java 书中的编程以及一些参考 material。我想创建一个网站。
我从 w3schools 中学习了一些 html、css、java 脚本和 jquery,并学习了一些关于创建基本节点服务器的教程并提供一些 html 页面,这就是我的应用程序所做的全部工作。这就是我想要的。
我使用 node 的 express 框架和 mongoose 在本地连接到我的 mongodb 运行ning。 Socket.io 一点网络。我创建这个网站是为了好玩,我真的很想托管它并与我的朋友分享,我做到了这一点,现在退出真的很尴尬,因为我无法托管该网站。顺便说一句,我经历的比我在这个问题上发布的要多得多。
现在我真的很感激一些帮助,甚至一些关于我需要知道什么的指导,也许我应该阅读的书籍或我应该阅读的文档以更加熟悉网站托管会很棒。我将在 2 天内提出这个问题以获得赏金,但在那之前,如果有人经历过这个问题并且愿意为自己的个人利益提供帮助,那么你救了我的命。我已经进行了大约 4 天,但没有运气。谢谢,如果您想了解我的申请,请告诉我。我的意思是说真的,这有多难,我正在做一些(或所有)非常错误的事情。
哇,伙计。我考虑过举报这个问题,但您似乎真的很想学习编程并需要帮助。经验丰富的编码员教新手编码员就是这个网站的全部内容。那么,我们开始吧。
首先,Linux 是您的朋友。学习吧。用它。我不使用 Ubuntu,但你应该使用。使用 14.04,因为它是一个宽容的 disto,并且塞满了你刚开始学习时需要的东西。
是时候回答您的问题了:
问题 1:您使用的是 gcloud preview
产品。这些很棒,但不适合初学者,因为你不知道自己在做什么。只需在 n1 标准上建立一个 Ubuntu 实例并摇晃它。没有铃铛。没有口哨声。学习 Ubuntu linux 就像自学网站编程一样充满热情。
问题 2:不要使用 git。我每天都使用 git,它很棒,但是你还有很长的路要走,git 让人很困惑。带上你的工作区,tar/gzip 它然后将整个 shebang ssh 到云端。然后解压它,你的整个代码就在你的服务器上。警告:永远不要专业地做这件事。但是对于刚刚学习的人来说……小口小伙子……小口。
问题 3:不要使用 Bitnami 预建镜像。它剥夺了您从头开始学习如何执行此操作的机会,而这是一种宝贵的经验。这是您必须学习的两个命令:
apt-get update
apt-get install <insert thing you want to install>
就是这样。不是火箭科学,您将在 linux 上发现包管理的强大功能。
问题四:你想多了。真的,学习 apt-get
。它会让你走到这一步,你会因为没有早点使用它而诅咒自己。 apt-get
节点。 apt-get
mongo。并在一个实例中全力以赴。这就是我的专业吗?一定不行。但是,当您将开发运营与编程结合起来时,这一切都是关于小步骤的,您需要采取这些步骤。
勘误表:您希望有人推荐一本书、一个网站或指南。您需要知道的都已经在 Ubuntu 上了。它们被称为 man
页。它是手册的缩写。您可以在 Amazon 之外购买世界上所有的书籍并观看无限的 YouTube 页面。它不会与简单的 man
ing 命令相比。在这一点上你要相信我。
总结:只需创建一个 Ubuntu 实例。 tar
和 gzip
你所有的代码和 scp
它到你的实例。学习 apt-get
,真的,你已经准备好了。您将多次完全破坏您的实例。所以只需删除它,重新创建它,然后重新开始。每一次,你都会比上一次更聪明、更聪明。我一直在辅导新手开发人员。你必须从小处着手,逐步提高。最终你会明白为什么要使用 git。为什么要扩展。为什么 LXC 很棒。为什么 GCE 的托管实例和 VM 是疯狂的球手,为什么编写部署脚本是最佳实践。但首先你必须了解如何构建一个实例并以任何可能的方式将你的代码放在那里。你会从那里成长。祝你好运,伙计。
我正在尝试将 nodejs 应用程序部署到 google 云,我已经发布了几个关于我遇到的错误以及如何修复这些错误的问题。让我说明一下我的努力...
$ gcloud preview app deploy app.yaml --set-default
它给了我一个错误,说托管虚拟机不适用于您的应用程序所在的区域。我联系了来自 Google 的人,一位来自 google 的技术支持代表,他说他叫 Ling,他说他是 "wasn't aware managed vms weren't supported in India",他要我指出我是在哪里找到这些信息的。所以我发给他
git push cloud 7-gce:master
将我的代码推送到存储库,它要求我输入用户名和密码,教程中从未提到过,我不知道输入什么。我发现 this question but I'm not sure it applies to my situation. So next I went through some tutorials suggested by Zachary Newman, and I wasn't able to follow the tutorial 他们使用 ubuntu 的地方,因为当他们告诉你 hello.js 文件时,这真的很奇怪,因为我必须通过 ssh 进入我创建的 ubuntu 图像 vm 和一切真的很慢,我不熟悉 linux 上的命令,所以我不得不在创建 hello.js 文件后查找如何 "save and exit"。我得到的是"web server"到运行,它是反向代理nginx服务器,但是由于不知道APP_PRIVATE_IP_ADDRESS是什么,所以访问页面时,可以看到nginx页面但不是应该显示的 "hello world" 消息。请参阅先决条件标题,了解本教程试图教我的内容。好的....
problem 3) On the google developers console, once you log in, there is a navigation section on the left, there is a link to the "Cloud Launcher". In there I found a link to create a Virtual Machine with nodejs installed, it's created by Bitnami. I clicked it and my vm was running, I went to the external ip address provided, and saw a Congratulations (ugh...) page by Bitnami. I didn't really know what to do from there, so I posted another SO question. A bitnami developer told me I "need to copy your files to the remote repository, create the configuration files and after that you have to include that configuration in the configuration of Apache to serve the application". How?!?! He just posted a link as well to a bitnami wiki page。我使用 filezilla 连接到我的虚拟机,并尝试将我的应用程序文件上传到虚拟机。我能够上传除节点模块之外的所有内容(它们上传时间太长,并且由于某种原因 ftp 客户端在上传 10 分钟左右后不断失去与服务器的连接)。所以我想我会直接通过 ssh 进入实例并尝试 npm 安装我的依赖项。但是它给了我更多的错误...
problem 4) I don't know why this post was put on hold, but I found this。我现在找不到确切的页面,但我在 google 文档中的某个地方读到我们无法按设计将实例作为 root/administrator SSH,并且我们必须在其中执行一些高级配置为了能够做到这一点。问题是我无法安装依赖项,除非我以管理员身份通过 ssh 登录....:'( 所以我只是用 filezilla 上传了我的节点模块。一切看起来都很好,我 ssh 进入我的实例,然后我 cd 进入我的应用程序目录并输入命令
node app.js
几乎就像是在嘲笑我一样,它在控制台注销了 "connected to mongo...." 和 "Listening on port 3000....."。我很兴奋,我认为它正在工作......
problem 4) 服务器从未真正启动 运行ning 我想,它无法连接到我 运行 的 mongodb 数据库(另一个实例) ]ning,这是连接到我的 app.js 文件
中的 mongodb 实例的命令mongoose.connect('mongodb://****/myappdatabase');
其中 **** 表示我的 mongodb 实例的外部 IP。大约 5 分钟后,我在 ssh 浏览器上出现错误
Error: connect ETIMEDOUT ****:27017
但是谁有时间阅读所有这些权利?
我不是开发人员,我没有太多编程经验(实际上接近于零)。我是一个爱好者。我拿起了一本 stephen g 写的关于 c 编程的书。 kochan 大约 5 或 6 个月前,从那时起,我一直在关注 Internet 上的教程、java 书中的编程以及一些参考 material。我想创建一个网站。
我从 w3schools 中学习了一些 html、css、java 脚本和 jquery,并学习了一些关于创建基本节点服务器的教程并提供一些 html 页面,这就是我的应用程序所做的全部工作。这就是我想要的。
我使用 node 的 express 框架和 mongoose 在本地连接到我的 mongodb 运行ning。 Socket.io 一点网络。我创建这个网站是为了好玩,我真的很想托管它并与我的朋友分享,我做到了这一点,现在退出真的很尴尬,因为我无法托管该网站。顺便说一句,我经历的比我在这个问题上发布的要多得多。
现在我真的很感激一些帮助,甚至一些关于我需要知道什么的指导,也许我应该阅读的书籍或我应该阅读的文档以更加熟悉网站托管会很棒。我将在 2 天内提出这个问题以获得赏金,但在那之前,如果有人经历过这个问题并且愿意为自己的个人利益提供帮助,那么你救了我的命。我已经进行了大约 4 天,但没有运气。谢谢,如果您想了解我的申请,请告诉我。我的意思是说真的,这有多难,我正在做一些(或所有)非常错误的事情。
哇,伙计。我考虑过举报这个问题,但您似乎真的很想学习编程并需要帮助。经验丰富的编码员教新手编码员就是这个网站的全部内容。那么,我们开始吧。
首先,Linux 是您的朋友。学习吧。用它。我不使用 Ubuntu,但你应该使用。使用 14.04,因为它是一个宽容的 disto,并且塞满了你刚开始学习时需要的东西。
是时候回答您的问题了:
问题 1:您使用的是 gcloud preview
产品。这些很棒,但不适合初学者,因为你不知道自己在做什么。只需在 n1 标准上建立一个 Ubuntu 实例并摇晃它。没有铃铛。没有口哨声。学习 Ubuntu linux 就像自学网站编程一样充满热情。
问题 2:不要使用 git。我每天都使用 git,它很棒,但是你还有很长的路要走,git 让人很困惑。带上你的工作区,tar/gzip 它然后将整个 shebang ssh 到云端。然后解压它,你的整个代码就在你的服务器上。警告:永远不要专业地做这件事。但是对于刚刚学习的人来说……小口小伙子……小口。
问题 3:不要使用 Bitnami 预建镜像。它剥夺了您从头开始学习如何执行此操作的机会,而这是一种宝贵的经验。这是您必须学习的两个命令:
apt-get update
apt-get install <insert thing you want to install>
就是这样。不是火箭科学,您将在 linux 上发现包管理的强大功能。
问题四:你想多了。真的,学习 apt-get
。它会让你走到这一步,你会因为没有早点使用它而诅咒自己。 apt-get
节点。 apt-get
mongo。并在一个实例中全力以赴。这就是我的专业吗?一定不行。但是,当您将开发运营与编程结合起来时,这一切都是关于小步骤的,您需要采取这些步骤。
勘误表:您希望有人推荐一本书、一个网站或指南。您需要知道的都已经在 Ubuntu 上了。它们被称为 man
页。它是手册的缩写。您可以在 Amazon 之外购买世界上所有的书籍并观看无限的 YouTube 页面。它不会与简单的 man
ing 命令相比。在这一点上你要相信我。
总结:只需创建一个 Ubuntu 实例。 tar
和 gzip
你所有的代码和 scp
它到你的实例。学习 apt-get
,真的,你已经准备好了。您将多次完全破坏您的实例。所以只需删除它,重新创建它,然后重新开始。每一次,你都会比上一次更聪明、更聪明。我一直在辅导新手开发人员。你必须从小处着手,逐步提高。最终你会明白为什么要使用 git。为什么要扩展。为什么 LXC 很棒。为什么 GCE 的托管实例和 VM 是疯狂的球手,为什么编写部署脚本是最佳实践。但首先你必须了解如何构建一个实例并以任何可能的方式将你的代码放在那里。你会从那里成长。祝你好运,伙计。