CMSimple Drupal Yii 內容管理系統三方案 - 提升台灣中小企業競爭力

目前位置:   首頁 > Welcome to CMSimple > 2013 Web trends > Web remote site

Web remote site

網際內容管理的天涯端

1. Openshift 篇

基本概念

Openshift 網站: https://openshift.redhat.com/

使用條件: 小流量內容管理網站可以免費使用

小流量內容管理網站的定義:

    使用 3 個免費的 Gears (若每一個應用程式需要一個 Gear, 則可以建立 3 個網站應用程式)

    沒有額外儲存空間

    使用共享式而非獨享式的 SSL

所謂 Gear, 就是一種程式物件容器, 在 Openshift 環境中也可稱為"卡匣" (cartridge), 每一個卡匣在主機中可分配到特定的記憶體與硬碟空間. 不同的軟體程式物件容器在執行時由於需要不同的主機記憶體與硬碟空間, 因此當使用者選擇某一特定程式時, 就會需要特定大小的記憶體與硬碟儲存空間, 而 Openshift 平台上免費的帳號可以使用 3 個單位的 Gears.

根據這裡的說明, 每一個 Openshift 中的免費小流量內容管理網站可以使用主機記憶體 512 MB, 1GB 的硬碟.

登記帳號

進入 Openshift 網站後, 點選 Sign up, it's free 的連結, 接著填寫電子郵箱, 自選密碼, 以及防止垃圾程式灌站的確認字碼, 就可以在所填寫的電子郵箱中, 收到一封"Confirm your Red Hat Openshift account"信件, 進入點選確認連結, 並且同意使用規範, 就可以開始在 Openshift 平台上建立網際內容管理網站.

以 2013 年 2 月的時間點而言, Openshift 使用規範中的重點為:

    免費登錄的帳號以各項服務的預覽 (preview) 為主, 而不是正式運作 (production) 用的網站

    申請者必須年滿 18 歲

    未能遵守使用授權者, 經過確認通知後並未改善者, 兩天內就會被停用

    網站上的資料必須自行備份

