快速安裝 Amazon EC2 LAMP 環境 (EC2 Console)

已經紅了一陣子的 Amazon 雲端服務,本篇來介紹如何使用 Amazon EC2 Linux 安裝 LAMP (Linux Apache MySQL PHP) 環境,衝著 Amazon 推出的新玩家註冊開始為期**一年的免費**,當然也是有一些限制條件,可以參考 EC 2 收費標準及介紹,底下這圖片就是一年內免費的方案,其實對於剛學習 Linux 的玩家而言相當足夠。 AWS Free Usage Tier 如何設定及註冊 Amazon EC2 可以參考底下連結教學: 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇) 阿正老師教你免費玩Amazon EC2雲端主機(下篇):主機實戰篇 看完這兩篇大概對於 Amazon 有一定程度的瞭解,接下來就是如何進入玩家們所安裝好的 Amazon Linux 主機,由於 EC 2 的服務主機會常常自動更新 IP,剛開始可以到 Console 看到底下 public DNS: AWS Management Console 不過這 DNS IP 都會常常更新,所以剛開始都要常常來這邊看,玩家們可以用剛剛註冊此機器的 mykey.pem 透過 ssh 的方式登入機器,底下是在 Ubuntu 的操作

1. 先設定檔案權限,請將檔案權限改成 400
chmod 400 mykey.pem
2. 透過 ssh 軟體 pietty (上面阿正老師連結有教學)或 Linux ssh 指令
ssh -i mykey.pem ec2-user@ec2-XXXXXX.compute-1.amazonaws.com
進去主機之後就是一般的 Linux 操作,可以參考

鳥哥的Linux 私房菜,當然我想玩家們都會發現一直透過 mykey.pem 登入會有點麻煩,而且假設 pem 檔案消失,又要去 Console 申請一次,所以底下教大家如何不必透過 mykey.pem 方式登入,其實也很容易,就是修改 /etc/ssh/sshd_config

[Read More]

PHP curl error: SSL certificate problem, verify that the CA cert is OK

之前在 CodeIgniter 寫了 CodeIgniter-Google-URL-Shortener-API 縮短網址的 goo.gl API Library,也在國外 CodeIgniter 論壇發表了一篇,不過在論壇有人回覆安裝好之後不能使用,會直接噴出底下錯誤訊息:

Severity: Notice Message: Trying to get property of non-object Filename: controllers/google_url.php Line Number: 24 之後我在 Windows 利用 Appserv 架設好這環境,發現是同樣問題,但是在 FreeBSDUbuntu 上面都不會出現這錯誤訊息,接著在程式馬上面看看 curl 吐出什麼資料:

Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 把這錯誤訊息拿去 Google 發現到這篇解法 Curl: SSL certificate problem, verify that the CA cert is OK,只要跳過驗證憑證就可以了

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
可以參考

PHP 官方 curl_setopt 的設定說明。

在 Ubuntu 底下快速安裝 CakePHP Framework 環境

最近因為別的專案用到 CakePHP 這套 PHP Framwork,剛好有這機會來學習 CakePHP,目前已經 Release 到 1.3.8 & 1.2.10 Stable,本篇紀錄如何在 Ubuntu 10.10 安裝 1.3.8 版本,本人不推薦用 2.0, 因為踩到很多雷阿,大家可以到 CakePHP GitHub 找尋自己想要的版本,安裝環境如下:

Ubunut 10.10 32 Desktop 版本 Apache/2.2.16 (Ubuntu) PHP 5.3.3-1ubuntu9.5 with Suhosin-Patch (cli) MySQL 5.1.49 1. 先下載 1.3.8 版本 2. 解壓縮到 /var/www 底下 3. 設定 apache virtual host 複製 virtual host 設定檔

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/cakephp
修改設定檔
ServerName  cakephp.localhost
    DocumentRoot /var/www/cakephp/app/webroot
    
        Options All
        AllowOverride All
        Order allow,deny
        allow from all
    
4. 啟動 apache virtual host 跟 mod_rewrite 模組
a2enmod rewrite
a2ensite cakephp
ServerName 部份可以自己亂取,之後到

/etc/hosts 裡面加入 127.0.0.1 就可以了 5. 將 app/tmp 目錄改成 apache 使用者,這樣確定該目錄可以寫入 大致上就這樣完成了,可以參考 CakePHP 線上手冊

svn 恢復略過衝突檔案 (conflict file)

當我們利用 svn up 更新程式碼,如果遇到修改相同檔案的相同地方,就會發生衝突 (conflict) 此時就必須修改或者是略過,當選擇略過此檔案就會出現底下訊息

Skipped ’lib/logs/logDB.txt’ Skipped ’lib/confs/Conf.php’ At revision 912. Summary of conflicts: Skipped paths: 2 之後怎麼用 svn up 更新檔案,都會因此被略過,那該怎麼恢復被略過檔案的狀態,讓它們可以繼續被更新呢?網路上找到一篇 svn local obstruction, incoming add upon merge 解法,用 svn resolve 來解決問題,只要針對該檔案打入底下指令即可

svn resolve --accept working lib/confs/Conf.php
svn resolve --accept working lib/logs/logDB.txt

在 Ubuntu 安裝或升級 Git 版本控制的3種方法

