Heroku 老牌雲空間的部署方法

今天研究了 2小時解決了 免費雲空間的問題php

這篇文章的主角就是Heroku,他的基本服務都是免費的,而且是無限流量,無限空間,最大的優勢就是支持git,支持一鍵部署,這裏鄙視下百度雲空間,全部服務都是收費的,在中國這麼窮B的國度,不知道此策略能獲得你們承認麼?html

 

進入主題node

Heroku 不少人不知道,由於這個平臺是主推Rails服務的,可是它也是完美的能兼容如下幾種平臺git

Rubygithub

PHPweb

NODE.JS數據庫

HTMLjson

可是這個平臺爲何是免費呢?由於它最主要的利潤來源是數據庫服務服務器

memcache addons 

這個是一個服務商的收費標準,很貴吧?app

部署到 Heroku

Heroku 是一個主流的 PaaS 提供商,在開發人員中廣受歡迎。這個服務圍繞着基於 Git 的工做流設計,假如你熟悉 Git ,那部署就十分簡單。這個服務本來是爲託管 Ruby 應用程序而設計的,但 Heroku 以後加入了對 Node.js 、Clojure 、Scala 、Python 和 Java 等語言的支持。Heroku 的基礎服務是免費的。

下面咱們使用 Heroku 部署咱們的博客。

註冊

https://www.heroku.com/

建立一個應用

註冊成功後,就進入了控制面板頁面,如圖所示:

點擊 Create a new app ,填寫獨一無二的應用名稱後,點擊 creat app 即建立成功,而後點擊Finish up 。

此時跳轉到控制面板頁,而且能夠看到咱們建立的應用了。咱們經過 應用名稱.herokuapp.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內容了.

相關文章
相關標籤/搜索