Install iLyricsCloud on OpenShift


  • tutorials
  • (Updated at )

在 OpenShift 上建立 iLyricsCloud

首先您需要有 OpenShift 的帳號,以及已設定好 SSH Key 以能夠進行遠端登入。
過程中更新檔案會使用到 git,如果不想使用 git 仍是可以使用 FTP 的方式存取檔案,但皆不包含在本篇內容中,關於 OpenShift SSH, Git 請參考官方網站。

https://www.openshift.com/developers/remote-access
http://git-scm.com

建立 Application

在 OpenShift 中,您可以簡單的把 Application 當做是一個獨立的 Web server,而我們要在這個空的 Web server 上建立 PHP5/MySQL 的環境。

Applications Panel 中選擇 Add Application 來開始建立。

步驟 1,請選擇平台 PHP 5.4 或任何 PHP 5 以上版本皆可。

步驟 2,app 的基本設定。Public URL 會是這個 app 的名稱,也會是 OpenShift 產生的網址,填上想要的名字即可, 圖例建立的名稱是 ilyrics。OpenShift 可直接幫你將原始碼從 Git repo 拉一份過來,所以這邊接直貼上 iLyricsCloud 位於 Github 的網址 https://github.com/ethanliu/iLyricsCloud.git 可以省下一些下載上傳的動作。

步驟3,即 app 建立完成,會顯示這個 app 相關的 git 簡易入門,這些指令待會我們也會用到,但這裡可以先不予理會,直接往下進到 application overview page。


接著要安裝的是 MySQL 所以請點選 Add MySQL 5.5 進行安裝。

安裝完成將會看到 MySQL 的連線資訊,包括資料庫名稱、帳號、密碼等,一般狀況下你會需要先記下這些資料,不過配合 OpenShift 我們有更便利的使用方式,可以先不需要記下這些資料。

回到 overview 查看一下,確認有我們要的 PHP 及 MySQL 的環境了,請複製右上 Source Code 裡面的那一長串 ssh://xxxxx 的網址,至此我們已經完成 OpenShift 端的工作。

設定 iLyricsCloud

接下來便是 iLyricsCloud 的相關設定,首先我們需要將剛剛建立好的 app 的原始碼拉回到我們的電腦中,開啟命令列視窗,執行以下指令,即步驟 3 提示的內容。

# git clone [OpenShift Source Code 網址] [目的資料夾]  
> git clone ssh://5389bc7c5973...rhcloud.com/~/git/ilyrics.git/ ~/Documents/ilyrics-demo  

這表示將 OpenShift 上的原始碼下載到 ~/Documents/ilyrics-demo 這個資料夾,如果不設定則會建立 APPNAME 資料夾,依設定的名稱而定,執行過程中會看到如下的訊息。

Cloning into 'ilyrics-demo'...  
remote: Counting objects: 425, done.  
remote: Compressing objects: 100% (171/171), done.  
remote: Total 425 (delta 242), reused 425 (delta 242)  
Receiving objects: 100% (425/425), 181.18 KiB | 177.00 KiB/s, done.  
Resolving deltas: 100% (242/242), done.  

完成後,開啟 ~/Documents/ilyrics-demo 資料夾,就會看到 iLyricsCloud 的程式碼,與直接從 Github 上下載的版本相同。

在這個資料夾中,將 config.sample.php 更名,或是複製並命名為 config.php,接著開啟 config.php 進行編輯,安全起見,我們先把預設的 iLyricsCloud 帳號密碼做更換

define('ADMIN_USER', 'admin');  
define('ADMIN_PASS', 'admin');  

將兩個 "admin" 更改為其他內容。再來更新資料庫的設定,請找到下面這兩行

define('DATABASE_DSN', 'sqlite:' . dirname(__FILE__) . '/cache/cache.db');  
// define('DATABASE_DSN', 'mysql:host=127.0.0.1;port=3306;dbname=;user=;password=;');  

更換成下面的內容,直接複製則上即可。這裡會看到我們改使用 mysql 而不是使用 sqlite,並且使用 OpenShift 的環境便數來取得資料庫的帳號資料,而並非直接設定。

// define('DATABASE_DSN', 'sqlite:' . dirname(__FILE__) . '/cache/cache.db');  
  
$host = getenv('OPENSHIFT_MYSQL_DB_HOST');  
$port = getenv('OPENSHIFT_MYSQL_DB_PORT');  
$dbname = getenv('OPENSHIFT_APP_NAME');  
$user = getenv('OPENSHIFT_MYSQL_DB_USERNAME');  
$passwd = getenv('OPENSHIFT_MYSQL_DB_PASSWORD');  
  
define('DATABASE_DSN', "mysql:host={$host};port={$port};dbname={$dbname};user={$user};password={$passwd};");  

{$host} 等 5 項也可以直接填入實際的內容。存檔後,我們要準備把更改過的檔案再上傳回 OpenShift,請再回到剛剛的命令視窗。

> git add config.php -f  
> git commit -m "my config.php"  
  
[master 8a05599] my config.php  
 1 file changed, 46 insertions(+)  
 create mode 100644 config.php  
  
> git push  
  
Counting objects: 4, done.  
Delta compression using up to 2 threads.  
Compressing objects: 100% (3/3), done.  
Writing objects: 100% (3/3), 824 bytes | 0 bytes/s, done.  
Total 3 (delta 1), reused 0 (delta 0)  
remote: Stopping MySQL 5.5 cartridge  
remote: Stopping PHP 5.4 cartridge (Apache+mod_php)  
remote: Waiting for stop to finish  
remote: Waiting for stop to finish  
remote: Building git ref 'master', commit 8a05599  
remote: Preparing build for deployment  
remote: Deployment id is 5a066d98  
remote: Activating deployment  
remote: Starting MySQL 5.5 cartridge  
remote: Starting PHP 5.4 cartridge (Apache+mod_php)  
remote: Application directory "/" selected as DocumentRoot  
remote: -------------------------  
remote: Git Post-Receive Result: success  
remote: Activation status: success  
remote: Deployment completed with status: success  
To ssh://5389bc7c5973...@ilyrics-creativecrap.rhcloud.com/~/git/ilyrics.git/  
   ceb7691..8a05599  master -> master  

更新完成之後,我們就可以打開 http://ilyrics-creativecrap.rhcloud.com/admin/ 也就是一開始建立的 Public URL 然後使用剛剛更改後的帳號密碼登入 iLyricsCloud 的管理界面,此時會看到 Install database 的提示字樣,如果沒有看到的話,可能是上面更改的內容有錯,請再重複上述的動作確認修改的內容正確,點擊 Install 後,成功則會看到 Install success 就完成了。可以點選單的 Search 打開搜尋界面,試試看搜尋應該就會顯示找到的歌詞或專輯圖片網站。

iLyricsWidget 設定的 iLyricsCloud 網址填入 http://ilyrics-creativecrap.rhcloud.com/q.php 就可以開始使用自動搜尋的功能了。


Summary

本篇因為是偵對在架在 OpenShift 上所以有些設定作業,實際上安裝 iLyricsCloud 僅需要更改資料庫設定的部份。文中的 ilyrics-creativecrap.rhcloud.com 及 app 名稱 ilyrics,請替換成您的資料不要直接使用。
若不想使用 Git 在步驟 2 的 Source Code 即可不用填寫,但需自行至 https://github.com/ethanliu/iLyricsCloud 下載原始碼,並透過 FTP 或其他方式上傳,包含後續更新檔案等等。

Ethan Liu avatar
Ethan Liu
A web developer, iOS developer, designer and a cat slave.

comments powered by Disqus