我是初学者RoR程序员,他计划使用Heroku部署我的应用程序.来自我的其他顾问朋友的话说,Heroku非常简单,易于使用.唯一的问题是我仍然不知道Heroku做了什么......
我看过他们的网站,简而言之,Heroku所做的是帮助扩展但是......为什么这甚至重要?Heroku如何帮助:
速度 - 我的研究表明,如果我的目标是美国/亚洲的受众,那么在美国东海岸部署AWS将是最快的.
安全 - 他们有多安全?
缩放 - 它实际上如何工作?
成本效率 - 像dyno这样的东西可以很容易地扩展.
他们如何与竞争对手竞争?例如,Engine Yard和bluebox?
请用外行英语术语来解释......我是初学程序员.
我正在尝试使用以下命令行将代码部署到heroku:
git push heroku master
Run Code Online (Sandbox Code Playgroud)
但是得到以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
我已经上传了我的公共SSH密钥,但它仍然会出现此错误.
我在GitHub上有一个现有的Rails应用程序并部署在Heroku上.我正在尝试建立一个新的开发机器,并从我的GitHub存储库中克隆了该项目.但是,我很困惑如何将此文件夹链接到Heroku.最初,我使用了heroku create
命令,但显然我这次不想这样做,因为它会创建另一个Heroku实例.
我在heroku上有一个小应用程序.每当我想看日志时,我都会去命令行做
heroku logs
Run Code Online (Sandbox Code Playgroud)
这只能让我看到大约100行.有没有办法在heroku上查看我们的应用程序的完整日志?
我有我的第一个node.js应用程序(本地运行正常) - 但我无法通过heroku(第一次w/heroku)部署它.代码如下.所以我不会写这么多代码,所以我只想说在我的网络中本地运行代码没有问题.
var http = require('http');
var fs = require('fs');
var path = require('path');
http.createServer(function (request, response) {
console.log('request starting for ');
console.log(request);
var filePath = '.' + request.url;
if (filePath == './')
filePath = './index.html';
console.log(filePath);
var extname = path.extname(filePath);
var contentType = 'text/html';
switch (extname) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
}
path.exists(filePath, function(exists) {
if (exists) {
fs.readFile(filePath, function(error, content) {
if (error) {
response.writeHead(500);
response.end();
}
else { …
Run Code Online (Sandbox Code Playgroud) Heroku有一个忽略所有分支但是"主人"的政策.
虽然我确信Heroku的设计师有很好的理由来制定这个政策(我猜测存储和性能优化),但作为开发人员,我的后果是无论我在做什么本地主题分支,我都想要一个简单的方法将Heroku的主人切换到该本地主题分支并执行"git push heroku -f"以覆盖Heroku上的master.
我从阅读http://progit.org/book/ch9-5.html的"Pushing Refspecs"部分得到的是
git push -f heroku local-topic-branch:refs/heads/master
我真正喜欢的是一种在配置文件中设置它的方法,以便"git push heroku"始终执行上述操作,将local-topic-branch替换为我当前分支的名称.如果有人知道如何做到这一点,请告诉我!
当然,需要注意的是,如果我是唯一可以推送到Heroku应用程序/存储库的人,那么这只是明智的.测试或QA团队可能会管理这样的存储库来尝试不同的候选分支,但是他们必须进行协调,以便他们在任何特定的日子都同意他们推动的分支.
毋庸置疑,拥有一个单独的远程存储库(如GitHub)也是一个非常好的主意,没有这个限制来支持所有内容.我称之为"原点"并使用"heroku"用于Heroku,以便"git push"始终将所有内容备份到源,并且"git push heroku"将我当前所有的分支推送到Heroku的主分支,覆盖它如有必要.
这会有用吗?
[remote "heroku"] url = git@heroku.com:my-app.git push = +refs/heads/*:refs/heads/master
在开始实验之前,我想听听更有经验的人,虽然我想我可以在Heroku上创建一个虚拟应用程序并进行实验.
至于提取,我真的不在乎Heroku存储库是否是只写的.我还有一个单独的存储库,比如GitHub,用于备份和克隆我的所有工作.
脚注:这个问题与使用Heroku的分支策略的Good Git部署类似,但不完全相同?
我在Heroku上遵循了node.js的基本入门说明:
https://devcenter.heroku.com/categories/nodejs
这些指令不会告诉您创建.gitignore node_modules,因此暗示应该将node_modules签入git.当我在git中包含node_modules时,我的入门应用程序正确运行.
当我按照更高级的例子:
https://devcenter.heroku.com/articles/realtime-polyglot-app-node-ruby-mongodb-socketio https://github.com/mongolab/tractorpush-server(source )
它指示我将node_modules添加到.gitignore.所以我从git中删除了node_modules,将其添加到.gitignore,然后重新部署.这次部署失败如下:
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.8.2
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
Error: npm doesn't work with node v0.8.2
Required: node@0.4 || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at …
Run Code Online (Sandbox Code Playgroud) 在Heroku免费应用程序中,dynos似乎保持闲置 - 我的应用程序的流量非常低,但在我的情况下,我的用户还必须等待20多秒才能启动新的dyno.
坦率地说,有了这种等待,很多人会在第一页显示之前离开.
所以,我有一个问题:当我的流量是每天一位数时,我应该每月支付36美元来为每个用户节省一个令人尴尬的长20秒.
有没有解决的办法??
我只想连接到我的 GitHub 帐户。当我执行此操作时,我会在页面右上角收到以下红色小弹出窗口的错误消息:
无法检索项目,内部服务器错误。