歡迎您光臨本站 註冊首頁

自己做站長----LINUX伺服器架設篇之WWW

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++


如果您是一位Linux愛好者,您可能已經掌握了基本的Linux的知識與操作,毫無疑問,您並不會去滿足這樣小小的成就;Linux為何如此的流行?其最大的特點莫過於功能強大,性能穩定的伺服器應用了。像WWW,MAIL,FTP, DNS和SMB等;在本文中,我們從Web伺服器的一些最基本的操作入手,從初學者使用的態度,讓大家學會用linux假設一個自己的伺服器來使用.

1. 關於WWW和URL;


WWW是World Wide Web的縮寫,翻譯過來就是全球廣域網,它可以接合文字、圖形、影像及聲音等多媒體,並通過超文本(HyperText)的方式,將信息通過Internet傳遞到世界各處;
例如:在瀏覽器的地址欄上輸入「http://www.linuxsir.org」,就可以登錄的linuxsir的網站上瀏覽信息,其中「http://www.linuxsir.org」是URL(Uniform Resource Locator ,同一資源定位器),「www.linuxsir.org」是主機名稱,也就是DNS中的FQDN(Fully Qualified Domain Name,完全符合標準的域名),即主機名稱加上域名所得的一個獨一無二的Internet上面的名字。由於計算機僅識別網路中的IP,所以,linuxsir站的真實IP就是通過DNS解析www.linuxsir.org而找到的,然後經過www的協議將數據傳到你的眼前;


1.1 URL的格式;

<協議>://<主機地址>[:埠]/<目錄>


1.1.1 協議;

包括http,ftp,news,gopher和telnet幾種常見的協議。其中,http是利用「主機的http埠,通常為80埠」,ftp是利用「主機的ftp埠,通常為21埠」。注意:80和21都是主機所提供的服務,而不是客戶端的埠。

1.1.2 主機地址;

當輸入主機名(域名)時,必須要讓該主機名稱可以經由翻譯器得到對應的IP。翻譯器是/etc/hosts或者是/etc/resolv.conf裡面的設置對外提供正常的www伺服器時,主機名稱就必須要讓大家可以翻譯到IP,這就需要去申請一個合法的域名;

1.1.3 目錄;

也就是URI(Uniform Resource Indicator ,統一資源定位符),如果你要去的網站網頁在主頁所在目錄的下面,那麼你直接輸入目錄與網頁的名稱,就可以直接取得那個網頁的數據。若只輸入目錄與網頁的名稱,並沒有輸入網頁名稱,則伺服器端會自動地判斷(跟伺服器自己的設置有關),該目錄下是否有設置為默認的網頁名稱;

1.1.4 埠;

當連接某個網站時,輸入 「http://that.host.name」就會主動地利用埠80來嘗試連接對方的主機,但如果不想使用該埠呢。舉個例子來說,例如您的網站使用的是8080埠來進行www的服務,那麼除非您使用了防火牆進行埠對應,否則直接在地址欄輸入「http://your.host.name」結果將無法連接到你的www伺服器,因為它會主動連接到埠80,所以這裡就要告訴瀏覽器,向伺服器請求服務的是哪個埠。即寫成「http://your.host.name:8080」才可以連接到對方的埠8080;

2. www主機系統的類型;

大致上可以分兩種:

一種是Windows系統的IIS+MS的SQL+ASP WWW伺服器,這種www主機假設上比較容易,不過由於windows的某些特性,所以很容易被黑客所破壞;

另外一種則是Linux系統上的Apache+MySQL(PostgreSQL)+PHP的www伺服器(簡稱LAMP),這種伺服器架設上有一定程度的困難,尤其是在升級與維護方面,但是架設妥當的話,它的硬體要求、性能、安全性等方面,則相對較佳,下面我們就來主要介紹一下Apache的架設;


2.1 Apache的歷史與前景;

1995年,美國國家計算機安全協會(NCSA)的開發者創建了NCSZ全球網路服務軟體,其最大的特點是HTTP精靈程序,它比當時的CERN伺服器更容易由源碼來配置和創建,又由於當時其他伺服器軟體的缺乏,他很快流行起來。但是後來,該伺服器的核心開發人員幾乎都離開了NCSA,一些使用者們自己成立了一個組織來管理他們編寫的補丁,於是Apache Group應運而生。他們把該伺服器軟體稱為Apache。Apache源於A patchy server的讀音,意思是充滿補丁的伺服器。如今Apache慢慢地已經成為Internet上最流行的Web伺服器軟體了。在所有的Web伺服器軟體中,Apache佔據絕對優勢,遠遠領先排名第二的Microsoft IIS。如果你對它感興趣,你可以訪問Apache的官方網站:http://www.apache.org。Apache作為自由軟體之一,像其他自由軟體一樣,他們都是由許許多多的自由開發人員投入了大量的時間和精力來實現並逐步完善的,所以我們有理由相信Apache的發展前景會更好。