Git 是目前還蠻 popular 的一套版本控制軟體,很多公司及大小型專案都用 g是it 來控管流程,或者是搭配 redmine 專案管理,然而 git 大家都會想到 github 這個儲存空間,免費註冊就有 300MB 的空間讓大家使用,如果對於 git 的使用方式,我推薦一個非常好的網站,就 git wiki,這網站不只是教你 git 指令應用,還收集了很多不錯的網站,底下介紹三種 git 的安裝方式:

1. Ubuntu 底下就用 apt-get 指令

# git core
apt-get -y install git-core git-doc git-gui gitk
如果你有用 Ubuntu 介面,就可以安裝 git-gui 跟 gitk 還不錯

2. 下載 Git Source 打包檔,並且編譯

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
wget http://kernel.org/pub/software/scm/git/git-1.7.5.tar.gz
tar -zxvf git-1.7.5.tar.gz
cd git-1.7.5
make prefix=/usr/local all
sudo make prefix=/usr/local install

3. 用 git clone 來安裝

sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
git checkout v1.7.5
make prefix=/usr/local all
sudo make prefix=/usr/local install
可以參考

http://git.kernel.org/?p=git/git.git;a=tags 來選擇 checkout 編譯版本。 如果很要求版本最新的話,個人推薦方法 3 啦,另外推薦 A Visual Git Reference 這圖文並茂的網站,建議可以先看這裡的圖來瞭解 git 是如何運作的,這樣比較好上手喔 ^^

解決在 Ubuntu Terminal 底下 git diff 沒有輸出結果 10.10

自從把筆電安裝成 Ubuntu 10.10 maverick 後,把所有 github 上面程式碼都用 git clone 下來,最近遇到一個非常奇怪的問題,那就是修改檔案之後,正常來講,可以用 git diff 來查看修改過的程式碼,但是非常奇怪的事情就發生了,『完全沒有輸出』,後來在網路上找到一篇解法 git diff shows no output,原來是 $LESS 這個環境變數搞的鬼,其實可以用 git diff | cat 方式看到 diff 結果。 我們打開 .bashrc 發現底下設定

export EDITOR="vim"
export GIT_PAGER="less"
export LESS="-XEfmrSw"
export PAGER="most"
重點就在於 $LESS 必須加上

-X,並且請裝上 most 這指令

apt-get install most

你不可不知的 JSON 基本介紹

還不知道 JSON 是什麼嘛?本篇教學會帶您瞭解 JSON 在網站上的應用,以及運作流程跟使用 PHPJavaScript 來處理 JSON。假如您現在的工作就是網站設計師,相信一定聽過 JSON,但是什麼是 JSON,它能夠做什麼,及您能透過它在網站上做到哪些事情呢?

透過本篇介紹您可以瞭解基本的 JSON,底下會列出本篇會提到的重點:

  • 什麼是 JSON
  • JSON 應用在哪些地方
  • 如何建立 JSON 字串
  • 一個簡單的 JSON 範例
  • JSON vs XML
  • 如何透過 PHP 及 JavaScript 使用 JSON

什麼是 JSON

JSON 是個以純文字為基底去儲存和傳送簡單結構資料,你可以透過特定的格式去儲存任何資料(字串,數字,陣列,物件),也可以透過物件或陣列來傳送較複雜的資料。一旦建立了您的 JSON 資料,就可以非常簡單的跟其他程式溝通或交換資料,因為 JSON 就只是個純文字格式。

JSON 的優點如下:

  • 相容性高
  • 格式容易瞭解,閱讀及修改方便
  • 支援許多資料格式 (number,string,booleans,nulls,array,associative array)
  • 許多程式都支援函式庫讀取或修改 JSON 資料
[Read More]

CodeIgniter 2.0.X MVC 架構介紹

CodeIgniter

這次受到 OSSF::自由軟體鑄造場(Open Source Software Foundry) 邀請在高雄講 CodeIgniter 2.0.X 系列講座,一整天的課程,可以參考 KaLUG 社群技術分享工作坊 - 快速學習 PHP Framework - CodeIgniter 2.0,2009 年我也是講了一場介紹 CodeIgniter 1.7.X 講座,這次針對於 CodeIgniter 2.0.X 做了詳細介紹,及我們該如何轉換原本網站程式到 CI 上面,學員雖然來的不多,但是我相信大家都有學到這次講課的精華,就是 CodeIgniter MVC 架構,跟如何應用 Controller Model Views 基礎用法,看到大家都很認真學習,還有學員從雲科大到高雄,真的太令我感動了,希望這次議程沒有讓學員們失望,底下附上我的簡報:

簡報檔

如何建立 Ram Disk 在 Ubuntu 上面

Update: 此篇文章建立 RAM DISK 還是用原來 3G 記憶體,而不是用 4G 裡面的 1G,感謝威阿提醒修正 之前拜了一台筆電 Toshiba Portege R700,拿到電腦馬上二話不說,灌成 Ubuntu 10.10 32 位元,但是筆電有 4G 的記憶體,32位元只能支援到 3G,所以剩下 1G 就拿來當作是 Ram Disk,反正不用白不用,可以把臨時要用且關機不需要的檔案或程式丟到 RAM DISK,如果把 FireFox 的 cache 資料放在裡面應該會蠻快的,底下紀錄如何開機就直接掛上 1G 的 Ram Disk。 兩個步驟就可以了:

mkdir -p /media/ramdisk
mount -t tmpfs -o size=1024M tmpfs /media/ramdisk
把上面寫到

/etc/rc.local 檔案,這樣開機就會自動把 RAM Disk 掛上去。