網頁知識
Knowledge

伺服器(Server)

  • 一個管理資源並為使用者提供服務的電腦軟體,通常分為檔案伺服器(能使使用者在其它電腦存取檔案),資料庫伺服器和應用程式伺服器。
  • 執行以上軟體的電腦。

定義

有時,這兩種定義會引起混淆,如Web伺服器。它可能是指用於網頁的電腦,也可能是指像Apache這樣的軟體,執行在這樣的電腦上以管理網頁元件和回應網頁瀏覽器的請求。

伺服器(電腦)

伺服器作為硬體來說,通常是指那些具有較高計算能力,能夠提供給多個使用者使用的電腦。伺服器與PC機的不同點很多,例如PC機在一個時刻通常只為一個使用者服務。伺服器與主機不同,主機是透過終端給使用者使用的,伺服器是透過網路給客戶端使用者使用的。

根據不同的計算能力,伺服器又分為工作群組級伺服器,部門級伺服器和企業級伺服器。伺服器作業系統是指執行在伺服器硬體上的作業系統。伺服器作業系統需要管理和充分利用伺服器硬體的計算能力並提供給伺服器硬體上的軟體使用。

現在,市場上有很多為伺服器作平台的操作系統。類Unix操作系統,由於是Unix的後代,大多都有較好的作伺服器平台的功能。常見的類Unix伺服器操作系統有AIX、HP-UX、IRIX、Linux、FreeBSD、Solaris、Mac OS X Server、OpenBSD、NetBSD、和SCO OpenServer。微軟也出版了Microsoft Windows伺服器版本,像早期的Windows NT Server,後來的Windows 2000 Server和Windows Server 2003,乃至現在的Windows Server 2012。

伺服器軟體

伺服器軟體的定義如前面所述,伺服器軟體工作在客戶端-伺服器或瀏覽器-伺服器的方式,有很多形式的伺服器,常用的包括:

  • 檔案伺服器(File Server) - 如Novell的NetWare
  • 資料庫伺服器(Database Server) - 如Oracle資料庫伺服器,MySQL,PostgreSQL,Microsoft SQL Server等
  • 郵件伺服器(Mail Server) - Sendmail,Postfix,Qmail,Microsoft Exchange,Lotus Domino等
  • 網頁伺服器(Web Server) - 如Apache,thttpd,微軟的IIS等
  • FTP伺服器(FTP Server) - Pureftpd,Proftpd,WU-ftpd,Serv-U等
  • 域名伺服器(DNS Server) - 如Bind9等
  • 應用程式伺服器(AP Server) - 如Bea公司的WebLogic,JBoss,Sun的GlassFish
  • 代理伺服器(Proxy Server) - 如Squid cache
  • 電腦名稱轉換伺服器 - 如微軟的WINS伺服器

DNS常見的記錄型態

  • A   對應主機名稱和其IP位址
  • CNAME    別名
  • TXT    純文字記錄,常用來作發信驗證或是網域驗證
  • NS   Name Server

網頁伺服器(Web Server)

網路伺服器一詞有三個意思:

  • 一台提供服務的電腦
  • 一台負責提供網頁的電腦,主要是HTML檔案,透過HTTP協定傳給客戶端(一般是指網頁瀏覽器)。
  • 一個提供網頁的伺服器程式。

每一台網頁伺服器(第2個意思)會執行最少一個網頁伺服器程式(第3個意思)。

現在市面上最普遍的網頁(HTTP)伺服器有:

  • Apache軟體基金會的Apache HTTP伺服器
  • Microsoft的Internet Information Server(IIS)
  • Google的Google Web Server
  • nginx公司的nginx
  • lighttpd公司的lighttpd

大陸地區稱為:網頁伺服器

一般功能

雖然每個網頁伺服器程式有多不同,但都有著一些共同的特點。每一個網頁伺服器程式從網路接受HTTP請求,然後提供HTTP回覆給請求者。HTTP回覆一般包含一個HTML檔案,但也可以包含一個純文字檔案、一個圖像或其他類型的檔案。

一般來說這些檔案都儲存在網頁伺服器的本地檔案系統裡,而URL和本地檔名都有一個階級組織結構的,伺服器會簡單的把URL對照到本地檔案系統中。當正確安裝和設置好網頁伺服器軟體,伺服器管理員會從伺服器軟體放置檔案的地方指定一個本地路徑名為根目錄。