2.2 Apache 2的安裝;

軟體的安裝並不困難,您可以在www.apache.org上下載源碼包進行安裝,也可以使用各操作系統自帶的軟體包管理軟體進行安裝,如何下載安裝可以參考我以前發過的一篇帖子,那麼就可以在終端中輸入:


qiong@qiong-love:~$ sudo apt-get install apache2

不同的系統有自己的軟體包管理方式,其實都大同小異;

2.2.1 使用源代碼安裝;

(1) 獲得源代碼

qiong@qiong-love:~# lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz

NN表示當前所用的版本號

(2) 解壓縮


qiong@qiong-love:~# gzip -d httpd-2_0_NN.tar.gz

或者

qiong@qiong-love:~# tar xvf httpd-2_0_NN.tar

(3) 配置.

qiong@qiong-love:~httpd-2_0_NN# ./configure --prefix= /usr/local/apache

表示Apache將安裝在/usr/local/apache目錄下

(4) 編譯與安裝


qiong@qiong-love:~httpd-2_0_NN# make

qiong@qiong-love:~httpd-2_0_NN# make install

(5) 測試

qiong@qiong-love:~httpd-2_0_NN# /usr/local/apache/bin/apachectl start


3. Apache 2 的配置;

安裝完apache2后,可以在/etc/apache2/目錄下查看文件:


qiong@qiong-love:/etc/apache2$ ls -lh
總用量 35K
-rw-r--r-- 1 root root 24K 2007-01-16 02:10 apache2.conf
drwxr-xr-x 2 root root 104 2007-06-12 21:07 conf.d
-rw-r--r-- 1 root root 895 2007-01-16 02:11 envvars
-rw-r--r-- 1 root root 0 2007-05-17 17:34 httpd.conf
drwxr-xr-x 2 root root 2.5K 2007-07-18 08:43 mods-available
drwxr-xr-x 2 root root 608 2007-05-17 17:36 mods-enabled
-rw-r--r-- 1 root root 10 2007-05-17 17:34 ports.conf
drwxr-xr-x 2 root root 72 2007-05-19 16:47 sites-available
drwxr-xr-x 2 root root 80 2007-05-17 17:34 sites-enabled


3.1 apache2.conf;

Apache 2.0的主配置文件為apache2.conf; 我的配置文件保存在/etc/apache2/apache2.conf;
查看此文件會在第184行附近發現下面的內容:


# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing
Include /etc/apache2/ports.conf

# Include generic snippets of statements
Include /etc/apache2/conf.d/

可以看出apache2 根據配置功能的不同, 對配置文件進行了分割, 這樣更利於管理;


3.2 conf.d ;

下為配置文件的附加片斷,默認情況下, 僅提供了 charset 片斷,


qiong@qiong-love:/etc/apache2/conf.d$ cat charset
AddDefaultCharset UTF-8

如有需要我們可以將默認編碼修改為 GB2312, 即文件的內容為: AddDefaultCharset GB2312


3.3 httpd.conf ;

通常是一個空文件,以後設置時可以加入以下指令;

下面我們來看一下httpd.conf中的幾條指令,「#」后加入了註釋說明;


Port 80 #定義了web伺服器的偵聽埠,默認值為80,它是TCP網路埠之一。若寫入多個埠,以最後一個為準。

User apache #一般情況下,以nobody用戶和nobody組來運行web伺服器,因為web

Group apache # 伺服器發出的所有的進程都是以root用戶身份運行的,存在安全風險。

ServerAdmin root@localhost #指定伺服器管理員的E-mail地址。伺服器自動將錯誤報告到該地址。

ServerRoot /etc/httpd #伺服器的根目錄,一般情況下,所有的配置文件在該目錄下

ServerName new.host.name:80 #web客戶搜索的主機名稱

KeepAliveTimeout 15 #規定了連續請求之間等待15秒,若超過,則重新建立一條新的TCP連接

MaxKeepAliveRequests 100 #永久連接的HTTP請求數

MaxClients 150 #同一時間連接到伺服器上的客戶機總數

ErrorLog logs/error_log #用來指定錯誤日誌文件的名稱和路徑

PidFile run/httpd.pid #用來存放httpd進程號,以方便停止伺服器。

Timeout 300 #設置請求超時時間,若網速較慢則應把值設大。

DocumentRoot /var/www/html # 用來存放網頁文件


