藍色巨人 (IBM) 近年來積極發展雲端服務,除了於 2013 年收購 IaaS ( Infrastructure as a Service) 的 SoftLayer 外,今年更推出 Bluemix PaaS (Platform-as-a-Service) 的雲端平台。

IBM Bluemix - Platform-as-a-Service
IBM Bluemix – Platform-as-a-Service

Bluemix 簡介

根據官方文件,IBM Bluemix 硬件方面是建基於自家出品 SoftLayer IaaS 平台,至於平台架構則是建基於 Cloud Foundry,故此熟悉 Cloud Foundry 的朋友,於操作和管理 Bluemix 會大有親切的感覺。
Bluemix 的設計和定位為 PaaS ( Platform-as-a-Service ) 的雲端服務平台,其跟 IaaS ( Infrastructure-as-a-Service ) 如 SoftLayer 、 Amazon EC2 等的主要分別在於;

IaaS 是提供整台 VM Server 給用家使用和管理,意則用家要處理 VM Server 上的作業系統 ( OS ) 和軟件 ( Software ) 的安裝、設置和管理,用家甚至可以控制 VM Server 的資源分配如 Storage 、Memory 及 IP 等,VM Server 提供甚麼服務,怎樣提供完完全全掌握於用家手中,其好處是 IaaS 給予用家極大的自由和靈活性 ( Flexibility ) ,但壞處則是跟傳統 On-premises server 一般,您得要找人來管理和設置 VM Server。

PaaS 則是提供一個運行 ( Runtime ) 平台給用家,例如用家需要運行 Java 應用,PaaS 就會提供 ( Provision ) 一個 Java Runtime 給用家去部署 ( Deploy );如用家需要運行 Node.js 應用,就可以向 PaaS 要求一個 Node.js Runtime,而當中用家並不太須要管理 Server 上的資源和設置,也不須要安裝及設定軟件,這對於只懂編程的開發人員或不太懂架設服務伺服器的 StartUps 來說,使用上來會有很大的便利,亦加速了 Time-to-market。當然,壞處就是 Server 的靈活性及專用化 (Customization)則比 IaaS 大大降低了,例如如果那個 PaaS 服務供應商沒有提供 Ruby Runtime 或沒有提供 CouchDB 服務,您就不能自行架起相關的服務,只好期盼它將來會提供相關的 Runtime 或服務或轉到別家的服務供應商。

由於無須花太多的人力資源來管理 Server,PaaS 的出現對於自由工作 ( Freelance ) 的開發人員或得小貓三、四隻的 StartUps 公司來說,不但提昇了工作效率及生產力,更由於 PaaS 亦是 Pay-as-you-go 的收費模式,起始成本 ( Initial Cost) 亦大大降低,我可以預期利用 PaaS 的 Freelancer 或 StartUps 數量將會大大增加,甚至這將會是業界中一種十分普遍營運模式。

IBM 就是看準這個趨勢,今年推出了 Bluemix PaaS 平台,及早於市場佔一席位,試想想現在有很多家受歡迎的網站或手機應用,如 Facebook 、Whatsapp、Angry Bird等,不是本來都是一家寂寂無名的 StartUp?現在又何嘗不是坐擁數以億計的用家的 IT 公司?這個商業模式大概有點像風險創投資金 ( Venture Capital ) 一樣,IBM 投放 1,000 家 StartUp 中,只要有一家能像 Facebook 、Whatsapp 那般做得成功,將來何嘗沒有大客?

Bluemix 的免費套餐

現在登記及加入 Bluemix ,可享有 30 天免費任用,可跑共 2GB 記憶體的 Runtime 應用和共十個服務 (如數據庫、Session Cache 、Server Monitoring 等)。30天後,就必須登記信用咭才可繼續使用,並根據您所選擇服務計劃和使用量來收費。

真失望!只有30 天免費?

其實也不盡然,就算 30 天過後,Bluemix 仍會提供一個免費的套餐 ( Free-tier )。只要一個月內不用超過 375 GB-hours 的 Runtime 就不用收費。 (即足夠應付一個連續執行一個佔用記憶體 512MB 一個月的 Runtime)

Free runtime GB-hours
Free runtime GB-hours

除了 Runtime 之外,Bluemix 亦有一大堆服務是有免費套餐或完全不用收費的。例如MySQL、PostgreSQL 、MongoDB 數據庫是不用收費,低用量的 Mobile Push 和 Mobile Data 都不用收費。所以絕對不用怕您不能用 Bluemix 來試驗和開發您心目中的應用程式。收費及免費套餐的詳情可參照此連結

執行 PHP 應用

