1 / 57

Exploring the World of Web Development with LAMP Stack

Learn about the history of WWW, HTML, Apache Server, and LAMP stack. Understand the significance of Hyper Text Markup Language in creating dynamic websites. Dive into the world of web development through LAMP technology.

johnda
Download Presentation

Exploring the World of Web Development with LAMP Stack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 20 • WWW 伺服器 • 我們最常講的『架站』其實就是架設一個 Web 網站啦!那麼什麼是 Web 呢?那就是全球資訊廣播的意思 (World Wide Web),或者也可以稱之為互連網吧!這個是我們目前的人類最常使用的 Internet 的協定之一啦!通常說的上網就是使用 WWW 來查詢使用者所需要的資訊囉!目前在 Unix-Like 系統中的 WWW 伺服器主要就是透過 Apache 這個伺服器軟體來達成的,而為了動態網站,於是 LAMP (Linux + Apache + MySQL + PHP) 就這麼產生啦!讓我們趕緊來進入 LAMP 的世界吧!

  2. WWW 的簡史、HTML 與標準制訂 (W3C) • 網際網路 (TCP/IP) 會這麼熱門,主要是 80 年代的 email 以及 90 年代之後的 WWW 服務所造成的!尤其是 WWW 這個玩意兒。WWW 是 World Wide Web 的縮寫,其中 Web 有廣播網的意思存在,所以簡稱為全球資訊網的就是了。WWW 可以結合文字、圖形、影像以及聲音等多媒體,並透過可以讓滑鼠點擊的超連結 (Hyperlink) 的方式將資訊以 Internet 傳遞到世界各處去。 • P.20-2 請參閱書籍

  3. 與其他的伺服器類似的,你要連結上 WWW 網站時,該網站必需要提供一些資料,而你的用戶端則必需要使用可以解析這些資料的軟體來處理,那就是瀏覽器啦!簡單的來說,你可以這樣瞧一瞧 WWW server/client 的相關性: • P.20-2 請參閱書籍

  4. WWW 伺服器不但需要一個可讓用戶端瀏覽的平台,還需要提供用戶端一些資料才行! • „伺服器所提供的最主要資料是超文件標籤語言 (Hyper Text Markup Language, HTML)、多媒體檔案 (圖片、影像、聲音、文字等,都屬於多媒體或稱為超媒體)。 • „HTML 只是一些純文字資料,透過所謂的標籤 (<tag>) 來規範所要顯示的資料格式; • „在用戶端,透過瀏覽器的對 HTML 以及多媒體的解析,最後呈現在使用者的螢幕上。 • P.20-3 請參閱書籍

  5. HTML 的格式 • 如上所提到的相關資訊,我們知道伺服器端需要提供用戶端一些資料,而這些資料其實主要都以 HTML 的格式來呈現的。那麼什麼是 HTML 呢?我們拿鳥哥的網站來看一下好了。你可以使用任何一個瀏覽器連結到 http://linux.vbird.org,然後在其上的頁面上按下滑鼠右鍵,選擇察看原始碼,你就能發現該網頁是如何寫成的了。 • P.20-3 請參閱書籍

  6. HTML主要是由 <html> </html> 所包含起來,而在其中又分為兩大區塊,一個是與標頭有關的 <head> </head> 區塊,包括該網頁所使用的編碼格式與抬頭等等。另一部份則是 <body> </body> 所含有的實際網頁內容資料啦。 • P.20-3 請參閱書籍

  7. WWW 所用的協定及 WWW 伺服器簡史--就是講古時間 • 伯納斯-李 (Tim Berners-Lee) 在 1980 年代為了更有效率的讓歐洲核子物理實驗室的科學家可以分享及更新他們的研究成果,於是他發展出一個超文件傳輸協定 (Hyper Text Transport Protocol, HTTP)。如同前面提到的,在這個協定上面的伺服器需要軟體,而用戶端則需要瀏覽器來解析伺服器所提供的資料。 • 為了讓 HTTP 這個協定得以順利的應用,大約在 90 年代初期由伊利諾大學的國家超級電腦應用中心 (NCSA, http://www.ncsa.illinois.edu/) 開發出伺服器 HTTPd (HTTP daemon 之意)。HTTPd為自由軟體,所以很快的領導了 WWW 伺服器市場。 • 後來由於 HTTPd這個伺服器一直沒有妥善的發展,於是一群社群朋友便發起一個計畫,這個計畫主要在改善原本的 HTTPd伺服器軟體,他們稱這個改良過的軟體為 Apache,取其『一個修修改改的伺服器 (A patch server)』的雙關語!^_^!這個 Apache 在 1996 年以後便成為 WWW 伺服器上市佔率最高的軟體了 (http://httpd.apache.org/)。 • P.20-3~4 請參閱書籍

  8. WWW 是依據 HTTP 這個協定而來的,分為伺服器端與用戶端; • „Apache 是一個伺服器端的軟體,主要依據 NCSA 的 HTTPd伺服器發展而來,為自由軟體; • „Mozilla 是一個自由軟體的開發計畫,其中 firefox瀏覽器是相當成功的作品。 • „在撰寫自己的網頁資料時,盡量使用 W3C 所發佈的標準,這樣在所有的瀏覽器上面才能夠順利的顯示出你想要的樣子。 • P.20-5 請參閱書籍

  9. WWW 伺服器與瀏覽器所提供的資源設定 (URL) • <協定>://<主機位址或主機名稱>[:port]/<目錄資源> • P.20-5 請參閱書籍

  10. WWW server/client 間資料傳輸的方式 • GET • 就是瀏覽器直接向 WWW 伺服器要求網址列上面的資源,這也是最常見的。此外,使用 GET 的方式可以直接在網址列輸入變數喔。舉例來說,鳥哥的討論區有一篇提問的智慧,他的網址是:『http://phorum.vbird.org/viewtopic.php?t=96』,發現那個 ?t=96 了嗎?t 就是變數,96 就是這個變數的內容。如果你將問號後面的資料拿掉時,瞧瞧會出現什麼後果?這麼說,你可以明白 GET 的處理了吧? • „POST • 這也是用戶端向伺服器端提出的要求,只是這個要求裡面含有比較多的資料就是了。舉例來說,討論區裡面不是常常有留言的選項嗎,如果你選擇留言的話不是會在瀏覽器冒出一個框框讓你填入資料嗎!當按下傳送後,那些框框內的資料就會被瀏覽器包起來傳送至 WWW 伺服器了。POST 與 GET 不相同喔,GET 可以在網址列取得用戶端所要求的變數,不過 POST 就不是使用網址列的功能了。 • P.20-6 請參閱書籍

  11. WWW 伺服器的類型: 系統、平台、資料庫與程式 (LAMP) • 僅提供使用者瀏覽的單向靜態網頁 • 提供使用者互動介面的動態網站 • P.20-7 請參閱書籍

  12. 支援的作業系統:讓所需要的軟體都能夠安裝執行啊; • „可運作的 WWW 伺服器:例如 Apache 與 IIS 等 WWW 伺服器平台軟體; • „網頁程式語言:包括 perl, PHP, JSP, CGI, ASP 等等都算是啦! • „資料儲存之資料庫系統:包括 MySQL, MSSQL, PostgreSQL以及甲骨文 (Oracle) 等等。 • P.20-8 請參閱書籍

  13. LAMP 平台的說明 • 在整個平台設計上面,目前常見的有兩大系統,一個是 Linux 作業系統上面,搭配 Apache + MySQL + PHP 等而達成,這個系統被稱為 LAMP。 • P.20-8 請參閱書籍

  14. https: 加密的網頁資料 (SSL) 及第三方公正單位 • 關於 HTTP 這個傳輸協定當中,你必需要知道的是:『這個傳輸協定傳輸資料是以明碼傳送的』,所以你的任何資料封包只要被監聽竊取的話,那麼該資料就等於是別人的啦!那想一想,你有過上線刷卡的經驗嗎?上線刷卡只要輸入你信用卡的卡號與相關的截止日期後,就能夠進行交易了。如果你的資料在 Internet 上面跑時是明碼的情況下,真要命!那你的信用卡不就隨時可能會被盜用? • 雖然大多數 Internet 上面的 WWW 網站所提供的資料是可以隨意瀏覽的,不過如同上面提到的,一些物流交易網站的資料以及關於你個人的重要機密資料當然就不能這樣隨意傳送啦!這個時候就有需要用到 https://hostname 這種連線的方式啦!這種方式是透過 SSL 加密的機制喔! • P.20-10 請參閱書籍

  15. Secure Socket Layer (SSL) • Certificate Authorities (CA) • 想一想 SSL 這個機制有什麼問題?他的問題就是:『那把 Public key 是伺服器產生且任何人都能取得的』!這是什麼問題?因為 public key 可讓任何人取得,若被釣魚網站取得並且製作一個很類似你網路銀行的網站,並且騙你輸入帳密,要命了!因為你不知道該網站是詐騙集團製作的,以為 https 就是安全的,如此一來,即使你的資料有加密,但結果,在釣魚網站伺服器端還是能夠取得你輸入的帳密啊!這個時候就需要第三方公正單位來幫忙啦! • 所謂的 CA 就是一個公認的公正單位,你可以自行產生一把金鑰且製作出必要的憑證資料並向 CA 單位註冊 (講到註冊你就要知道...這東西是要錢的意思!),那麼當用戶端的瀏覽器在瀏覽時,該瀏覽器會主動的向 CA 單位確認該憑證是否為合法註冊過的,如果是的話,那麼該次連線才會建立,如果不是呢?那麼瀏覽器就會發出警告訊息,告知使用者應避免建立連線啊。所以說,如此一來 WWW 伺服器不但有公正單位的背書,使用者在建立連線時也比較有保障! • P.20-10~11 請參閱書籍

  16. WWW (LAMP) 伺服器基本設定 • LAMP 所需軟體與其結構 • 那麼我們的 LAMP 需要哪些東西呢?你必需要知道的是,PHP 是掛在 Apache 底下執行的一個模組,而我們要用網頁的 PHP 程式控制 MySQL時,你的 PHP 就得要支援 MySQL的模組才行!所以你至少需要底下幾個軟體: • „ httpd (提供 Apache 主程式) • „ mysql (MySQL客戶端程式) • „ mysql-server (MySQL伺服器程式) • „ php (PHP 主程式含給 apache 使用的模組) • „ php-devel (PHP 的發展工具,這個與 PHP 外掛的加速軟體有關) • „ php-mysql (提供給 PHP 程式讀取 MySQL資料庫的模組) • P.20-11~12 請參閱書籍

  17. /etc/httpd/conf/httpd.conf (主要設定檔) • /etc/httpd/conf.d/*.conf (很多的額外參數檔,副檔名是 .conf) • /var/www/html/ 這就是我們 CentOS預設的 apache 『首頁』所在目錄啦!當你輸入『http://localhost』時所顯示的資料,就是放在這個目錄當中的首頁檔 (預設為 index.html)。 • /var/log/httpd/ 預設的Apache 登錄檔都放在這裡,對於流量比較大的網站來說,這個目錄要很小心,因為以鳥哥網站的流量來說,一個星期的登錄檔資料可以大到 700MBytes 至 1GBytes 左右,所以你務必要修改一下你的 logrotate讓登錄檔被壓縮,否則... • P.20-12~13 請參閱書籍

  18. 終於要來談一談如何設定 Apache 這個 httpd.conf設定檔了! • 舉例來說,如果你想要針對我們的首頁 /var/www/html/ 這個目錄提供一些額外的功能,那麼: • P.20-15 請參閱書籍

  19. 針對伺服器環境的設定項目 • P.20-16 請參閱書籍

  20. P.20-17 請參閱書籍

  21. 上面的 prefork及 worker 其實是兩個與伺服器連線資源有關的設定項目。預設的項目對於一般小型網站來說已經很夠用了,不過如果你的網站流量比較大時,或許可以修訂一下裡面的數值呢!這兩個模組都是用在提供使用者連線的資源 (process),設定的數量越大代表系統會啟動比較多的程序來提供 Apache 的服務,反應速度就比較快。簡單的說,這兩個模組的功能分類為: • 針對模組的功能分類來說: • worker 模組佔用的記憶體較小,對於流量較大的網站來說,是一個比較好的選擇。prefork雖然佔用較大的記憶體,不過速度與 worker 差異不大,並且 prefork記憶體使用設計較為優秀,可以在很多無法提供 debug 的平台上面進行自我除錯,所以,預設的模組就是 prefork這一個呢! • P.20-17 請參閱書籍

  22. 針對中文 big5 語系編碼的設定參數修改 • P.20-19 請參閱書籍

  23. 網頁首頁及目錄相關之權限設定 (DocumentRoot與 Directory) • P.20-20 請參閱書籍

  24. Options (目錄參數): • Indexes • FollowSymLinks • ExecCGI • Includes • MultiViews • AllowOverride (允許的覆寫參數功能) • ALL:全部的權限均可被覆寫; • „AuthConfig:僅有網頁認證 (帳號密碼) 可覆寫; • „Indexes:僅允許 Indexes 方面的覆寫; • „Limits:允許使用者利用 Allow, Deny 與 Order 管理可瀏覽的權限; • „None:不可覆寫,亦即讓 .htaccess檔案失效! • P.20-20~21 請參閱書籍

  25. Order, Allow, Deny (能否登入瀏覽的權限) • 決定此目錄是否可被 apache 的 PID 所瀏覽的權限設定啦!能否被瀏覽主要有兩種判定的方式: • „deny,allow:以 deny 優先處理,但沒有寫入規則的則預設為 allow 喔。 • „allow,deny:以 allow 為優先處理,但沒有寫入規則的則預設為 deny 喔。 • P.20-21 請參閱書籍

  26. 除了這些資料之外,跟網站資料相關性高的還有底下的幾個咚咚:除了這些資料之外,跟網站資料相關性高的還有底下的幾個咚咚: • P.20-22 請參閱書籍

  27. MySQL的基本設定 : • 啟動 MySQL (設定 MySQL root 密碼與新增 MysQL用戶帳號) • P.20-28 請參閱書籍

  28. 那麼如何針對 MySQL這個軟體內的 root 這個管理者設定他的密碼呢?你可以這樣做: • P.20-29 請參閱書籍

  29. 防火牆設定與 SELinux的規則放行 • 設定好了 LAMP 之後,開始要讓用戶端來連線啊!那麼如何放行呢?要放行哪些埠口?剛剛的 port 3306 要不要放行?這裡請注意,如果是小型的 WWW 網站,事實上,Apache 是連接本機的 MySQL,並沒有開放給外部的用戶來連接資料庫!因此,請不要將 3306 放行給網際網路連接,除非你真的知道你要給其他的伺服器讀取你的 MySQL喔!既然如此,當然只要開放 port 80 即可。 • P.20-31 請參閱書籍

  30. P.20-32 請參閱書籍

  31. Apache 伺服器的進階設定 • 啟動用戶的個人網站 (權限是重點) • P.20-34 請參閱書籍

  32. 個人首頁的 URL 以及目錄的權限、SELinux設定 • 現在假設我們要讓已經存在系統中的 student 這個帳號具有個人首頁,那就得要手動去建置所需要的目錄與檔案才行。現在請登入 student,並用該帳號建置底下的相關資訊: • 由於 CentOS預設的使用者家目錄權限是 drwx------ ,這個權限將無法讓 Apache 的程序瀏覽啊!所以你至少要讓你的家目錄權限成為 drwx--x--x 才行!這個很重要啊! • P.20-35 請參閱書籍

  33. 『理論上』就能夠看到你的個人首頁了。不過,可惜的是,我們的 SELinux並沒有放行個人首頁!所以,此時你會發現瀏覽器出現 『You don't have permission』的訊息!趕緊看一下你的 /var/log/messages,裡面應該會教你進行這項工作: • P.20-35 請參閱書籍

  34. 找不到網頁時的顯示訊息通知 • 如果你的 /var/www/html/cgi目錄底下沒有任何首頁檔案 (index.???) 時,那當使用者在網址列輸入『 http://your.hostname/cgi 』,請問結果會顯示出什麼呢?可能有兩個: • 如果你的 Options 裡面有設定 Indexes 的話,那麼該目錄下的所有檔案都會被列出來,提供類似 FTP 的連結頁面。 • 如果沒有指定 Indexes 的話,那麼錯誤訊息通知就會被顯示出來。 • P.20-37 請參閱書籍

  35. P.20-38 請參閱書籍

  36. 100-199:一些基本的訊息 • „200-299:用戶端的要求已成功的達成 • „300-399:Client 的需求需要其他額外的動作,例如 redirected 等等 • „400-499:Client 的要求沒有辦法完成(例如找不到網頁) • „500-599:主機的設定錯誤問題 • P.20-38 請參閱書籍

  37. P.20-39 請參閱書籍

  38. 瀏覽權限的設定動作 (order, limit) • Order deny,allow:以 deny 優先處理,但沒有寫入規則的則預設為 allow。常用於:拒絕所有,開放特定的條件; • Order allow,deny:以 allow 為優先處理,但沒有寫入規則的則預設為 deny。常用於:開放所有,拒絕特定的條件。 • 如果 allow 與 deny 的規則當中有重複的,則以預設的情況 (Order 的規範) 為主。 • P.20-39~40 請參閱書籍

  39. .htaccess與認證網頁設定 • 此時如果能夠使用密碼保護的方式,讓使用者可以輸入帳號/密碼即可取得瀏覽的權限的話,那用戶端就不用受到那個 order 的 Allow, deny 的限制啦!真好~呵呵!Apache 確實剛好有提供一個簡單的認證功能,讓我們可以輕鬆愉快的就設定好密碼保護的網頁呢! • P.20-43 請參閱書籍

  40. 建立受保護的目錄:既然我們是『按了某個連結進入某個目錄之後,才會出現對話視窗』,那麼首先當然就是要有那個設定為認證網頁的『目錄』囉!請注意,是要目錄才行喔! • 設定 Apache 所需參數:然後,在對話視窗中,既然我們需要輸入帳號與密碼,那麼自然就需要密碼檔囉!另外,雖然 Apache 有支援 LDAP 及 MySQL等等的認證機制,不過我們這裡並不討論其他的認證機制,完全使用 Apache 的預設功能而已,所以,底下我們會使用基本 (Basic) 的認證模式喔! • 建立密碼檔案:處理完基本的設定後,再來則是建立登入時所需要的帳號與密碼! • 最後,重新啟動 Apache 就 OK 啦! • P.20-44 請參閱書籍

  41. P.20-45 請參閱書籍

  42. 主設定檔 httpd.conf的修訂:你必需要在 httpd.conf這個主設定檔當中先以 AllowOverride指定某個目錄下的 .htaccess能夠進行取代的參數為何?一般有 AuthConfig, Options 等等,考慮到系統資料的安全,建議提供 AuthConfig的項目就好了。設定完畢後請重新啟動 Apache。 • „.htaccess放置的目錄:在受保護的目錄底下務必要存在 .htaccess這個檔案,透過這個檔案即可修改 httpd.conf內的設定啊! • „.htaccess的修改:.htaccess設定完『立刻生效』,不需要重新啟動 Apache,因為該檔案的內容是『當有用戶端瀏覽到該目錄時,該檔案才會被使用來取代原有的設定。 • P.20-45 請參閱書籍

  43. 1. 建立保護目錄的資料 • P.20-45 請參閱書籍

  44. 2.1 以 root 的身份處理 httpd.conf的設定資料 • P.20-46 請參閱書籍

  45. 2.2 建立保護目錄下的 .htaccess檔案:只要有權限建立者即可進行 • require:後面接可以使用的帳號。假如 /var/www/apache.passwd內有三個帳號,分別是 test, test1, test2 ,那我這裡只寫了 test ,因此 test1, test2 將無法登入此目錄。如果要讓該密碼檔內的使用者都能夠登入,就改成『require valid-user』即可啊! • P.20-46~47 請參閱書籍

  46. 3. 建立密碼檔案 htpasswd (只要有權限即可執行) • P.20-47 請參閱書籍

  47. 虛擬主機的設定 • 什麼是虛擬主機 (Virtual Host) • 所謂的虛擬主機,基本上就是『讓你的一部伺服器上面,有好多個 "主網頁" 存在,也就是說,硬體實際上只有一部主機,但是由網站網址上來看,則似乎有多部主機存在的樣子!』。舉個例子來說好了,鳥哥提供的網站主要有主要學習網站以及新手討論區,分別在底下的連結: • „ 主網站:http://linux.vbird.org • „ 討論區:http://phorum.vbird.org • P.20-48 請參閱書籍

  48. 架設的大前提:同一個 IP 有多個主機名稱啦! • 那麼要架設虛擬主機需要什麼咚咚呢?以剛剛鳥哥的網站的結果為例,我必需要有多個主機名稱對應到同一個 IP 去,所以說,你必需先擁有多個主機名稱才行。要如何擁有多個主機名稱?那就是: • 向 ISP 申請多個合法的主機名稱,而不自己架設 DNS; • „自行設定經過合法授權的 DNS 主機來設定自己所需要的主機名稱。 • 相關的 DNS 申請與設定技巧我們在前幾章都談過了,你可得自行去瞧瞧先! • P.20-49 請參閱書籍

  49. 一個架設範例練習: • P.20-49 請參閱書籍

  50. P.20-50 請參閱書籍

More Related