例如,我們在example.funnycorp.com伺服器上設置了伺服器軟體,我們可以把伺服器軟體的根目錄設定為/home/public/web/,當一個瀏覽者輸入URLhttp://example.funnycorp.com/lips/raspberry.html,example.funnycorp.com上的伺服器軟體就會讀取/home/public/web/lips/raspberry.html這個檔案。

網域伺服器(DNS Server)

在電腦技術中,名稱伺服器(英語:name server或nameserver)是指提供域名服務協議的程式或伺服器。它可以將「人類可識別」的識別元,對映為系統內部通常為數位形式的標識碼。網域名稱系統(DNS)伺服器是最著名的名稱伺服器:域名是網際網路兩大主要名稱空間之一。

應用程式伺服器(AP Server)

應用程式伺服器是一種軟體框架,提供一個應用程式執行的環境。 這個名詞最初是用來討論主從式架構系統時,用來區分資料庫伺服器、檔案伺服器……等的不同。但現今常指能跑Web應用程式的Web伺服器。 Java

  • EJB
  • Java EE
  • 或是其它可以跑JSP的Web-Server

.Net Framework
Microsoft
通常指安裝過.Net Framework的Microsoft Windows Server的IIS
第三方套件

  • Mono
  • en:Base4
  • en:TNAPS Application Server
PHP
  • en:Zend Server
  • 或是其它可以跑PHP的Web-Server
使用應用服務器的優點
  • 資料與程式碼的完整性
  • 集中配置與管理
  • 安全性
  • 執行效能
  • 總擁有成本(TCO)
  • 可支援交易機制

認識網頁程式設計

網頁程式是指使用網頁程式語法互動式的網頁,一般又稱動態網頁,動態網頁是指網頁的內容是否可根據某種條件的改變而自動改變。

如計數器就是動態的,當有人點擊我們的網頁時,計數器的數值會自動累計增加;論壇也是動態的,當用戶在論壇上發佈訊息時,網頁內容會自動更新,顯示出新發佈的信息及相關回覆;等等。

需要注意的是GIF動畫和Flash動畫是靜態的。因為,這些動畫一旦製作完成後,就不會再改變了,儘管Flash動畫可以響應用戶的事件。

在WebServer端,有

  • PHP(Hypertext Preprocessor)
  • ASP(Active Server Pages)
  • ASP.NET
  • CGI(Common Gateway Interface,公用網關介面)
  • Perl(Practical Extraction and Report Language,文字分析報告語言)
  • JSP(Java Server Pages)等等。

在瀏覽器端,有

  • VBScript(Internet Explorer專用)
  • JavaScript
  • ActionScript(用於Flash)等等。

PHP(Hypertext Preprocessor)語法

PHP(PHP:Hypertext Preprocessor)是一種在電腦上執行的腳本語言,主要用途是在於處理動態網頁,也包含了命令列執行介面(command line interface),或者產生圖形使用者介面(GUI)程式。

PHP最早由丹麥人拉斯姆斯·勒多夫在1995年發明,而現在PHP的標準由PHP Group和開放原始碼社群維護。PHP以PHP License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放原始碼許可協議GPL不相容。

PHP的應用範圍相當廣泛,尤其是在網頁程式的開發上。一般來說PHP大多執行在網頁伺服器上,透過執行PHP程式碼來產生使用者瀏覽的網頁。PHP可以在多數的伺服器和作業系統上執行,而且使用PHP完全是免費的。根據2007年4月的統計資料,PHP已經被安裝在超過2000萬個網頁和100萬台伺服器上。

ASP語法(Active Server Pages)

動態伺服器網頁(Active Server Pages),由微軟公司開發的伺服器端執行的指令碼平台,它被Windows下Internet Information Services (IIS)的程式所管理。透過ActiveX server 的技術讓不同的使用者能有不同的畫面,或需要讓他們可以存取伺服器 (server)上的資料時,使用ASP3.0中提供了五個內建的物件建立類比和安全性的動態內容,來協助程式設計師隱藏複雜的溝通機制,讓程式設計師可以專注在解決問題和應用之上,這樣可以更快速地開發動態網頁的同時每一個元件都是可以由一組富有經驗的程式設計師根據動態網頁最常用的功能而獨立開發。

JavaScript語法

