如何将nodejs应用程序部署到谷歌云?

我试图部署一个nodejs应用程序到谷歌云,我已经发布了几个SO问题,我已经得到的错误,以及如何解决它们。 让我说明我的努力…

问题1)我试着按照教程 ,世界应用程序的部署。 当我input命令进行部署时,

$ gcloud preview app deploy app.yaml --set-default 

它给了我一个错误,说pipe理虚拟机不适用于您的应用程序的区域。 我联系了谷歌的技术支持代表谷歌,他说他的名字叫凌,他说他“不知道在印度不支持pipe理的虚拟主机”,他希望我指出我在哪里find这些信息。 所以我给他发了这个 ,注意其中的一个答案。 好…..

问题2)所以,我被困住了,不知道该怎么做。 search了“如何在google云上部署nodejs应用程序”,并发现了一个video ,其中一位谷歌开发人员告诉我,“在云中运行你的应用程序有两种主要方式,即基础设施即服务和平台即服务”。 在应用程序引擎上运行它是一个平台即服务,这是不在名单上,所以我去了我唯一的剩余选项。 有一个教程, 书架应用程序教程,也由谷歌,最后一部分描述如何在计算引擎上运行您的应用程序。 我试图通过教程,但是当我input命令

 git push cloud 7-gce:master 

推我的代码到存储库,它是要求我的用户名和密码,它从来没有提到,在教程中,我不知道该input什么。 我发现这个问题,但我不确定它适用于我的情况。 接下来我介绍了Zachary Newman提出的一些教程,我不能跟随他们使用ubuntu 的教程 ,因为当他们告诉你hello.js文件时,这真的很奇怪,因为我不得不ssh进入ubuntu镜像vm我创build,一切都非常慢,我不熟悉Linux上的命令,所以我不得不查找如何在创buildhello.js文件后“保存并退出”。 我得到的“networking服务器”运行,这是反向代理nginx服务器,但由于我不知道什么是APP_PRIVATE_IP_ADDRESS,当我访问该页面时,我可以看到nginx页面,但不是“hello world”消息应该显示。 请参阅先决条件标题以查看教程试图教给我的内容。 好….

问题3)在谷歌开发者控制台,一旦你login,有一个导航部分在左边,有一个“云启动”的链接。 在那里,我find了一个链接来创build一个安装了nodejs的虚拟机,它是由Bitnami创build的。 我点击它,我的虚拟机正在运行,我去了提供的外部IP地址,并看到由Bitnami的恭喜(呃…)页面。 我真的不知道该怎么做,所以我又贴出了一个SO问题。 一位bitnami开发人员告诉我,我需要将文件复制到远程存储库,创buildconfiguration文件,之后必须在Apache的configuration中包含该configuration,以便为应用程序提供服务。 怎么样?!?! 他刚刚发布了一个链接,以及一个bitnami wiki页面 。 我用filezilla连接到我的虚拟机,我试图将我的应用程序file upload到虚拟机。 我能够上传除节点模块以外的所有内容(上传时间过长,出于某种原因,在10分钟左右的上传过程中,ftp客户端仍然与服务器断开连接)。 所以我想我只是ssh进入实例,并尝试npm安装我的依赖关系。 但它给了我更多的错误…

问题4)我不知道为什么这个职位被搁置,但我发现这一点 。 我现在找不到确切的页面,但是我在google文档中的某个地方读过,我们不能以root / administrator身份通过devisessh进入一个实例,而且我们必须执行一些高级configuration才能做到这个。 问题是我不能安装依赖关系,除非我以pipe理员身份loginssh:'(所以我只是用filezilla上传了我的节点模块,一切看起来不错,我进入我的实例,我cd到我的应用程序目录并input命令

 node app.js 

几乎好像在嘲弄我,它控制台注销“连接到mongo ….”和“在端口3000上听…….”。 我很兴奋,我认为这是工作…..

问题4)服务器从来没有真正开始运行我想,它不能连接到我运行的mongodb数据库(另一个实例),这是连接到我的app.js文件中的mongodb实例的命令

 mongoose.connect('mongodb://****/myappdatabase'); 

****表示我的mongodb实例的外部IP。 大约5分钟后,我在ssh浏览器上出现错误

 Error: connect ETIMEDOUT ****:27017 