要講 Bluemix 的功能,恐怕寫 10 篇 Blogs 也不能盡說。基本上,它的線上文件對每一個 Runtime 和服務都有詳盡的解釋,而且亦是根據 Cloud Foundry 架構來建立,自行研究摸索應該不是甚麼難事。 IBM 亦於這平台上附設了很多 Starter Apps 作為 Demo 之用,大家可以 Deploy 這些 Starter Apps 來測試 Bluemix 的使用方法。它亦增設一些懶人包 (Boilerplates) ,大家一按選擇就自動部署整個 Starter Apps 的 Runtime 及所需要的 dependency services,十分方便。

Boilerplates for starter apps
Boilerplates for starter apps

但官方提供的 Runtime 和 Boilerplates 只提供了 Java 、Node.js 及 Ruby 的支援,那麼廣大的 PHP 應用怎麼辦?是不是就不能利用 Bluemix 平台來開發及部署呢?

答案當然是"不"。幸好 Bluemix 是按照 Cloud Foundry 的架構來建立的,坊間有許多有心人士建立了很多不同的 Community buildpack,大都可以於 Bluemix 上執行,而當中亦不乏能夠執行 PHP 應用的 Buildpack。其中以下的兩個 Community PHP buildpack 的 git respository locations 就可以讓 Bluemix 建立出一個 PHP Runtime 來執行 PHP 應用。

https://github.com/cloudfoundry/cf-buildpack-php.git
https://github.com/dmikusa-pivotal/cf-php-build-pack.git
Bring your buildpack runtime 可以用來執行 PHP 應用
Bring your buildpack runtime 可以用來執行 PHP 應用