JavaScript是一種廣泛用於客戶端網頁開發的腳本語言,最常是於HTML上使用,用來給HTML網頁添加動態功能。然而JavaScript也被用於不同的介面上,如伺服器。它最初由網景公司的Brendan Eich設計,是一種動態、弱型別、基於原型的語言,內建支援型別。JavaScript是甲骨文公司的註冊商標。 Ecma國際以JavaScript為基礎制定了ECMAScript標準。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實作包含三個部分:ECMAScript,文件物件模型,瀏覽器物件模型。

Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是「看上去像Java」,因此語法上有類似之處,一些名稱和命名規範也借自Java。但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時網景為了行銷考慮與昇陽電腦達成協議的結果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲電腦製造商協會)建立了ECMA-262標準(ECMAScript)。現在兩者都屬於ECMAScript的實作。儘管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的程式語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。

Perl語法(Practical Extraction and Report Language,文字分析報告語言)

Perl是一種高階、通用、直譯式、動態的程式語言。最初設計者拉里·沃爾(Larry Wall)為了讓在UNIX上進行報表處理的工作變得更方便,決定開發一個通用的腳本語言,而在1987年12月18日發表。

Perl借取了C、sed、awk、shell指令碼以及很多其他程式語言的特性。其中最重要的特性是他內部整合了正規表式的功能,以及巨大的第三方代碼庫CPAN。目前拉里·沃爾已經開發Perl 6,來作為Perl的後繼;不過,Perl 6語言的語法有很多轉變,所以Perl 6被視為Perl家族中的另一個語言。

CGI語法(Common Gateway Interface,公用網關介面)

CGI可以指:

  • 共用閘道介面 (Common Gateway Interface),一個在Web伺服器中使用的技術。
  • 計算機圖形界面:一種位於圖形核心系統與硬體之間的低階介面。
  • 計算機模擬影像(computer graphic image):一種電影製造技術。
  • CGI.pm,a Perl module used for dealing with the Common Gateway Interface.
  • Corrugated galvanised iron,moulded sheet metal.
  • Consultative Group on Indonesia
  • Conseiller en Gestion et Informatique,the French initialism for Information Management Consultant
  • Cognitively Guided Instruction,中譯為「認知導向教學」,教育法的一種,透過暸解兒童思考數學的方法,以改善教學的模式。
  • Computer-generated imagery:使用電腦產生的影像。

JSP語法(Java Server Pages)

JSP(全稱JavaServer Pages)是由Sun Microsystems公司倡導和許多公司參與共同建立的一種使軟體開發者可以響應客戶端請求,而動態生成HTML、XML或其他格式文件的Web網頁的技術標準。JSP技術是以Java語言作為指令碼語言的,JSP網頁為整個伺服器端的Java庫單元提供了一個介面來服務於HTTP的應用程式。

JSP使Java代碼和特定的預定義動作可以嵌入到靜態頁面中。JSP句法增加了被稱為JSP動作的XML標籤,它們用來呼叫內建功能。另外,可以建立JSP標籤庫,然後像使用標準HTML或XML標籤一樣使用它們。標籤庫提供了一種和平台無關的擴充功能伺服器效能的方法。

JSP被JSP編譯器編譯成Java Servlets。一個JSP編譯器可以把JSP編譯成JAVA代碼寫的servlet然後再由JAVA編譯器來編譯成機器碼,也可以直接編譯成二進制碼。

IP位址

IP位址(英語:Internet Protocol Address)是一種在Internet上的給主機編址的方式,也稱為網際協議位址。常見的IP位址,分為IPv4與IPv6兩大類

域名

域名(英語:Domain Name),又稱網域、網域名稱,是由一串用點分隔的名字組成的Internet上某一台電腦或電腦組的名稱,用於在資料傳輸時標識電腦的電子方位(有時也指地理位置)。DNS(網域名稱系統,Domain Name System,有時也簡稱為域名)是網際網路的一項核心服務,它作為可以將域名和IP位址相互對映的一個分布式資料庫,能夠使人更方便的存取網際網路,而不用去記住能夠被機器直接讀取的IP位址數串。

例如,www.wikipedia.org作為一個域名,便和IP位址208.80.152.2相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打wikipedia的名字來代替電話號碼(IP位址)。DNS在我們直接呼叫網頁的名字以後就會將像www.wikipedia.org一樣便於人類使用的名字轉化成像208.80.152.2一樣便於機器識別的IP位址。

網域名稱系統 (DNS)

網域名稱系統(英文:Domain Name System,DNS)是網際網路的一項的服務,它作為可以將域名和IP位址相互對映的一個分布式資料庫,能夠使人更方便的存取網際網路。