码迷,mamicode.com
首页 > 其他好文 > 详细

Heroku 老牌云空间的部署方法

时间:2014-05-21 22:41:09      阅读:478      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   class   c   code   

今天研究了 2小时解决了 免费云空间的问题

这篇文章的主角就是Heroku,他的基本服务都是免费的,并且是无限流量,无限空间,最大的优点就是支持git,支持一键部署,这里鄙视下百度云空间,所有服务都是收费的,在中国这么穷B的国度,不知道此策略能得到大家认可么?

 

进入主题

Heroku 很多人不知道,因为这个平台是主推Rails服务的,但是它也是完美的能兼容以下几种平台

Ruby

PHP

NODE.JS

HTML

但是这个平台为什么是免费呢?因为它最主要的利润来源是数据库服务

bubuko.com,布布扣 

这个是一个服务商的收费标准,很贵吧?

部署到 Heroku

Heroku 是一个主流的 PaaS 提供商,在开发人员中广受欢迎。这个服务围绕着基于 Git 的工作流设计,假如你熟悉 Git ,那部署就十分简单。这个服务原本是为托管 Ruby 应用程序而设计的,但 Heroku 之后加入了对 Node.js 、Clojure 、Scala 、Python 和 Java 等语言的支持。Heroku 的基础服务是免费的。

下面我们使用 Heroku 部署我们的博客。

注册

https://www.heroku.com/

创建一个应用

注册成功后,就进入了控制面板页面,如图所示:

bubuko.com,布布扣

点击 Create a new app ,填写独一无二的应用名称后,点击 creat app 即创建成功,然后点击Finish up 。

此时跳转到控制面板页,并且可以看到我们创建的应用了。我们通过 应用名称.herokuapp.com即可访问我们的应用主页。如图所示:

bubuko.com,布布扣

安装 Heroku Toolbelt

Heroku 官方提供了 Heroku Toolbelt 工具更方便地部署和管理应用。它包含三个部分:

  • Heroku client :创建和管理 Heroku 应用的命令行工具
  • Foreman :一个在本地运行你的 app 的不错的选择
  • Git :分布式版本控制工具,用来把应用推送到 Heroku

Heroku Toolbelt 下载地址:https://toolbelt.heroku.com/ 。

注意:假如你的电脑上已经安装了 Git ,那么在安装的时候选择 Custom Installation 并去掉安装 Git 的选项,否则选择 Full Installation 。

安装成功后,打开 Git Bash ,输入 heroku login ,然后输入在 Heroku 注册的帐号和密码进行登录。Git 会检测是否有 SSH 密钥,如果有,则使用此密钥并上传,如果没有,则创建一个密钥并上传。

Tips:SSH 密钥通常用于授予用户访问服务器的权限。可将它们用于某些配置中,以便无需密码即可访问服务器。许多 PaaS 提供商都使用了此功能。

Procfile

在工程的根目录下新建一个 Procfile 文件,添加如下内容:

web: node app.js

Procfile 文件告诉了服务器该使用什么命令启动一个 web 服务,这里我们通过 node app.js 执行 Node 脚本。为什么这里声明了一个 web 类型呢?官方解释为:

The name “web” is important here. It declares that this process type will be attached to the HTTP routing stack of Heroku, and receive web traffic when deployed.

上传应用

打开 Git Bash ,输入:

$ git init
$ git add .
$ git commit -m "init"
$ git remote add heroku git@heroku.com:yourAppName.git

注意:将 yourAppName 修改为你自己的应用名。

在 push 到 heroku 服务器之前,我们还需要做一个工作。由于我国某些政策的原因,我们需到~/.ssh/ 目录下,新建一个 config 文件,内容如下:

Host heroku.com
User yourName
Hostname 107.21.95.3
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 22

然后回到 Git Bash ,输入:

$ git push heroku master

稍等片刻即上传成功。现在你就可以访问 http://yourAppName.herokuapp.com/ 了,

几个容易引起错误的地方:

 

 Uploading SSH public key ... failed!  错误,折腾了一天,还是找不出原因。

所幸的是问题最终解决了,只是本人还是菜鸟,还弄不明白其中的原因,故作此记录。

 

为了排除错误,我不断尝试Google上的各种方法,

其中尝试直接使用 ssh-keygen -t rsa  heroku keys:add 命令重新创建和添加秘钥,但结果依然报错。

但神奇的是,后来使用以下命令格式,问题便解决了

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

 

ssh-add ~/.ssh/id_rsa_heroku

 

heroku keys:add ~/.ssh/id_rsa_heroku.pub

 


 

push过程中, 首要的错误提示是:"Heroku push rejected no Cedar-supported app detected**"

 

Google了下, 找到懂得决的办法, 原文链接:http://stackoverflow.com/questions/8361475/heroku-push-rejected-no-cedar-supported-app-detected

 

失足的原因可能是, 因为还是空项目, 而我即将上传的代码中只有html和js文件,Heroku无法探测出项目类型,所以它不知道应当把我的App设置为哪种景象.

 

所以我们的项面前目今须要一些特点文件来指明我们的项目景象类型:

 

PHP: index.php

 

Python: requirements.txt

 

Ruby: Gemfile

 

Node.js: package.json

 

等等.

 

当然,我也不知道若是项目中包含了以上好几个文件会怎么样, 没试过。

 

因为我的项目景象须要的是PHP, 所以我在项面前目今又建了个空的index.php, 然后再次履行了上方的3个步调, 果真push成功了.


 

经由过程号令 heroku logs --tail 查看运行日记发明如下错误:

 

2013-11-30T18:22:28.183759+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path=/favicon.ico host=项目名.herokuapp.com fwd="64.120.6.170" dyno= connect= service= status=503 bytes=

 

经由过程查看Heroku的error code文档 : https://devcenter.heroku.com/articles/error-codes

 

错误code=H14 --> H14 - No web dynos running

 

文档中意思是说, 我没有为这个App分派至少一个Web Dyno, 解决办法:应用这个号令 "heroku ps:scale web=1" 分派一个Web Dyno. 

 

然后再打开, 就可以正常看到我index.html内容了.

Heroku 老牌云空间的部署方法,布布扣,bubuko.com

Heroku 老牌云空间的部署方法

标签:des   style   blog   class   c   code   

原文地址:http://www.cnblogs.com/fly-dog/p/3739200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!