3 | | * Web應用程式 |
4 | | * Google App Engine簡介 |
| 7 | '''* Web應用程式''' |
| 8 | |
| 9 | '''什麼是Web應用程式''' |
| 10 | |
| 11 | 什麼是一個Web應用程式 (Web Application)? 簡單地說就是一個提供特定服務能夠讓使用者經由internet或者intranet透過瀏覽器來讀取、互動的應用程式。 更明確地來說,開發人員利用瀏覽器所支援的語言(例如. HTML, Java Script, Java, PHP等等)來開發的一個應用程式,且能夠透過瀏覽器來產生執行結果,即可稱之為一個Web應用程式。(參考:wikipedia) |
| 12 | |
| 13 | 傳統的Web網頁能夠提供使用者瀏覽大量的文字或者圖片資料。然而隨著越來越多的網頁技術推陳出新,以及Web 2.0時代的來臨,Web網頁所扮演的資訊提供者(provider)已經不足以滿足使用者的需求;使用者需要的是能夠與其『互動』的網頁而不僅僅只是靜態的網頁呈現,因此,越來越多開發人員投入Web應用程式開發的領域,不管是底層架構(framework)的設計、後端網頁程式設計甚至到了前端互動技術(例如. AJAX, Asynchronous JavaScript and XML);一個能夠針對由上到下(Top-Down)提供完整解決方案的Web應用平台對於開發人員來說,能夠提高。 |
| 14 | |
| 15 | '''建置、發表一個Web應用程式''' |
| 16 | |
| 17 | 該如何建置一個Web應用程式並發表在internet或者intranet上供其他使用者使用呢? 首先我們必須要先建置一個網路伺服器來提供服務。 首先當然是得先準備伺服器的硬體及所需之網路設備,此外電源供應也是一個大問題。 準備好硬體設備、插入插座打開電源後下一步就是安裝作業系統了;目前的各種作業系統諸如Microsoft的Windows server系列、SUN Solaris、各種Linux發行套件甚至是Apple的MAC OS都能夠來當作網路伺服器提供服務。 |
| 18 | |
| 19 | 接下來為了能夠讓其他使用者搜尋到自己所提供的Web應用程式之服務,就得申請IP位置以及網域名稱對應到自己的伺服器,接下來就是選擇合用的Web伺服器了。 目前最普遍的Web伺服器就是Apache Web伺服器,此外由Microsoft所提供支援的IIS (Internet Information Service)也是一種選擇;若是想要利用Microsoft的ASP/ASP.NET來開發Web應用程式,則使用後者能帶來最大的支援度,然而則須考量使用Microsoft系統可能涉及的版權及付費問題。 而若以Open source的Apache |
| 20 | |
| 21 | 當然還有更快的方式且更安全、穩定的方式來建置Web伺服器的執行環境,那就是透過目前許多虛擬伺服器提供者所提供的虛擬主機環境。 這些提供者能夠提供非常完整的且全日的安全機制來保護使用者的Web應用程式內容不會遭到惡意使用者的入侵、修改、竊取,甚至有額外的電源備援機制來支持開發者的Web應用程式提供24*7不停機的持續性服務;此外高速的網路頻寬、高運算效能的CPU和大容量的記憶體及硬碟空間,再加上作業系統及網路伺服器的合法使用權和即時更新,讓開發人員無後顧之憂地專注於自己所開發的Web應用程式上。 |
| 22 | |
| 23 | 天下沒有白吃的午餐,想要享用這樣安全、快速、穩定的開發、執行、服務環境以及完善的支援,您也需要更多的小朋友來支援您! 如果只是想要測試一個小小的Web應用程式的功能也得付出這麼大的成本嗎? 難道沒有又便宜又穩定,且支援度高的Web應用程式開發環境供開發人員來開發、部署自己開發的Web應用程式?且又有免費的資料庫資源能夠來存取並搜尋呢? |
| 24 | |
| 25 | |
| 26 | |
| 27 | |
| 28 | '''* Google App Engine簡介''' |
| 29 | |
| 30 | Google App Engine是什麼? |
| 31 | |
| 32 | 承上章,Google App Engine想要提供使用者的,就是這樣一個..... |
| 33 | |
| 34 | 目前支援,其他不同語言的執行環境則需等Google釋出支援.App Engine的Python執行環境包含了Python語言的直譯器 Python標準函式庫 以及 App Engine的函式庫以及API 以及對於Web server layer的一個標準介面(a standard interface to the web server layer). |
| 35 | |
| 36 | Google App Engine是什麼呢?簡單地說就是一個提供開發人員建置及架設Web應用程式網站的平台。透過Google App Engine這樣的一個平台,開發人員能夠專注於開發自己的Web應用程式而無須耗費心力於平台的建置與管理,更無須花費任何金錢即可享有由Google提供的雲端運算環境所帶來的強大運算資源、大量儲存空間以及高速頻寬。目前Google App Engine平台對於每一個Web應用程式的免付費使用限制為:每個Web應用程式可使用500MB儲存空間、每一個月每個Web應用程式5百萬個頁面瀏覽數(目前國內的許多熱門網站也鮮少能夠突破這個瀏覽數量,所以可以不必擔心瀏覽數上限的問題)及每天2億個CPU clock cycle運算。 |
| 37 | |
| 38 | 由於Google App Engine於2008年四月才由Google釋出,所以目前仍然在Beta的階段;Google也提供了免費測試帳號供有興趣的開發人員申請可以在Google App Engine平台上建置、部署自己的Web應用程式。即使沒辦法連上網路或者沒有申請到測試用的帳號也沒關係,只要安裝好Python以及Google App Engine執行環境,開發人員也能在自己的電腦上編譯程式碼並以 http://localhost:8080/ 來檢視自己撰寫的Web應用程式執行結果(當然若是使用到需要Google App Engine提供的服務則可能無法使用) |
| 39 | |
| 40 | |
| 41 | |
| 42 | |
| 43 | |
7 | | * 建置開發環境 |
8 | | * Hello World! |
| 46 | |
| 47 | '''Django''' |
| 48 | |
| 49 | Django為一種以Python程式語言為基礎的Web應用程式基礎架構,發音為/ˈdʒæŋgoː/。 |
| 50 | |
| 51 | '''GFS''' |
| 52 | |
| 53 | '''BigTable''' |
| 54 | |
| 55 | |
| 56 | '''* 建置開發環境''' |
| 57 | |
| 58 | '''於Linux平台建置Python執行環境''' |
| 59 | |
| 60 | 在Linux上(在此以Ubuntu 8.04 LTS版本為例),一般的套件版本都已經在作業系統安裝時就已預先安裝Python的執行環境。可開啟終端器輸入 |
| 61 | |
| 62 | #python -V |
| 63 | |
| 64 | 來檢視目前系統所安裝的python版本。若是沒有安裝或者版本較2.5.2來得舊,建議都請安裝2.5.2以上的版本! |
| 65 | 在Ubuntu上可利用apt-get來安裝 |
| 66 | |
| 67 | #sudo apt-get install python |
| 68 | |
| 69 | '''於Windows平台建置Python執行環境''' |
| 70 | |
| 71 | 在Microsoft Windows上安裝就簡單得多了,只要下載到目前最新版本的安裝程式,按照以下步驟下一步、下一步就能夠完成安裝。 |
| 72 | |
| 73 | |
| 74 | |
| 75 | |
| 76 | '''* Hello World!''' |
| 77 | |
| 78 | |
| 79 | Google App Engine也是Web應用程式的一種. |
| 80 | |
| 81 | 安裝完Python以及Google App Engine的執行環境之後,我們先來寫一個簡單的Hello World Web應用程式,在本機上執行體驗一下Google App Engine的執行結果,並了解如何編譯、執行Google App Engine的程式碼。 |
| 82 | |
| 83 | 首先先在Google App Enigne的安裝目錄(預設為google_appengine)下先新增一個文字檔取名為 hello.py,接著編輯hello.py加入以下幾行字*並存檔。 |
| 84 | |
| 85 | {{{ |
| 86 | print 'Content-Type: text/plain' |
| 87 | print ' ' |
| 88 | print 'Hello, world!' |
| 89 | }}} |
| 90 | |
| 91 | *hello.py範例程式節錄自Google App Engine。基本上只要 print 'Hello, world!' 這段程式碼即可正常執行,第一行的 print 'Content-Type: text/plain' 用意僅在metadata的宣告,不加入亦可正常執行。 |
| 92 | |
| 93 | 接下來我們再新增一個文字檔取名為app.yaml,這是一個設定檔且檔案名稱是固定的,請不要隨意更換名稱避免造成無法編譯的錯誤。當我們下指令編譯hello.py或者任何一個我們要開發的Google App Engine Web應用程式時,Google App Engine都會先讀取這個檔案內容來取得相關的資訊:應用程式名稱、應用程式版本編號、執行環境、API版本編號以及handler程式檔案目錄等等。 |
| 94 | |
| 95 | 接下來我們先在app.yaml這個檔加入以下的內容。 |
| 96 | |
| 97 | {{{ |
| 98 | application: helloworld |
| 99 | version: 1 |
| 100 | runtime: python |
| 101 | api_version: 1 |
| 102 | |
| 103 | handlers: |
| 104 | - url: /.* |
| 105 | script: helloworld.py |
| 106 | }}} |
| 107 | |
| 108 | 首先application就是指我們所開發的Google App Engine Web應用程式名稱,這裡先暫定為helloworld;因為application名稱必須和上載到Google Appspot網站上的Web應用程式帳號名稱一致才行,否則會有錯誤的情形發生,不過目前我們僅先在本機測試,因此將會把這個問題留到後面章節來討論。version則是指這個應用程式的版本;runtime則是指我們用來開發這個Google Ap Engine Web應用程式的所使用的執行環境,預設當然就是Google目前唯一使用的Python語言;api_version則是。 |