前言
目前全世界使用linux來架設的網站呈現爆炸性的成長,甚至已經影響到 microsoft的windows nt,之所以讓 linux 急速竄起的原因則是 linux 的 open source 精神與其系統的穩定效能。
linux 上一般最普遍采用的 web server 是名震江湖的apache,apache 是由一群玩家們所設計,是所謂的 open source software,也就是表示apache 是免費并且自由開放其原始的,它的設定簡單并且效能不錯,根據 http://www.netcraft.com/ 的統計,截至 1999 年
8 月的結果,apache 已經占有整個 web server 市場的 55%,領先 microsoft 的 22%。對於一個每天數萬瀏覽人次的中型網站來說,linux 與apache 的組合已經足以擔其重任。
概要說明
一個網站若是只有 web server 是沒有多大用處的,其後必定有許多大量的資料庫待呈 現給瀏覽者, 因此如何管理成堆的資料則是另一重點,所幸電腦專家們早在數十年前就已經發明了一種資料庫來儲存、 查詢、管理、分類大量資料,它就叫做關連式資料庫(relational database), 而使用者與關連式資料庫之間的溝通橋梁我們稱之為 sql 資料庫查詢語言(structured query language), 只要善用 sql 查詢語言,我們便可以輕松且快速地抓取出資料庫中我們想要的資料。 本次專欄我們將介紹一個相當適用於重量級應用場合的資料庫軟體 -- mysql。mysql 的執行速度相當的快,并且也放出了符合所謂 gpl 的版本。
有了 web server 與資料庫之後,我們還需要一個兩者之間的橋梁,讓網頁上瀏覽者的查詢命令能夠下達資料庫, 同時也讓資料庫的資料內容能夠放上網頁。在這個方面有許多工具可以作得到,像 java 就可以, 但是最廣為使用的便是 cgi,寫過 cgi 的讀者都知道設計 cgi 一向是件麻煩事,不但除錯不方便, 而且設計起來相當不直接,目前寫 cgi 最常見的語言是 c 語言以及 perl 語言。 最近這兩年中拜 windows nt 與 iis 之賜, microsoft 的 asp (active server page) 大行其道, 成為網頁設計的好工具,但是事實上 unix 的世界已然悄悄地產生了一個功能效率上都不輸、 甚至凌駕 asp 的新工具,它叫做 php (personal homepage),php 現在已經出現在許多大型網站, 成為網頁設計的最佳選擇。php 能夠取代原本 cgi 的功能,執行速度也相當快,并且能夠與幾乎所有的資料庫相連接。
以下我們便由淺入深地介紹如何以 linux + apache + php + mysql 來架設一個網站, 并兼談架站時會遇到的一些問題,在解說的過程中,我會以我所架設的 http://linuxfab.cx/ 作為實例解說,以方便讀者了解,以下就分項說明 :
domain name 的申請與 dns(domain name server) 的架設sql 查詢語言與關連式資料庫php 網頁設計語言這叁個部份,讓各位對如何以 linux + apache + php + mysql 來架設網站能夠有個最基本而整體性的了解。domain name 的申請與 dns 的架設一個網站當然要有一個名字,也就是所謂的 domain name,這一點我想每個人都應該知道的, 像是 www.chinatimes.com.tw 或是 www.nctu.edu.tw 等就是 domain name。 申請這樣在 .tw (臺灣) 之下的 domain 可以經由 hinet、seednet 或是經由 twnic 來申請, 若是申請以 .com、.org、.net 等這種國際性的 domain name 時,則必須在國外申請, 不過由於網際網路與信用卡的發達,現在已經出現很多可以直接在網路上申請 domain name, 并且以信用卡支付的服務,通常在一兩天之內便可以辦好,在這一點國內的申請就稍嫌煩瑣, 比不上國外的快速服務。以 linuxfab 為例,其 domain name 是 linuxfab.cx,.cx 是太平洋上的一個小島 □ christmas island 的網域,當初之所以申請這樣的網域最主要是因為它價格便宜, 并且可以在網路上申請以及使用信用卡支付費用,另外也不必接受身分檢查的繁復手續。 如果你想申請一個與眾不同的 domain name,那麼是可以考慮.cx 的。
申請了 domain name,之後,上游的 dns 會允許你自己的 dns 向其傳送 domain name資料,以 linuxfab 為例,上游的 dns 為 nic.cx,而 xxx.linuxfab.cx 的 domain name 便可以透過你所架設的 dns 來設定, 并且將其傳送給 nic.cx,讓你所設定的 domain name 能夠為別人所查詢到。domain name 的申請與 dns 的架設dns 的運作機制相當地有趣,我們以 abc.def.ghi 為例,往 abc 的方向稱之為下游, 往ghi 的方向稱之為上游,所以 abc.def.ghi 為 .def.ghi 的下游, 而 def.ghi 又為 .ghi 的下游,所以 .ghi 為 def.ghi 的上游,而 .def.ghi 又為 abc.def.ghi 的上游, 假設某個人所使用的domain name 為 jkl.mno.ghi,他想要查詢 abc.def.ghi 的 ip 時, 系統會詢問其本身的上游,也就是 .mno.ghi 的 dns,若找不到資料,則再向其上游詢問, 也就是 .ghi ,此時 .ghi的 dns 發現了 def.ghi 的資料,於是往其下游詢問, 也就是 def.ghi 的 dns,若沒有找
到資料,則再詢問其下游,也就是 abc.def.ghi, 不過此例中,def.ghi 的 dns 已經找到了所屬的 abc.def.ghi 的資料,於是開始沿著原路徑一路傳回。
在任何一臺 dns查詢到了 domain name 以及其對應的 ip 之後,會存入該 dns 的 cache(快取) 中,這樣下一次若是再遇到查詢該 domain name 時, 便可直接從 cache 中讀取,而不必重復同樣的漫長查詢動作了。omain name 的申請與 dns 的架設接下來該來介紹一下 dns 的設定,前面說過要管理自己網域以下的 domain name (以linuxfab來說便是 xxx.linuxfab.cx),必須自己設定 dns(domain name server),linux 上的dns 軟體是一個名為 named 的程式以及包含 named.boot、named.hosts 以及 named.ca 這幾個設定檔,只要先設定好設定檔之後, 再啟動(執行) named 程式即可。
named.boot 是用來設定 dns 所管轄的各個 domain name 所需的資料庫檔案, 一個 dns 可以管轄不同的網域,比如說我可以花錢買個 abc.cx 以及 def.cx 這兩個網域,然後讓上游的 dns 指向同一個 dns,不過一般來說,一個 dns 通常都管理一個網域。以linuxfab.cx 為例,named.boot 的內容為 :
directory /etc
primary linuxfab.cx named.hosts
primary 0.0.127.in-addr.arpa named.local
cache . named.ca
其中,第一行是表示資料庫設定檔所存放的目錄,第二行是指 .linuxfab.cx 網域下的domain name 所存放的檔案,第叁行我們暫時不管它,第四行是指 dns 的 cache 資料存放的檔案。omain name 的申請與 dns 的架設接下來重頭戲就是 named.hosts 的設定,以 linuxfab 為例,其內容如下 :
$origin linuxfab.cx.
@ in soa dns.linuxfab.cx. root.dns.linuxfab.cx. (
950710 ; serial
21600 ; refresh
7200 ; retry
3600000 ; expire
86400 ) ; minimum
in ns dns.linuxfab.cx.
localhost in a 127.0.0.1
dns in a 140.113.88.2
in hinfo "x86 pc" "linux"
www in a 140.113.88.7
in hinfo "x86 pc" "mitux svr4mp"
|
新聞熱點
疑難解答