Tag: 部署

用于构build/testing的Node.js项目布局与部署

我正在开发我的第一个Cloud Foundry项目(…和第一个Node.js项目,第一个MongoDB项目,第一个“express”项目等等) 在第一天,我发现了这个问题,并把答案作为组织我的github仓库的起点: Node.js项目的文件夹结构 有一个未检入的/node_modules目录,而是由npm install根据package.json文件中的规范自动创build的。 好吧,我做了那个文件。 (注意:在vmc push ,似乎没有通过push-to服务器检查package.json文件,似乎只是复制了node_modules目录,如果它不存在则什么都不做。必须在您的客户端上执行npm install然后push。) 我的应用程序中有一些基础知识,现在我正要开始着手testing和构build基础架构。 例如:我想要一个构build过程,将运行在我所有的JavaScript上。 有一个名为ready.js的持续集成库,看起来像一个最新的构build工具… 但是,在我的项目目录中,并且正在执行npm install ready.js感觉有些不妥。 这意味着更多的东西将进入/node_modules目录并上传到云,当它不打算在云上运行。 同样道理:如果我有一个构build过程正在缩小资源(或其他任何),那么我不希望将源代码与vmc push部署。 我知道所有这些都是新的…但是有没有一个约定将目标转储到构build目录并从那里推送? 还是每个人都推动什么是有效的github根,并推动所有的构build和testing呢? 任何提示,欢迎…方法使用,避免方法… 更新 :我发现一个应用程序样板使用express和Node.js(以及其他几个常见的模块),它的服务器代码的JavaScript内部的“构build过程”…好或坏: https://github.com/mape/node-express-boilerplate 我也发现了这一点,看起来像将“样板”这个术语与希望看到的模块名称结合到一起是一个很好的search策略,可以find我正在寻找的东西: https://github.com/swbiggart/node-express-requirejs-backbone

正确的工作stream程部署节点应用程序

我在过去的几个月里一直在学习Node,现在有一个复杂的应用程序。 我的问题是,我想使它可重复使用,因为我是一个完整的noob,我从一开始就没有想到这一点。 我拥有的 : 一个复杂的节点/快速应用程序作为守护程序与pm2一起运行。 大量的subprocess脚本,一些在Node中,一些使用casperjs / phantomjs 数据库凭证的configuration文件,服务器端口等 许多npm的依赖关系,一些为应用程序本身,一些只用于subprocess。 应用程序本身运行良好,每条path都存储在configuration文件中,因此部署不应太难。 package.json文件中的所有npm依赖关系 我想要做什么: 将应用程序保存在GIT仓库中,以便在EC2实例上快速设置。 安装pm2,phantomjs / casperjs,所有node_modules,并以简单的方式创build应用程序的树状结构(包括一些用于应用程序创build文件的空文件夹),这样,不了解应用程序的人就可以得到它跑得快 我的问题 : 我需要将node_modules添加到我的git仓库吗? 我怎样才能以最简单的方式整合应用程序的部署,安装依赖和安装pm2,幻像和casper? 我不介意写一个脚本,但我不知道从哪里开始或最佳实践。 我在网上看到的大多数是关于nodejitsu / heroku,不适用。 我的缺点: Git新手 没有遵循任何发展的指导方针,因为这一切都是从玩具项目开始的。 希望我的问题是可以理解的,谢谢大家! 编辑: 到目前为止我有: 阅读Git的初学者:明确的实践指南 在github上做了一个回购,克隆它,并使用npm install来获得我的应用程序依赖。 仍试图弄清楚如何包含外部依赖关系。

什么是处理node.js私有模块依赖关系的推荐方式?