設定 SSH 連線用公私鑰

    為了能在網際網路中安全傳送資料, 使用者必須建立與選用密碼 (以及區分身分用的電子郵箱) 對應的公鑰與私鑰 (配對產生, 每一公鑰都有一對應的私鑰), 公鑰可以與他人分享, 目的是讓他人在傳送資料時, 利用特定的公鑰進行資料編碼, 一旦傳送給此公鑰的所有者後, 此一公鑰的擁有者就可以透過與公鑰配對的個人私鑰進行解碼, 沒有對應私鑰的用戶, 理論上是無法輕易進行內容解碼, 以便達到數位內容傳輸的安全與私密性.

    Openshift 所提供的 rhc 客戶端應用程式, 可以協助使用者建立公鑰與私鑰, 具體的指令為 rhc setup, 但是必須要先安裝以 Ruby 編寫的 rhc 客戶端工具程式, 基本的步驟為:

        安裝 Ruby 程式執行環境.

            假如是在 Windows 環境, 可以利用 http://rubyinstaller.org/ 所提供的安裝程式, 安裝時必須確認將 Ruby 執行的路徑加到系統路徑, 以便能在任何系統的目錄下執行 Ruby 解譯器.

            完成 Ruby 解譯程式安裝後, 就可以在命令列中使用 Ruby 的 Gem 工具程式, 並且利用

            gem install rhc

            安裝 rhc 工具套件, 假如要更新 rhc 套件, 則使用 gem update rhc

        rhc 環境設定

            一旦如上述, 完成 SSH 公私鑰的建立 (在 Windows 公私鑰檔案會存在個人工作空間中的 .ssh 目錄中 (例如: C:\Documents and Settings\yourloginaccount\.ssh, 其中 yourloginaccount為使用者登入的帳號), 公鑰檔案名稱為 id_rsa.pub, 而私鑰檔案名稱則為 id_rsa, 當使用者執行 rhc setup 過程, Red Hat client 允許使用者使用既有的公私鑰或者自動幫使用者建立所需的公私鑰, 並且在設定過程, 將與 Openshift 相關的應用程式連線資料, 存在 C:\Documents and Settings\yourloginaccount\.openshift 目錄中的 express.conf 檔案內. 其中包含 Openshift 連線主機與登錄帳號等資料.

            # The OpenShift server to connect to
            libra_server="openshift.redhat.com"
 
            # Your OpenShift login name
            default_rhlogin="youraccount@your.email.domain"
 
    假如使用者在 Openshift 擁有一個以上的帳號, 則在使用 rhc setup 進行相關命令列登入操作之前, 必須要先將 express.conf 中的 default_rhlogin 內容改成要登入的對應電子郵箱帳號, 或將 default_rhlogin 該行蓋掉, 以便在執行 rhc setup 時自行輸入所要登入的電子郵件帳號, 否則 rhc setup 就會自動讀取 express.conf 中的帳號.
 
    在同一台電腦中登入不同的 Openshift 帳號後, 即便先前已經更改 express.conf, 但是一旦完成 rhc setup 的登入動作, rhc 又會利用登入的帳號改寫 express.conf 的內容, 因此若經常在兩個以上的 openshift 帳號中切換, 就必須在執行 rhc setup 之前檢查 express.conf 中的內容, 確認與要登入 openshift 管理的帳號後, 再執行 rhc setup 的動作.
 
    安裝 Git 客戶端工具程式
 
        由 http://msysgit.github.com/ 下載對應的程式進行安裝, 並且確認將 git 的執行目錄加入系統搜尋路徑中.
 
        上述 Ruby 解譯環境與 Git 客戶端工具, 在 Windows 環境中, 都可以設定成可攜模式, 只要在開啟命令列時確定指到 rhc 與 git 等命令的執行路徑即可, 至於 .ssh 與 .openshift 則通常存放在系統帳號目錄下, 若希望達到可攜特性, 可能要再加以設定.

建立應用程式

    選擇應用類別, 可選擇的應用程式包括最新的 JBoss 應用, PHP (包括 Zend 或 Cakephp), Python (2.6) 與 Django, Ruby (包括 ROR), Perl 與 Node.js 等, 可以說涵蓋了目前網際內容管理系統的各種流行技術 (幾乎讓人覺得地球上根本沒有微軟這個公司:-)

    為了讓 CMSimple XH 可以在 Openshift 平台上運作, 這裡我們選擇了 PHP 5.3 的應用卡匣, 然後選擇應用程式名稱與命名空間, 以便在 rhcloud.com 之前, 擁有一個獨一無二的網際符號名稱, 為了讓此一試用容易記憶, 我們選擇 cmsimple-yourdomain.rhcloud.com 作為連線的網址, 由於命名空間必須要與使用帳號唯一對應, 已經被選走的命名空間就無法進行登記了, 也就是說 yourdomain-rhcloud.com 若已經被登記使用, 其他用戶已經無法再登記這個命名空間.

    應用程式的原始碼, 可以先套用 rhcloud 內建的 default 網頁, 也可以提供 URL 直接連線到某一 GIT 的程式倉儲 (repository), 直接 fork 特定的 PHP 程式源碼.

    這裡還有一個 Scaling 的選擇, 若採 No Scaling 表示應用程式的連線以現有的 Gear 為主, 若選擇Scale with web traffic, Openshift 就會根據所需的連線請求, 進行頻寬與負載的管理, 若超出現有的 Gear 限制, 可能就會通知後續的收費機制.

    利用 console 建立應用程式

    利用 console 功能在 Openshift 平台上建立 PHP 應用程式後, 系統會自動產生一組對應的編碼, 專門用來透過 git 進行程式內容的管理, 例如: git clone ssh://82ba9b5dc1182ba9b5dc1182ba9b5@cmsimple-yourdomain.rhcloud.com/~/git/cmsimple.git/ (此一編碼僅用於說明, 並非實際連線的資料) 就可以用來登入到上述所設定的遠端資料倉儲, 將網站資料下載到目前所在目錄的 cmsimple 子目錄中.

    cmsimple 目錄中, 總計會有

        .git

        .openshift

        libs

        misc

        php

        等目錄, 以及 deplist.txt 與 README 等兩個檔案, 而 php 目錄中的 index.php 就是 Openshift 在建立 PHP 應用程式時, 自動產生的網站索引檔案.

    接著就是要下載 CMSimple xh 系統, 並且將程式解開放入上述由 git 所建立的 cmsimple 子目錄中的 php 目錄, 可以直接蓋過原先的 index.php 檔案.

    接下來就是要利用 git 指令進入帶有 .git 子目錄的 cmsimple 程式目錄中, 然後在客戶端, 將新增的 php 程式轉到暫存區, 然後以 push 指令送到 Openshift 所對應的應用程式區域 (也就是 cmsimple-yourdomain.rhcloud.com 網站), 對應的指令如下:

    在命令列中, 確定可以執行 git 指令, 並且在 .git 所對應的 cmsimple 程式目錄中下命令.

    git add .

    git commit -m "add CMSimple xh"

    git push

    到這裡, http://cmsimple-yourdomain.rhcloud.com 網際內容管理網站已經正確執行 CMSimple xh 程式, 管理者必須馬上在 SSL 模式下更改管理密碼.

    利用 rhc 指令建立應用程式

        $ rhc app create myapp php-5.3

        Password: (輸入對應的帳號密碼, 就可以建立 Openshift 平台上的 php-5.3 應用程式)

    刪除先前建立的應用程式 - 必須透過 console 中的連結刪除, 無法採用 rhc 指令刪除.

    重新啟動應用程式, 則可以採用 rhc app restart -a myapp

下載 Openshift 網站上的應用程式資料

    由於 Openshift 支援 sftp 的資料上下傳, 使用者可以利用私鑰以 Filezilla 與 Pageant.exe 進行網站的資料傳遞.

實際的內容管理協同與工作流程

    因為 Openshift 平台上的應用程式主要透過 Git 進行分散式版本控管,  CMSimple XH 網站中的資料總共分為四大類:

        系統主程式

        系統延伸程式

        系統設定檔案

        網際內容

SFTP 資料連線

        所謂的 pageant.exe 其實就是 SSH 的認證代理, 執行 pageant.exe 時可以載入客戶端的私鑰, 之後 Filezilla 就可以直接透過此一私鑰認證, 連線到 Openshift 所對應的網站主機, 以帳號權限下載或上傳網站程式或資料檔案. 基本的使用流程如下:

        執行 pageant.exe, 以 Add key, 載入先前 Openshift 所協助建立的 id_rsa 私鑰檔案, 然後啟動 Filezilla, Host 輸入"你的應用程式名稱-你的命名空間名稱.rhcloud.com", 協定則選 SFTP, Log on type 選擇 normal, 登入帳號則為先前與應用程式對應的 8d382ba9b5dc118d382ba9b5dc11@你的應用程式名稱-你的命名空間名稱.rhcloud.com 中的 8d382ba9b5dc118d382ba9b5dc11, 密碼欄位則保留空白, pageant.exe 會自動經由先前所載入的私鑰提供作為登入密碼, 接著選擇 Connect, 應該就可以進行連線.

        SFTP 連線後, CMSimple xh 程式檔案則位於 /var/lib/openshift/8d382ba9b5dc118d382ba9b5dc11/app-root/runtime/repo/php, 使用者若希望下載 Openshift 平台上的此一 CMSimple xh 程式, 只要將 php 目錄下載到近端主機中的硬碟即可.

        這裡必須要特別注意的一點則是, 因為 CMSimple xh 網際內容管理程式, 經由 git 將原始程式碼 push 到 Openshift 後, 使用者可以透過網際介面更改 CMSimple xh 的設定, 並且直接在網際瀏覽器中新增或刪除網站上的資料, 而這些資料的修改並未透過 git 進行登錄.

        因此比較好的做法應該是網際內容管理團隊中, 各協同成員各自在近端維護一套運作的"比鄰"版本, 並且可以在沒有網路連線情況進行程式碼與內容資料的維護, 然後再各自透過 git 將個別 commit 的資料以不同的 branch 進行上傳, 接著再透過既定的協同機制進行 branch  的 merge, 來分別管理 CMSimple xh 的系統程式, 系統設定, 延伸程式與內容資料等四種不同類型的內容.

2. Phpcloud 篇

Phpcloud 網站: http://www.phpcloud.com/

上述 Openshift 平台上的操作流程, 基本上可以套用到 Phpcloud 平台上使用, 唯一的差別應該是 Phpcloud 的帳號登錄無需進行電子郵件確認, 一旦完成帳號登錄, 馬上就可以進行應用設定, 另外一個明顯的差別則是 Openshift 平台, 除了 PHP, 還支援 Java, Python, Ruby, Perl, C 與 Node.js 技術, 而 Phpcloud 原則上只支援 PHP 相關應用程式.

客製化網站符號名稱綁定

    總共有兩個步驟, 第一個步驟是在遠端 rhcloud 全球資訊網伺服器中的設定, 類似進行 Apache 全球資訊網中的 Virtual Host 設定中, 再增設一組 ServerAlias 的對應. 而第二步驟則是在所增加的 ServerAlias 符號名稱的 DNS 伺服器中, 以 CNAME 對應, 將別名與實際 IP 的對應名稱再進行對應.

   一旦完成設定, 當使用者以客製化的網站符號名稱呼叫時, 首先會由該符號名稱的 DNS 中的 CNAME 對應中進行回應, 將別名轉為 rhcloud.com 中 DNS 設定的實際主機 IP, 並且在該 IP 所進行的全球資訊網伺服設定中, 以 Virtual Host 與 ServerAlias 的聯合作用, 從設定的全球資訊網目錄中, 完成對客製化網站名稱的資料回覆.

    第一步驟設定:

    主要是透過 rhc alias add 將某一應用名稱 (這裡的應用名稱為 cmsimple) 以別名進行對應.

    例如, 要將 cmsimple 的客製化別名設為 cms.my-unique-domain.com, 則可以執行:

        rhc alias add cmsimple cms.my-unique-domain.com

    假如要刪除應用程式與客製化別名的對應, 則執行:

        rhc alias remove cmsimmple cms.my-unique-domain.com

    第二步驟設定:

    為了要讓此一網站別名 cms.my-unique-domain.com 與原先的 cmsimple-yourdomain.rhcloud.com 進行對應, 則必須要在 my-unique-domain.com 的 DNS 伺服器設定中 ,增加一行 CNAME (即 Canonical Name Record, 也就是實際符號名稱與別名之間的對應設定):

cms    CNAME    cmsimple-yourdomain.rhcloud.com

接著增量 DNS zone 檔案的 serial number 後, 重新啟動 DNS 伺服器, 就可以直接利用客製化的符號名稱進行連線.

建立多用戶協同環境

    截至目前, 管理遠端 Openshift 平台上程式與資料的帳號, 只有最原先建立空間的管理者, 為了增加多人進行分散程式開發與內容管理, 則必須在對應的平台應用程式中, 增加 SSH key.

    在 Openshift 中增加額外管理人員的 SSH key, 只需要該管理人員的 SSH public key 檔案, 假設以 collabuser1 來辨識此第二位管理者, 且其 ssh-rsa  格式的 public key 檔案位於 C:\tmp\clooabuser1_rsa.pub, 新增 SSH public key 的指令為:

        rhc sshkey add -i collabuser1 -k C:\tmp\id_rsa.pub

    新增後, 可以利用 rhc sshkey list, 列出兩位已經登錄的使用者對應 SSH key 資料.

3. Appfog 篇

使用電子郵箱登錄免費帳號: https://www.appfog.com/ , 選擇密碼填寫基本資料後, 就馬上開通, 給定應用程式的名稱, 就可以馬上啟用.

安裝 af 工具

    gem update --system

    gem install af

登入系統

    af login

上傳網站資料

    相較於 Openshift 與 Phpcloud, Appfog 可以直接利用 af 工具, 登入系統後, 在命令列中更換目錄到任一目錄, 執行 af update yourapplication, 就可以將該目錄下的所有檔案送到遠端的 yourapplication 應用程式對應位置.

    假如同時將一組網際程式分別要送到 Openshift 與 Appfog, 則 Appfog af 工具的好處是, 可以直接在命令列更換目錄到 Openshift 所對應的程式碼目錄中, 然後在登入 Appfog 對應帳號後,  以 af update yourapplication 將程式與內容送進 Appfog 平台空間.

    就 Openshift, Phpcloud 與 Appfog 的 PHP 應用程式比較, Openshift 與 Phpcloud 平台空間可以內定直接支援 pdo_sqlite 的資料檔連線, 而 Appfog 的 PHP 應用程式環境, 截至 2013.02 仍未支援 SQLite.

    Openshift 的免費帳號可以支援多人協同, 而 Appfog 則只有在付費帳號才支援多人協同 (透過 Teams 成員設定).

    至於 SSL 連線, 儘管 Appfog 網站中寫著只有在付費帳號才支援客製化符號名稱的 SSL 連線, 但是實際使用下,  Appfog 的免費帳號也支援客製化符號名稱的 SSL 連線.

完成這裏的網際內容管理系統的平台遠端應用程式設定, 接著就是配合設定近端的對應網站.

備註: Openshift 與 Phpcloud 平台上的 PHP 應用程式環境都支援 SQlite 的程式環境, 無需額外的設定, 只要完成 PHP 應用程式的建立, 就可以直接使用 PDO_SQLite 對應的資料庫連結延伸.

 

Powered by CMSimple_XH| Template: ge-webdesign.de| 登入