每一個可以努力的日子,都是一份厚禮。
Redhat OpenShift 雲計算平台試用小記
OpenShift 是 redhat 公司推出的一個 PaaS 雲計算應用平台,開發者可在上面構建、測試、部署和運行應用程序,它支持 Java, Ruby, Node.js, Python, PHP, Perl 等眾多語言環境和開發框架,並且支持 MySQL, PostgreSQL, MongoDB 等數據庫服務。最重要的是,它的整個體系都是開源的,這和 IaaS 開源雲計算軟件 OpenStack 一樣,對於擁有硬件資源而希望部署雲的服務提供商來說很有研究價值。
一、再談雲計算
雲計算這個名詞已經被炒翻了天,但到底什麼是雲,很多人其實仍在雲里霧裡。根據 NIST 的權威定義,雲的服務模型,分為以下三種:
- Software as a Service (SaaS):軟件即服務模型,用戶直接使用構建在雲端的軟件。例如,Google Docs, Salesforce.com,甚至是 Web Email 也是雲計算,因為我們拋棄了客戶端。
- Platform as a Service (PaaS):平台即服務模型,用戶使用雲平台所支持的語言和工具,開發應用並部署在雲平台。例如,Google App Engine, Force.com,國內的 Sina App Engine
- Infrastructure as a Service (IaaS):基礎架構即服務模型,提供處理器、存儲、網絡等(虛擬)硬件資源給用戶,用戶可任意安裝軟件和開發環境,包括安裝操作系統。例如,Amazon EC2, Joyent,國內的阿里雲
可見,三種模型從應用到平台再到架構,越來越底層,用戶得到的可操作性和靈活性也越來越大。
Red Hat 稱,IaaS 和 PaaS 的特定實現既不應該是供應商鎖定,也不應該受控於供應商。不同的架構阻礙了不同雲之間的數據遷移。為了讓雲計算保持開放和活力,雲端的實現應該走向真正的開放,不僅僅是在許可證上,而是也應該在管理方式上。OpenShift 將在這方面起一個標杆作用。反觀某浪的 app engine,限制本地 I/O 讀寫和很多函數,要求開發者使用該平台的特有版本,這樣一個封閉的環境實在是讓人吐槽無力。
二、開通 OpenShift 服務
目前在 Red Hat 的 OpenShift 上可以免費創建三個 app,提供 1.5G 內存和 3G 存儲空間。
1. 使用 Web 方式
(1)註冊
通過註冊鏈接進行登記,這個很簡單,不多說。
(2)新增應用
註冊並 Email 激活完成後,登錄管理後台,添加你的第一個應用。
這時 PaaS 的優勢就開始顯現了,它提供了各種語言的平台給你選擇,包括 Ruby, Python, PHP 以及當前熱門的 Node.js 等等,與此同時還提供一些開發應用框架的一鍵安裝,比如 ROR, WordPress 等等。
選好自己的應用類型後,會進入配置頁面,需要給你的應用添加一個二級域名。二級域名由“應用名”和“命名空間” 兩部分組成,“命名空間”是和帳號綁定的,以後新增其他應用也會用到,不能再更改(已經可以更改了,不過所有應用的URL都會改變,成本很大),需要慎重選擇。另外,應用創建後還可以綁定自己的頂級域名。
這樣,應用就創建成功了。接下來就是向服務器上傳自己代碼。OpenShift 使用 Git 來部署代碼,你需要熟悉 Git 命令行的操作。另外值得一提的是,如果你按照上面 Web 的方式創建了第一個應用,在部署代碼前你需要設置一個 RSA 密鑰。
這和 Amazon AWS 平台恰恰相反,AWS 會在雲端生成密鑰對,並將私鑰下載給你。而這裡是讓你自己生成公鑰和私鑰,並將公鑰上傳給 OpenShift。雖然用戶自己生成密鑰看上去更安全,但無形中也增加了用戶的使用壁壘。下面就是在 Linux 下使用 openssl 命令生成密鑰對的方法
$ openssl genrsa -out privatekey.pem 1024 $ openssl rsa -in privatekey.pem -out publickey.pem -pubout |
用文本編輯器打開 publickey.pem,將裡面的字符串粘貼到上圖中的網頁文本框中提交即可。
2. 使用命令行方式
如果使用命令行方式,則會自動創建密鑰對,比較方便。參考“如何開始”指南,Windows 用戶需要安裝 cygwin 模擬 Linux 環境,包括 openssh、ruby、make、gcc、git 等等。考慮到 Ubuntu 用戶比較多一些,下面是 Ubuntu 的操作流程
# 安裝rhc工具 $ sudo apt-get install git ruby rubygems $ su -c 'gem install rhc' # 創建命名空間(慎重選擇名字) $ rhc domain create -n mydomain -l rhlogin Password: (type... type... type...) # 創建應用 $ rhc app create -a myapp -t php-5.3 Password: (type... type... type...) # 部署代碼 $ cd myapp $ vim php/index.php (Make a change... :wq) $ git commit -a -m "My first change" $ git push |
3. 添加模塊
一般應用都需要使用數據庫以及其他輔助工具,OpenShift 也提供這些工具,十分方便。在網頁管理後台中點擊“My Applications”進入應用,選擇“Add Cartridges”就可以看到有很多數據庫可供使用,包括 MySQL, PostgreSQL 以及 NoSQL 數據庫 MongoDB 等等。
或者使用命令行工具添加模塊
$ rhc app cartridge add -a myapp -c mysql-5.1 |
三、搭建 wordpress 博客
現在 OpenShift 為了簡化應用創建,提供了 WordPress 等常用軟件的一鍵搭建,在上面“新增應用”的截圖中都可以看到。不過為了熟悉代碼部署的方式,我們還是使用 rhc 命令行把新建 wordpress 的整個流程走一遍,這也可以作為搭建其他語言類型應用的參考。
# 新建一個名為wordpress 的 php-5.3 應用 $ rhc app create -a wordpress -t php-5.3 # 添加 mysql 支持 $ rhc app cartridge add -a wordpress -c mysql-5.1 # 下載 wordpress 代碼到本地 $ cd wordpress $ git remote add upstream -m master git://github.com/openshift/wordpress-example.git $ git pull -s recursive -X theirs upstream master # 上傳代碼到 openshift 服務器 $ git push |
完成。訪問你的 wordpress:
http://wordpress-$yournamespace.rhcloud.com
默認帳號為admin/OpenShiftAdmin
如果要綁定自己的域名,可以用以下命令:
$ rhc-ctl-app -a wordpress -c add-alias --alias blog.lovelucy.info |
然後添加 blog.lovelucy.info 域名的 CNAME 到 wordpress-$yournamespace.rhcloud.com
需要注意的是, git push 會把本地倉庫推送到遠端的代碼倉庫里,同時還會重寫遠端應用目錄下的 repo 目錄(就是 www 服務的根目錄)。而這個過程似乎是覆蓋式的重寫,如果裡面有不在倉庫里的文件或目錄,之後也會丟失。在 WordPress 管理頁面里更新插件安裝中文包,然後經過 push 後這些都沒了。這也意味着,這個博客的更新,主題安裝等都需要先在本地搞好、提交到本地的 git 倉庫之後,通過 push 上去,才算可以使用,直接在 WordPress 管理界面更新、安裝主題等,會被以後的 push 滅掉。或者可以先 pull 再 push。關於 git 的使用,我也才剛剛開始學習。
經過測試,發現服務器 I/O 性能十分不錯。Ping 了一下,歐洲和美國的用戶訪問都很快,只不過 Red Hat 可能沒有在亞洲部署服務器,在中國訪問網站連接速度不是很理想。
四、總結
根據 NIST 的定義,雲計算服務至少應該包含如下幾個特徵:
- On demand 按需服務。用戶可以自己定義自己需要多少資源,靈活配置,不必為用不到的資源付費。例如某個網站應對高訪問量只需要更多的 CPU 和 內存,而硬盤存儲則不必很多。
- Broad network access 可訪問性。不論你是使用電腦、筆記本、手機,不論你使用什麼網絡,只要你連接上了 Internet,你就可以獲取到你的計算資源。所以說雲是瘦客戶端的。
- Resource pooling 資源池。雲的提供商應當給用戶提供計算、存儲、網絡等資源,用戶按需索取,而不必理會底層細節。例如雲服務供應商的服務器可能遍布各大數據中心,但對用戶來說,他看到的只是 CPU 內存等資源,他不需要知道自己所使用的資源到底在哪一台物理設備上,也就不會受限於這些因素。
- Rapid elasticity 快速伸縮。用戶可以沒有限制地對自己的資源進行調整,平滑過渡,立即生效。例如給自己的服務器增加計算能力,或者獲取更多的網絡帶寬,指令發出後自動執行。
- Measured service 服務可測量。雲系統應該可以監控、報告自身資源的使用情況,甚至自動進行調整優化,無需人工干預。另外就是可以根據使用量來進行計費。
前兩年的時候,雲計算、物聯網等概念炒作得十分火熱,國內卻基本沒有看到任何實質的產品出現。政府跟風起鬨,投入了很多,基本上都是被偽裝為磚家的商人給騙了,資金都被挪去搞了房地產。現在,物聯網基本上也沒怎麼提了,不過整個數據中心的技術卻是已經有了實質性的進展,很多主流互聯網公司都在自己建立數據中心。海量存儲、MapReduce 並行計算,虛擬化等等技術不斷在進步和創新。在借鑒國外先行者成功的基礎上,國內很多互聯網公司也有了不少積累。在移動互聯網時代,由於終端設備的計算能力限制,雲計算會有非常大的發展前景。
參考鏈接:
在OpenShift中部署ROR應用
在Red Hat OpenShift平台部署Django應用
OpenShift 各種語言框架的上手指南
這篇文章由lovelucy於2012-06-10 18:15發表在雲計算。你可以訂閱RSS 2.0 也可以發表評論或引用到你的網站。除特殊說明外文章均為本人原創,並遵從署名-非商業性使用-相同方式共享創作協議,轉載或使用請註明作者和來源,尊重知識分享。 |
Chrome for iOS 33.0.1750.21 iPhone iPhone OS 6_0_1 like Mac OS X) AppleWebKit 大約10年前
服務器上新建的文件不會自己加進git版本管理,所以也pull不回來。。。
可能要先用ssh把文件提交到版本庫才能pull回來(不知道能不能這樣)
Google Chrome 37.0.2062.120 Linux 大約9年前
對啊,到底能不能這樣,求解啊
Google Chrome 37.0.2062.120 Linux 大約9年前
怎麼提交到版本庫?
Google Chrome 21.0.1180.92 Windows 7 大約11年前
按照樓主的方法終於解決了困擾幾個星期的問題了,此舉甚是用於OpenShift綁定域名後,強制HTTP轉HTTPS,感謝樓主~
Mozilla Firefox 33.0 Windows 7 大約9年前
遇到這個問題了,怎麼解決的 🙄
Mozilla Firefox 23.0 Windows XP 大約11年前
已和諧。
Google Chrome 26.0.1410.43 Linux 大約11年前
什麼已和諧?
Google Chrome 26.0.1410.43 Windows 7 大約11年前
不知道Openshift的限制是什麼?
Google Chrome 26.0.1410.43 Windows 7 大約11年前
基本沒有限制,特別是不限制本地讀寫。
目前免費版最多使用 3 個 Gear,也就是可用內存和計算能力有上限。另外就是在亞洲沒有節點,從中國訪問略慢。
Google Chrome 26.0.1410.43 Linux 大約11年前
我現在用的是sina的sae。不知道redhat花了這麼大的血本,免費的空間能用多久?如果不是開發者,sae沒有啥免費的雲豆
Google Chrome 26.0.1410.43 Windows 7 大約11年前
redhat 支持多種語言平台,是標準的 PaaS,新浪目前好像只支持 PHP, Java, Python,各取所需吧。
我感覺 SAE 才叫下血本,據說他們的開發團隊已經都離開做別的項目了。盈利有壓力啊~
Google Chrome 21.0.1180.89 Windows 7 大約11年前
我在網頁創建的的第一個應用,然後在windows上cmd的命令行上進行git setup,自動幫我上傳了key,可是我在這個cmd上進行git push的時候一直報錯,Permission denied (publickey,gssapi-keyex,gssapi-with-mic).fatal: Could not read from remote repository.你知道是什麼原因嗎
Google Chrome 23.0.1271.97 Linux 大約11年前
應該沒有“自動上傳key”這個動作吧。。
你需要自己生成key的,然後把公鑰和私鑰放在 C:\Users\username\.ssh\ 下面,id_rsa.pub和id_rsa
然後在 OpenShift 的網站後台把公鑰的內容填上去。
Google Chrome 21.0.1180.89 Windows 7 大約11年前
現在openshift提供了自動安裝wordpress的版本,所以嗎,覺得如果自己不push的話,完全可以在server上安裝主題什麼的,你說的在本地更新的那個太麻煩了
Google Chrome 23.0.1271.97 Windows 7 大約11年前
自己在本地保存一份還是有必要的。萬一哪一天雲掛掉了還有備份 😛
Mozilla Firefox 17.0 Windows 7 大約11年前
我把我的openshift網站更換成自己的頂級域名。用https鏈接時會有安全證書無效的問題。修改.htaccess文件重定向鏈接,可是瀏覽器是先判斷證書再重定向,也就是說修改.htaccess文件並不能解決安全證書無效的問題。請問有什麼辦法可以解決安全證書無效的問題?
Google Chrome 23.0.1271.95 Windows 7 大約11年前
這真的是瀏覽器的設定。只要你的訪客一直是用http訪問,普通人不會看到那個安全證書警告的。
Mozilla Firefox 17.0 Windows 7 大約11年前
聽了您的話,我放心多了。可是,如果有人就是刻意要使用https鏈接訪問呢?不排除有人這麼做。
Opera 11.64 Windows 7 大約11年前
換用其它瀏覽器
Google Chrome 23.0.1271.95 Windows 7 大約11年前
你是第一個用 Opera 在我博客留言的用戶 😈
Google Chrome 22.0.1229.94 Windows 7 大約11年前
openshift的空間可不可以關閉支持https的?
Google Chrome 22.0.1229.94 Windows 7 大約11年前
用.htaccess重定向所有https到http
Google Chrome 22.0.1229.94 Windows 7 大約11年前
這個代碼好像沒用?
Google Chrome 23.0.1271.97 Linux 大約11年前
保存為.htaccess文件,放在根目錄
Google Chrome 22.0.1229.94 Windows 7 大約11年前
我的谷歌瀏覽器清理緩存了還是強制用https,哎
Google Chrome 22.0.1229.94 Windows 7 大約11年前
去 chrome://net-internals 進入 HSTS標籤,然後刪掉你的 domain 再試試
Mozilla Firefox 13.0 Windows 7 大約12年前
一直沒有很了解雲計算這個概念, 現在總算小有所獲。但還有一個問題,一直困擾心中。 雲 和 網絡速度 是否掛鈎?
Mozilla Firefox 14.0.1 Windows 7 大約12年前
“命名空間”是和帳號綁定的,以後新增其他應用也會用到,不能再更改
這個是可以更改的
Google Chrome 21.0.1180.60 Windows 7 大約12年前
登錄去看了一下,確實可以更改了。項目進化速度真快。
Mozilla Firefox 14.0.1 Windows 7 大約12年前
試用了一下這個服務,訪問速度挺快的,但是發現一個問題,就是在Firefox下面進入項目主頁的時候會強制使用HTTPS鏈接導致訪問出錯。
不知道博主有沒有遇到這個問題?
Google Chrome 21.0.1180.60 Windows 7 大約12年前
的確,Firefox 和 Chrome 如果檢測到站點支持 https,都會默認使用 https 去訪問。參考官方的討論,清理掉瀏覽器緩存,然後強制指定 URL 為 http 訪問一次即可。
Mozilla Firefox 14.0.1 Windows 7 大約12年前
看完官方的討論,清了一次緩存,特別開了一個超級乾淨的Chrome(Portable),打開一樣的結果……官方也沒有給出一個解決方法什麼的真頭痛…… 😥
現在每天看着Firefox死機好幾次我都在想要不要換成Chrome了……
Google Chrome 21.0.1180.60 Windows 7 大約12年前
Google 出品,必屬精品,換吧