3.4 magic ;

文件中包含的是有關mod_mime_magic模塊的數據, 一般不需要修改它;


3.5 ports.conf ;

則為伺服器監聽IP和埠設置的配置文件,


qiong@qiong-love:/etc/apache2$ cat ports.conf
Listen 80


3.6 mods-available ;

目錄下是一些.conf和.load 文件, 為系統中可以使用的載入各種模塊的配置文件, 而mods-enabled目錄下則是指向這些配置文件的符號連接, 從配置文件apache2.conf 中可以看出, 系統通過mods-enabled目錄來載入模塊, 也就是說, 系統僅通過在此目錄下創建了符號連接的mods-available 目錄下的配置文件來載入模塊。同時系統還提供了兩個命令 a2enmod 和 a2dismod用於維護這些符號連接。這兩個命令由 apache2-common 包提供。命令各式也非常簡單: a2enmod [module] 或 a2dismod [module]


3.7 sites-available ;


目錄下為配置好的站點的配置文件, sites-enabled 目錄下則是指向這些配置文件的符號連接, 系統通過這些符號連接來起用站點 sites-enabled目錄下的符號連接附有一個數字前綴, 如000-default, 這個數字用於決定啟動順序, 數字越小, 啟動優先順序越高. 系統提供了兩個命令 a2ensite 和 a2dissite 用於維護這些符號連接。這兩個命令由 apache2-common 包提供;


3.8 /var/www ;

默認情況下將要發布的網頁文件應該置於/var/www目錄下,這一默認值可以同過主配置文件中的DocumnetRoot 選項修改


4. Apache的管理;



4.1 啟動和停止Apache;



root@qiong-love:/#/etc/init.d/apache2 start

root@qiong-love:/#/etc/init.d/apache2 stop


4.2 Apache的日誌文件;

Apache的日至文件主要包括訪問日誌和錯誤日誌。訪問日誌記錄了該伺服器所有的請求的過程,主要記錄的是客戶的信息,通過它我們可以知道什麼人訪問了該網站,什麼時候訪問的,訪問的內容是什麼等等。錯誤日誌則是記錄了伺服器出錯的細節和如何處理等。日誌文件的位置是由上述主配置文件httpd.conf來規定的。下面舉一個例子來說明它的格式:

一條錯誤信息:


[Mon sep 22 14:32:52 2003] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

下面我們來看看這個錯誤信息都表示什麼:

[Mon sep 22 14:32:52 2003] #錯誤發生的時間

[error] #表示錯誤的級別。有debug,info,notice,warn,error,crit,alert,emerg,這些級別由低到高表示了錯誤的嚴重性

[client 127.0.0.1] #表示客戶端IP地址

client denied by server configuration: /export/home/live/ap/htdocs/test #標是錯誤的具體信息

訪問日誌的寫法:


127.0.0.1 - qiong [22/sep/2007:13:55:36 -0800] "GET /apache_pb.gif HTTP/1.0" 200 2326


註:

127.0.0.1 #表示訪問這台伺服器的客戶端IP地址。

qiong #表示用戶的登錄名。

[22/sep/2003:13:55:36 -0800] #伺服器完成客戶端請求的時間,格式為[日/月/年:小時:分鐘:秒 時區]

"GET /apache_pb.gif HTTP/1.0" #表示客戶端訪問該資源所使用的方法

200 #記錄的是伺服器返回給客戶的狀態碼; 200表示成功,以4打頭的表示訪問出錯

2326 #表示發給客戶端的總位元組數。若是「—」表示沒有找到訪問資源

但在實際應用中,對於大型網站,日誌文件往往增長的很快,不利於我們查詢,降低伺服器的效率,而且佔用大量的磁碟空間,所以我們必須對日誌進行定期的維護;


5. 配置虛擬主機;

虛擬主機是在一台www伺服器上為多個單獨的域名提供www服務,每個域名具有自己的目錄和配置,相當於將一台主機分為多台主機,虛擬主機技術對於主機數量不足,但又想為不同的用戶提供獨立的Web服務的需求非常有效。而對於一個公司,利用價格昂貴的伺服器只提供一種域名服務,似乎是不明智的,而現在越來越多的公司喜歡在一台伺服器上使用多個域名服務,架設不同的網站,這樣做的好處是顯而易見。

Apache有兩種方式支持虛擬主機,一種是基於IP的虛擬主機,另一種是基於名字的虛擬主機。基於名字的虛擬主機使用相同的IP地址來配置不同的虛擬主機,這就彌補了因IP地址不足而帶來的問題。基於名字的虛擬主機的配置相當簡單,你只需配置你得DNS伺服器使每個主機名對應正確的IP地址,然後再配置 Apache HTTP Server使它能認識不同的主機名就可以了。