但谁有时间阅读所有这些权利?

我不是开发人员,我没有太多的编程经验(实际上接近于零)。 我是一个业余爱好者。 我拿起一本关于stephen g的c编程的书。 大概在5到6个月之前,从那以后,我刚刚在网上学习了一些教程,这是一本java书籍,还有一些参考资料。 我想创build一个网站。

我从w3schools学到了一些html,css,javascript和jquery,并通过一些关于创build基本节点服务器和提供一些html页面的教程,这实际上就是我所有的应用程序。 这就是我想要的。

我用节点的快速框架,mongoose连接到我的本地运行的mongodb。 Socket.io有一点联网。 我创造了网站的乐趣,我真的很想主持,并与我的朋友分享,我做到了这一点,现在退出,真的很尴尬,因为我不能主办的网站。 顺便说一下,我经历了比我在这个问题上发表的更多的东西。

现在,我真的很感谢一些帮助,甚至一些指导,我需要知道什么,也许我应该阅读的书籍或文档,我应该经历更熟悉网站托pipe将是伟大的。 我将在2天内提出这个问题,但在此之前,如果有人经历了这个,想要帮助自己没有个人利益,那么你就拯救了我的生命。 我一直在这里约4天没有运气。 谢谢,让我知道如果有什么你想知道我的申请。 我的意思是认真的,有多难,我正在做一些(或者所有事情)极其错误的事情。

       

网上收集的解决方案 "如何将nodejs应用程序部署到谷歌云?"

哇,伙计。 我想过这个问题,但你似乎真的想学习编程和需要帮助。 有经验的编码人员教新手编码器是什么这个网站是关于。 那么,我们走吧。

首先,Linux是你的朋友。 学习它。 用它。 我不使用Ubuntu,但你应该。 使用14.04,因为它是一个宽容的disto,当你刚刚学习时,挤满了你需要的东西。

有时间来解决你的问题:

问题1:您正在使用gcloud preview产品。 这些很棒,但不适合初学者,因为你不知道你在做什么。 只要站在一个n1标准的Ubuntu实例,并摇滚。 没有钟声。 没有哨声。 学习Ubuntu的Linux与你自学如何编程一个网站的热情相同。

问题2:不要使用git。 我每天都在用git,这真棒,但是你还有很长的路要走,git会让你感到困惑。 把你的工作空间,tar / gzip它,只是ssh整个shebang云。 然后解压缩,你的整个代码就在你的服务器上。 警告:不要专业地做这件事。 但是对于刚刚学习的人来说,小叮当伙计…小叮当。

问题3:不要使用Bitnami预build的图像。 这让你有机会学习如何从头开始,这是一个宝贵的经验。 这是你必须学习的两个命令:

 apt-get update apt-get install <insert thing you want to install> 

而已。 不是火箭科学,你会发现在Linux上的包pipe理的力量。

问题4:你在想这个。 为了真实,学习apt-get 。 到目前为止你会得到你,你会诅咒自己以前不使用它。 apt-get节点。 apt-get mongo。 并且一举砸一切。 那是我专业的吗? 一定不行。 但是,当你将开发工具与编程结合起来,你需要采取这些步骤的时候,这些都是关于宝宝的步骤。

勘误表:你想要有人推荐一本书或一个网站或指导。 所有你需要知道的是已经在Ubuntu上。 他们被称为man页。 这是手动的简称。 你可以在亚马逊的世界上购买所有书籍,并观看无限的YouTube页面。 它不会与简单的man命令相比较。 你必须相信我。

总结:只需创build一个Ubuntu实例。 targzip所有你的代码,并将其scp到你的实例。 学习apt-get和真正的,你已经设置好了。 你将会完全摧毁你的实例很多次。 所以只要删除它,重新创build它,并重新开始。 每一次,你都会比以前更聪明,更聪明。 我一直都是新手开发者。 你得从小处着手,继续前进。 最终你会明白你为什么要使用git。 为什么要扩大规模? 为什么LXC是惊人的。 为什么GCE的托pipe实例和虚拟机是疯狂的,以及为什么脚本部署是最佳实践。 但首先你必须了解如何构build一个实例并以任何可能的方式获得你的代码。 你会从那里成长。 祝你好运,哥们。