今天研究了 2小時解決了 免費雲空間的問題php
這篇文章的主角就是Heroku,他的基本服務都是免費的,而且是無限流量,無限空間,最大的優勢就是支持git,支持一鍵部署,這裏鄙視下百度雲空間,全部服務都是收費的,在中國這麼窮B的國度,不知道此策略能獲得你們承認麼?html
進入主題node
Heroku 不少人不知道,由於這個平臺是主推Rails服務的,可是它也是完美的能兼容如下幾種平臺git
Rubygithub
PHPweb
NODE.JS數據庫
HTMLjson
可是這個平臺爲何是免費呢?由於它最主要的利潤來源是數據庫服務服務器
這個是一個服務商的收費標準,很貴吧?app
Heroku 是一個主流的 PaaS 提供商,在開發人員中廣受歡迎。這個服務圍繞着基於 Git 的工做流設計,假如你熟悉 Git ,那部署就十分簡單。這個服務本來是爲託管 Ruby 應用程序而設計的,但 Heroku 以後加入了對 Node.js 、Clojure 、Scala 、Python 和 Java 等語言的支持。Heroku 的基礎服務是免費的。
下面咱們使用 Heroku 部署咱們的博客。
註冊成功後,就進入了控制面板頁面,如圖所示:
點擊 Create a new app ,填寫獨一無二的應用名稱後,點擊 creat app 即建立成功,而後點擊Finish up 。
此時跳轉到控制面板頁,而且能夠看到咱們建立的應用了。咱們經過 應用名稱.herokuapp.com便可訪問咱們的應用主頁。如圖所示:
Heroku 官方提供了 Heroku Toolbelt 工具更方便地部署和管理應用。它包含三個部分:
Heroku Toolbelt 下載地址:https://toolbelt.heroku.com/ 。
注意:假如你的電腦上已經安裝了 Git ,那麼在安裝的時候選擇 Custom Installation 並去掉安裝 Git 的選項,不然選擇 Full Installation 。
安裝成功後,打開 Git Bash ,輸入 heroku login
,而後輸入在 Heroku 註冊的賬號和密碼進行登陸。Git 會檢測是否有 SSH 密鑰,若是有,則使用此密鑰並上傳,若是沒有,則建立一個密鑰並上傳。
Tips:SSH 密鑰一般用於授予用戶訪問服務器的權限。可將它們用於某些配置中,以便無需密碼便可訪問服務器。許多 PaaS 提供商都使用了此功能。
在工程的根目錄下新建一個 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內容了.