假設我們組建了一家多媒體製作公司,有一台Apache伺服器和一個IP地址:192.168.1.1 要運行兩種業務,一種為電子商務網站,域名為www.business.media.com ,另一種為教學網站,域名為www.teaching.media.com 。先在DNS伺服器中把域名www.business.media.com和www.teachin....conf就可以了。


NameVirtualHost 192.168.0.1


ServerName www.business.media.com
DocumentRoot /var/www/html/business



ServerName www.teaching.media.com
DocumentRoot /var/www/html/teaching


而基於IP的虛擬主機則要求使用不同的IP地址來區別不同的虛擬主機,這就要求使用多塊網卡,把不同的IP地址捆綁到不同的網卡上,或者在一塊網卡上捆綁多個IP地址。假設我們主機的IP地址為192.168.0.1(www.media.com),另外有兩個IP地址別:



ServerAdmin webmaster@ business.media.com
DocumentRoot /var/www/html/business
ServerName www.business.media.com
ErrorLog /var/www/html/business/logs/error_log
TransferLog /var/www/html/business/logs/access_log



ServerAdmin webmaster@teaching.media.com
DocumentRoot /var/www/html/teaching
ServerName www.teaching.media.com
ErrorLog /var/www/html/teaching/logs/error_log
TransferLog /var/www/html/teaching/logs/access_log



6. 配置Apache代理;

代理伺服器是網路信息服務的中轉站。如果我們把Apache代理伺服器形象地比喻成代理商的話,消費者向代理商購買東西時,如果代理商有的話,可直接賣給消費者,若沒有,則代理商向廠家進貨,再賣給消費者。
這樣做有以下幾點好處:

(1)提高了訪問速度;
(2)充當防火牆,增加了安全性;
(3)可以過濾一些不良網站;
(4)具有緩存功能;
(5)節省IP開銷;

代理伺服器可分為兩種類型:客戶端代理和伺服器端代理;

下面我們在講解幾個指令后舉例說明各自的配置方法;


ProxyRequest On/Off #啟用或者禁用Apache代理服務。
CacheRoot "/etc/httpd/proxy" #代理緩存的根目錄。
CacheSize 5 #代理緩存的大小。
CacheGcInterval 4 #設定運行管理緩存的無用數據搜集程序的時間間隔
CacheMaxExpire 24 #文件過期時間。
CacheDefaultExpire 1 #指定未包含過期信息文件的有效期。
NoCache a-domain.com another-domain.edu #該網站的文件將不被緩存。


6.1 客戶端代理的配置;

(1) 修改/etc/httpd/conf/httpd.conf中的相關指令
(2) 修改/etc/httpd/conf/httpd.conf,添加對代理目錄的訪問控制

Order deny,allow
Deny from all
Allow from .your-domain.com

(3) 重啟httpd


6.2 伺服器端代理的配置;

伺服器端代理與客戶端代理不同,它是在防火牆上安裝Apache伺服器,使用它提供對WWW伺服器的代理訪問。這種方法把WWW伺服器與外部隔開,提高了安全性,而對用戶來說,好像沒有變化一樣。假設在內部區域網中WWW伺服器的IP地址為192.168.0.2,防火牆主機內部IP地址為 192.168.0.5,外部IP地址為192.9.202.1。

6.2.1 配置防火牆上的Apache;

(1) 在/etc/httpd/conf/httpd.conf中添加虛擬主機。



ServerAdmin webmaster@business.media.com
DocumentRoot /www/docs/business.media.com
ServerName www.business.media.com
ErrorLog logs/business.media.com-error_log
CustomLog logs/business.media.com-log_common


(2) 配置區域網中的DNS伺服器,把www.business.media.com指向192.9.201.1。


6.2.2 配置區域網內部WWW伺服器;

在Linux環境下,有一個非常流行的代理伺服器軟體——Squid。他的功能非常的強大,支持HTTP,FTP,Gopher,SSL,和WAIS等協議的代理,而且設置簡單,只需再配置文件中稍稍改動就可以了;


7. 關於本文;

本文只是簡單的說了一下www伺服器的原理及簡單應用,沒有涉及到高級應用,主要是方便初學者,裡面的不足之處還請大家多指教;


8. 更新日誌;



9. 參考文檔;


《apache2 安裝與配置》


10. 相關文檔;

《apache2 安裝與配置》

[火星人 ] 自己做站長----LINUX伺服器架設篇之WWW已經有795次圍觀

http://coctec.com/docs/linux/show-post-201576.html