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

Roc*_*645 6 deployment bitnami node.js google-compute-engine

我正在尝试将一个nodejs应用程序部署到谷歌云,我已经发布了几个关于我一直在收到的错误以及如何解决它们的问题.让我说明我的努力......

问题1)我尝试按照教程,hello world app部署.当我输入命令进行部署时,

$ gcloud preview app deploy app.yaml --set-default
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,说托管虚拟机不适用于您的应用程序的区域.我联系了来自Google的技术支持代表谷歌的人,他说他的名字叫Ling,他说他"不知道托管的vm​​s在印度不受支持",他希望我指出我在哪里找到这些信息.所以我给他发了这个,请注意其中一个答案.好.....

问题2)所以,我被卡住了,不知道该怎么办.搜索了"如何在谷歌云上部署nodejs应用程序",并发现了一个视频,其中谷歌开发人员告诉我"有两种主要方式在云中运行您的应用程序,基础架构即服务和平台即服务".在应用程序引擎上运行它是平台即服务,这是不在列表中所以我选择了我唯一剩下的选项.有一个教程,书架应用教程,也是谷歌,最后一部分描述了如何在计算引擎上运行你的应用程序.我试图完成教程,但是当我输入命令时

git push cloud 7-gce:master
Run Code Online (Sandbox Code Playgroud)

把我的代码推送到存储库,它要求我输入我的用户名和密码,它从未在教程中提到过,我不知道要输入什么.我发现了这个问题,但我不确定它是否适用于我的情况.接下来我接受了Zachary Newman建议的一些教程,但我无法按照教程进行操作他们使用ubuntu的地方,因为当他们告诉你hello.js文件时,它真的很奇怪,因为我不得不ssh到我创建的ubuntu映像vm,一切都很慢,我不熟悉linux上的命令所以我不得不在创建hello.js文件后查找如何"保存并退出".我得到了"web服务器"来运行,它是反向代理nginx服务器,但由于我不知道APP_PRIVATE_IP_ADDRESS是什么,当我访问页面时,我可以看到nginx页面而不是"hello world"消息应该显示.请参阅先决条件标题以查看教程试图教我的内容.好....

问题3)在谷歌开发者控制台上,一旦你登录,左侧有一个导航部分,有一个指向"云启动器"的链接.在那里,我找到了一个链接,用于创建安装了nodejs的虚拟机,它由Bitnami创建.我点击了它,我的vm正在运行,我去了提供的外部IP地址,并看到Bitnami的祝贺(呃...)页面.我真的不知道该怎么做,所以我发布了另一个SO问题.bitnami开发人员告诉我,我"需要将您的文件复制到远程存储库,创建配置文件,之后您必须将该配置包含在Apache的配置中以服务于应用程序".怎么样?!?!他刚刚发布了一个链接到bitnami wiki页面.我使用filezilla连接到我的虚拟机,我尝试将我的应用程序文件上传到虚拟机.我能够上传除节点模块之外的所有内容(它们上传时间太长,并且由于某种原因,ftp客户端在上传10分钟左右后仍然失去与服务器的连接).所以我想我会ssh到实例并尝试npm安装我的依赖项.但它给了我更多错误......

问题4)我不知道为什么这个帖子被搁置,但我发现了这个.我现在找不到确切的页面,但是我在谷歌文档的某个地方读到我们不能按照设计的root/administrator进入实例,并且我们必须执行一些高级配置才能够做到这个.问题是我不能安装依赖项,除非我作为管理员ssh进入....:'(所以我刚用filezilla上传了我的节点模块.一切看起来不错,我ssh到我的实例,我进入我的应用程序目录并输入命令

node app.js
Run Code Online (Sandbox Code Playgroud)

几乎就像嘲讽我一样,它控制台注销"连接到mongo ......"和"侦听端口3000 ......".我很兴奋,我觉得它很有效......

问题4)服务器从未真正开始运行我认为,它无法连接到我运行的mongodb数据库(另一个实例),这是连接到我的app.js文件中的mongodb实例的命令

mongoose.connect('mongodb://****/myappdatabase');
Run Code Online (Sandbox Code Playgroud)

其中****表示我的mongodb实例的外部IP.大约5分钟后,我在ssh浏览器上收到错误

Error: connect ETIMEDOUT ****:27017
Run Code Online (Sandbox Code Playgroud)

但是,他有时间阅读所有这些权利吗?

我不是开发人员,我没有太多编程经验(实际上接近于零).我是一个业余爱好者.我在stephen g上找了一本关于c编程的书.kochan大约5或6个月前,从那以后,我一直在关注互联网上的教程,java书籍编程和一些参考资料.我想创建一个网站.

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

我使用了node的express框架,并使用mongoose连接到我在本地运行的mongodb.Socket.io有点网络化.我创建了网站以获得乐趣,我真的想主持它并与我的朋友分享,我做到了这一点,现在退出真的很尴尬,因为我无法主持网站.顺便说一句,我经历的事情比我在这个问题上发布的要多得多.

现在我真的很感激一些帮助,甚至一些关于我需要知道的指导,也许我应该阅读的书籍或我应该通过的文档来更熟悉网站托管会很棒.我将在2天内提出这个问题以获得赏金,但在那之前,如果有人经历过这个并希望帮助他们自己没有个人利益,那么你将拯救我的生命.我已经在这里待了大约4天而没有运气.谢谢,如果您有任何关于我的申请的信息,请告诉我.我的意思是认真的,它有多难,我做某事(或一切)都非常错误.

bbu*_*123 8

哇老兄.我想到了这一点,但你似乎真的想学习编程并需要帮助.经验丰富的编程员教授新手编码器就是这个网站的全部内容.所以,我们走了.

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

是时候解决你的问题:

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

问题2:不要使用git.我每天都使用git而且很棒,但是你还有很长的路要走,git让hella感到困惑.拿你的工作区,tar/gzip它,然后把整个shebang ssh到云端.然后解压缩它,您将在服务器上拥有完整的代码.警告:从不这样做专业.但对于刚刚学习的人来说......小咬人......小咬.

问题3:不要使用Bitnami预先构建的图像.它剥夺了您从头开始学习如何做到这一点的机会,这是一次非常宝贵的经历.以下是您必须学习的两个命令:

apt-get update
apt-get install <insert thing you want to install>
Run Code Online (Sandbox Code Playgroud)

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

问题4:你过分思考这个问题.真实的,学习apt-get.它会让你到目前为止,你会诅咒自己之前没有使用它.apt-get节点.apt-get蒙戈.并在一个实例上猛烈抨击.那是我专业的做法吗?一定不行.但是,当您将开发与编程结合起来并且需要采取这些步骤时,这一切都与婴儿步骤有关.

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

总结:只需创建一个Ubuntu实例.tar以及gzip所有代码和scp它的实例.学习apt-get,真实,你是固定的.你将完全摧毁你的实例多次.所以只需删除它,重新创建它,然后继续重新开始.每一次,你都会比以前更聪明,更聪明.我一直在指导新手开发人员.你必须从小做起,然后继续努力.最终你会明白你为什么要使用git.为什么要缩放.为什么LXC太棒了.为什么GCE的托管实例和虚拟机是疯狂的,以及为什么编写部署脚本是最佳做法.但首先,您必须了解如何构建实例并以任何可能的方式获取代码.你会从那里成长.祝你好运,伙计.