我目前正在使用部署在Elastic Beanstalk上的node.js应用程序。 它已经开始引用github上托pipe的私有模块作为私有存储库。 本地如果我把它的引用到我的package.json的依赖部分,如下所示,它工作正常。 我可以运行nom安装,它下载模块和应用程序没有问题。 "ModuleName": "git+https://TOKEN:x-oauth-basic@github.com/OWNER/REPO_NAME.git" 但是,当我尝试部署到Beanstalk失败,并出现以下错误: 2014-04-04 00:14:09,188 [DEBUG] (1630 MainThread) [commandWrapper.py-60] [root commandWrapper main] Command result: {'status': 'FAILURE', 'results': [{'status': 'FAILURE', 'config_sets': ['Infra-EmbeddedPreBuild', 'Hook-PreAppDeploy', 'Infra-EmbeddedPostBuild'], 'returncode': 1, 'events': [{'msg': 'Failed to run npm install. Snapshot logs for more details.', 'timestamp': 1396570449, 'severity': 'ERROR'}, {'msg': 'Failed to run npm install. npm http GET […]

Forever.js启动并重新启动多个脚本

我的网站应用程序有3个主要node.js组件:网站,饲料和工作。 要开始这些我永远使用: //forever.js var forever = require('forever'); function start(name){ forever.start( ['coffee', name + '.coffee'], { /* log options */ } ) }; start('website'); start('feeds'); start('jobs'); 我首先注意到的是,如果我运行脚本,它不会运行它作为守护进程。 (这很可能是正常的) node forever.js 所以我接下来做的是永远运行forever.js脚本。 我不知道这是否正确,也有forever.startDaemon所以不知道我应该使用哪一个。 forever start forever.js 这工作,但问题是,我想重新启动我的应用程序的新版本发布时的所有进程。 我使用git的post-receive hook来第一次运行forever.js,但是如果我在每个post-recieve上执行这个操作,它每次只会产生3个进程。 所以我想我需要一种方法来重新启动3个进程,如果他们已经在运行。 我想用forever.list做到这一点,但文档只说: forever.list (format, callback) Returns a list of metadata objects about each process that is being run […]

如何部署分离的前端和后端?

我正在开发一个新的项目与反应/快递作为前端和回环作为后端api。 我在不同的端口在我的开发环境中将它们分开。 我应该如何在生产中部署它们? 1)在同一台服务器上托pipe – 用不同的子域分隔后端? 2)托pipe在2个不同的服务器上 – 似乎不可能使用相同的域名

如何将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 […]

人们使用Node.js部署关系数据库更改的方式有哪些?

我一直在越来越多的投入到Node.js和最近托pipe服务,如Heroku和Nodejitsu,并一直在试图找出如何最好地部署数据库更改postgres或MySQL。 在npm下有几个迁移项目,我可以看到; 然而,似乎所有的东西都是非常麻烦的,或者只是不起作用。 我目前在npm上pipe理Monarch迁移项目,但是目前它本身就是bug,而且我开发这种工具的经验还在其他更程序化的语言中。 那么人们在这些环境中使用什么来部署对其数据库的更改呢? 什么为人工作? 我正在寻找更好地了解目前的情况/过程是什么样的。

我如何自动化Node.js部署?

我正在寻找类似于Capistrano for Rails的东西 – https://github.com/capistrano/capistrano/wiki/ 我希望能够从我的工作站运行一个命令,从GitHub项目更新我的服务器上的代码,并处理应用程序的所有必要的进程重新启动。 我需要能够专门控制这种情况发生,而不是在GitHub的签入事件中使用钩子。 Node.js开发者是否也使用Capistrano,还是有更好的Node.js工具?

一台机器上的node.js服务器实例的水平伸缩

在node.js上运行一个web服务器是一件简单的事情(如其优秀的例子和文档所见),但我想知道如何充分利用专用服务器的CPU资源? 由于node.js是单线程,因此利用多个处理器的唯一方法是通过多个进程。 当然,只有一个进程可以绑定到一个端口,所以似乎必须有一个主/辅助模式,其中主分派孩子,绑定到传入端口,并委托传入连接(和实际处理工作)给孩子。 (也许是通过饥饿的消费模式?) 这是扩展运行node.js的Web服务器的最佳方式吗? 如果是这样,有没有图书馆来简化主/从模式? 如果不是,build议哪种模式或部署设置最好地使用专用机器的全部资源? (这是一个更好的ServerFault问题?)

Heroku + node.js:我有一个使用多个端口的服务器。 我怎样才能让Heroku分配它们?

呃我会尽量做得更清楚.. 在我用node.js编写的应用程序服务器中,我有多个端口的内部代理: 在我的8080端口,我有我的restapi 。 在我的3000端口我有我的推服务器和聊天 。 我使用npm软件包的子域路由器进行内部路由到端口,公开了代理端口的“前端”中的子域。 代码演示: ( <some-app>显然不是<some-app>的真名) require('subdomain-router') ({ host: '<some-app>.herokuapp.com', subdomains: { '': 8080, // <some-app>.herokuapp.com <=> ::8080 –WORKS– 'api': 8080, // api.<some-app>.herokuapp.com <=> ::8080 'chat': 3000, // chat.<some-app>.herokuapp.com <=> ::3000 'push': 3000 // push.<some-app>.herokuapp.com <=> ::3000 } }).listen(process.env.PORT || 5000); 尽pipe我无法通过<some-app>.herokuapp.com:8080访问它,但只能通过<some-app>.herokuapp.com访问它,并让内部的subdomain-router模块达到这个效果。 另外,我无法访问子域名。 当试图访问api.<some-app>.herokuapp.com我从heroku得到No such app错误页面。 TL;访问<some-app>.herokuapp.com DR (redirect到我的API的/v1path),但无法访问<some-app>.herokuapp.com:8080 , <some-app>.herokuapp.com:3000或chat.<some-app>.herokuapp.com […]