以下的步驟將會展示如何部署一個 WordPress PHP 應用:

  1. 首先,當然是先登記及登入 Bluemix。
  2. 然後於 Catalog 頁面中選擇 “Bring Your Buildpack Community” Runtime

    Catalog - Runtimes
    Catalog – Runtimes
  3. 然後會指示去下載一個叫 cf 的 utility 程式,請根據指示去完成下載及安裝。

    下載及安裝 cf utility
    下載及安裝 cf utility
  4. 然後開啓 Windows cmd prompt ,用 cf 來連接及登入 Bluemix (如下)
    $ cf api https://api.ng.bluemix.net
    Setting api endpoint to https://api.ng.bluemix.net...
    OKAPI endpoint: https://api.ng.bluemix.net (API version: 2.4.0)
    Not logged in. Use 'cf login' to log in.
    $ cf login
    API endpoint: https://api.ng.bluemix.net
    Email> <your bluemix registered email>
    Password> <your password>
    Authenticating...
    OK
    Targeted org [email protected]
    Targeted space dev
    
    API endpoint: https://api.ng.bluemix.net (API version: 2.4.0)
    User: [email protected]
    Org: [email protected]
    Space: dev
  5. 完成以上的步驟,您的 cf utility 程序就已經連結上您的 Bluemix 賬戶。接下來,就得要到 wordpress.org 去下載最新的 WordPress PHP 應用。
  6. 把 WordPress 解壓後,請利用 cmd prompt ,Change Directory (cd) 到 WordPress 解壓後的根目錄。(即有 index.php 的那一個目錄)
  7. 利用 cf utility 把 WordPress 利用 PHP Buildpack 推 ( push ) 上 Bluemix,指令如下:(註:newwp 是您的應用名稱,請更改成自己喜歡的名稱)
    $> cf push newwp -b https://github.com/cloudfoundry/cf-buildpack-php.git -m 512M 
    Creating app newwp in org [email protected] / space dev as [email protected]
    OK
    
    Creating route newwp.mybluemix.com...
    OK
    
    Binding newwp.mybluemix.com to newwp...
    OK
    
    Uploading newwp...
    Uploading app files from: C:\wordpress-3.9.2\wordpress
    Uploading 9.9M, 1205 files
    OK
    
    Starting app newwp in org [email protected] / space dev as [email protected]
    OK
    -----> Downloaded app package (6.1M)
     Cloning into '/tmp/buildpacks/cf-buildpack-php'...
    Checking out files: 6% (452/6863)
    Checking out files: 7% (481/6863)
    .........
    Checking out files: 99% (6795/6863)
    Checking out files: 100% (6863/6863), done.
     Submodule 'buildpack-packager' (https://github.com/cf-buildpacks/buildpack-packager.git) registered for path 'buildpack-packager'
    Submodule 'compile-extensions' (https://github.com/cf-buildpacks/compile-extensions.git) registered for path 'compile-extensions'
    Cloning into 'buildpack-packager'...
    Submodule path 'buildpack-packager': checked out '237ac62a3f05423474e04b6724e33726631dde8f'
    Cloning into 'compile-extensions'...
    Submodule path 'compile-extensions': checked out '134c97d7fb9430dcb088d8b96301e5e5b7a40089'
     ! WARNING: No composer.json found.
     Using index.php to declare PHP applications is considered legacy
     functionality and may lead to unexpected behavior.
     See https://devcenter.heroku.com/categories/php
    -----> Setting up runtime environment...
     - PHP 5.5.12
     - Apache 2.4.9
     - Nginx 1.4.6
    -----> Installing PHP extensions:
     - opcache (automatic; bundled, using 'ext-opcache.ini')
    -----> Installing dependencies...
     Composer version 1e27ff5e22df81e3cd0cd36e5fdd4a3c5a031f4a 2014-08-11 15:46:48
     Loading composer repositories with package information
     Installing dependencies
     Nothing to install or update
     Generating optimized autoload files
    -----> Building runtime environment...
     NOTICE: No Procfile, defaulting to 'web: vendor/bin/heroku-php-apache2'
    -----> Uploading droplet (73M)
    
    1 of 1 instances running
    
    App started
    
    Showing health and status for app newwp in org [email protected] / space dev
     as [email protected]
    OK
    
    requested state: started
    instances: 1/1
    usage: 1G x 1 instances
    urls: newwp.mybluemix.com
    
     state since cpu memory disk
    #0 running 2014-08-22 03:35:32 PM 0.0% 28.6M of 1G 259.6M of 1G
  8. 完成後,返回 Bluemix Dashboard,您應該發現一個以您命名的 WordPress PHP 應用已經運行當中。

    Bluemix Dashboard 上的 PHP 應用
    Bluemix Dashboard 上的 PHP 應用
  9. 這個應用的 URL 會暫時定為 <your_app_name>.mybluemix.net,往後我會教導大家怎樣把它轉成自己的専屬網域。我們把 Memory Usage 保持於 512MB,就可以確保即使過了試用期後,Free tier 的 Runtime GB-Hours 都足夠我們運行 24×7 而不用收費。
  10. 由於 WordPress 是需要 MySQL 數據庫,所以我們要為這個 PHP Runtime 加設 MySQL 服務。方法就是 Click 入 Application,然後按 “ADD A SERVICE”。

    為 Runtime 加入新的服務
    為 Runtime 加入新的服務
  11. 現時 Bluemix 提供的 MySQL 服務共有兩款 (免費的),各有優劣,我們這裡會選用 Community 版本的 MySQL。
    Bluemix 提供的 MySQL 服務
    Bluemix 提供的 MySQL 服務

    加入 Community MySQL 服務
    加入 Community MySQL 服務
  12. 加入後,Application 會要求重新啟動,之後您會發現 MySQL 服務已經加入到您的 PHP Runtime 裡,按下 “Show Credentials”,您可以找到連接 MySQL 數據庫的名稱、IP、連接埠、用戶名和密碼等必要資料。

    MySQL Credentials
    MySQL Credentials
  13. 接下來的功夫就簡單了,就是設定您的 PHP 應用去連接 MySQL 數據庫。

    設定 WordPress MySQL
    設定 WordPress MySQL
  14. 大功告成!現在一個全新的 WordPress 就於 http://newwp.mybluemix.net/ 運行中。

設定專屬的網域 ( Domain )

大家於 Bluemix 上的 Application 都是預設運行於 mybluemix.net 這個網域 ( Domain ) 上,如果大家好像我一般都擁有自己的 Domain 而又想套用於 Bluemix 上,可以依以下的方法來設置:

  1.  於 Bluemix 主畫面,按下自己右上方的賬戶電郵名稱,然後按下 “Manage Organization”。

    Manage Organization
    Manage Organization
  2. 於 Manage Organization – Domain 版面上,可以加入自己的 Domain。

    加入自己的專屬 Domain
    加入自己的專屬 Domain
  3. 加入自己的 Domain 後,返回 Application ,然後按上右上方齒輪 Icon 的圖示並選擇 “Edit Routes”。

    編輯路徑
    編輯路徑
  4. 在這裡,您應該可以見到早前加入的 Domain ,您可以在這裡為自己的 Application 加入新的路徑 ( Route ),如 bluemix.itarchitect.hk。(註:原本的 <your_app_name>.mybluemix.net 路徑請不要刪除)

    加入新的路徑 (Route)
    加入新的路徑 (Route)
  5. 完成後,您得要到您的 DNS server 中,加入一個 CNAME Record 把您的剛加上的路徑 (即 bluemix.itarchitect.hk) 指到 Bluemix預設的 hostname (即 newwp.mybluemix.net)。
  6. 等待 DNS Server 完成同步後後,您應該可以用您專屬的網堿網址來訪問您於 Bluemix 上的應用。
如何在 Bluemix 上執行 PHP 應用
標籤:                    

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *