?? www server安裝簡介--unix篇.txt
字號:
作者:孤獨求敗
日期:00-1-12 21:49:42
WWW SERVER安裝簡介--UNIX篇
本文將介紹UNIX SERVER的安裝。UNIX環境的SERVER較常見的是CERN與NCSA的程式。不過,由於後者曾發現在系統安全上有點問題(會被人侵入系統),而目前還沒有正式的補救版。所以筆者只打算介紹CERN的SERVER的安裝。
這兩種軟體安裝上都有個共同點,就是「簡單」。說不定你甚至會覺得太簡單了,沒有「挑戰性」。不過,安裝、架設SERVER只是旁枝末節的東東,沒甚麼大不了的方法。真正有挑戰性的,真正要注意的,其實應該是 SERVER 本身的所提供的資訊,SERVER 中資訊的整合整理,SERVER 的內容。筆者在這里所作的,就只是把一些看起來很了不起,其實沒甚麼的小方法整理出來,讓大家不須花那種不必要的時間於這種小節上,而可以把心思用在SERVER的充實。 :)
◇妖怪(Daemon)的誕生
UNIX 軟體的安裝往往要多一道自己編譯程式的過程 CERN 的架設也是要經過自行作編譯程式的過程 有些軟體的編譯頗麻煩 要注意許多東東 不過令人愉快的是 CERN 的編譯非常簡單
CERN的軟體的取得 可以抓
ftp://ftp.nccu.edu.tw/pub/www/server/unix/cern_3.0.tar.gz
這個檔是 CERN 的程式碼 函式庫和文件檔的集合檔 如果有須要 也可以抓同一個目錄下的各別檔案(請參考該目錄下00-INDEX檔)
抓回本軟體之後 用gzip解了再tar 開 tar 開後會建立一"WWW"的目錄 目錄中有一httpd_docs的目錄 存放html格式的相關文件檔 大家可以參考一下
進行compile 的步驟其實非常的簡單 只要下指令
% ./BUILD
由於CERN提供了"BUILD" 這樣的自動偵測的程式 所以下完了BUILD 的命令之後 就可以泡杯茶到一邊涼快 等系統自己compile 完了再回來:)
如果編譯過程沒有問題(一般應該不會有問題 筆者曾在SunOS 4.1.x, Solaris 2.x AIX 3.2.5.1的機器上就如此成功的編譯過) 那麼將在~/WWW/Daemon/下產生一與機器同名字的目錄 例如AIX 的機器叫"rs6000" Sun 4.1.X的機器叫Sun4等等 該目錄下有許多編譯後的東東 不過最主要的 是叫httpd 的東東(其實這是個symbolic link的檔案)這個就是所謂CERN的DAEMON了 (還有作map 用的htimage和作執行用的cgi* 不過本文不作這兩類功能的介紹 )
◇設定檔說明
是不是很簡單的就完成編譯呢 要架一個SERVER 單單只有編譯好的DAEMON是不夠的 最重要的 得要有作控制的設定檔(configure file) 如果要從無到有的編寫設定檔將是件可怕又討厭的事 幸虧 可愛的CERN隨軟體提供了數個可供參考的設定檔 這些設定檔就擺在~/WWW/server_root/config 之下 大家可以挑一個較合適自己的檔來修改 合并 以下筆者把較基本的options 稍作說明 大家湊合著看 當然 最好能夠把與本軟體同目錄的cern_httpd_guide.ps.gz抓回去研究 因為筆者所謂的「基本」的option只不過是要求讓一臺SERVER跑得起來的最少option
為了方便大家在設定檔上的挑選 下面稍微簡介各個檔案的主要作用
httpd.conf: 是個普通的設定檔 作一般用途用的
prot.conf : 有限制設定的設定檔 筆者對這東東沒有介紹的興趣 因為個人認為這 類services就是開放給大眾使用 除非有特殊須求 否則一般應該沒有 要設限的必要 我這東東是寫作一般用途 如果有特殊須求者 自己閱 讀一下document 就可以輕易的辦到了:)
proxy.conf: 沒有cache 的proxy 設定
caching.conf: 有cache 的proxy 設定
這兩個檔都提供"proxy" 這是甚麼東東呢 原來這東東是firewall的 東東(好像越釋解越多不懂的東東了:) 簡單來講 firewall是一個網 路 它沒有直接與外界溝通 而是先連接到某一個主機 然後再由那臺 主機與外界交流
一臺有proxy 設定的server(就叫proxy server) 如果client端(如一 般的browser: netscape, mosaic....)把proxy server設成它 那麼 client 端所發出的要求就會先送到這一臺server 然後再由這臺server 把要求送出去 所以 這對有firewall的網路是很重要的 因為這樣子 在firewall的世界才能運作
可是 對一般沒有設firewall的網路 設定proxy 也是頗有用的 不過 這個前提是要配合cache 如果一臺proxy cache server(嗯 就是有設 proxy, 有設cache的server) 當client 端發出要求時 那我們知道由 於proxy 所以client端的要求會先送到這臺server 而所謂的cache 我們簡單的把它想像成 以前所抓過的資料 都在server的hardisk上 存留一份 所以當server收到client端的要求 那就不急著往外把這個 要求送出去 而是先在hardisk 中找一找 找看有沒有人曾經作過同樣 的要求 hardisk中有沒有所要求的資料 有的話 就直接從server把資 料送給client 端 沒有的話 那才到外面 忍受龜速 含辛茹苦的把資 料抓回來 自己存一份 給client一份 (如下圖所示)
┌───┐ Request ┌───┐ 無cache資料
│client│─────→ │server│ ─────→外界
└───┘←有cache資料 └───┘ │
↑ ↑ │
└───────────┴─────────┘
所以 對一般使用者而言 如果把proxy cache server設在local 的網 路的話 那只要server中有資料 就可以用local 的速度抓remote的資 料 這對國內國外的網路而言 都會是件可以有效減少不必要的負荷的 設定:) 所以 只要是硬碟空間允許的話 請優先考慮proxy cache 的 功能
◇基本option
再一次強調 這里所介紹的 只是基本的option 只是讓一臺server能動的option 如果可以的話 最好能讀一讀前面提到的文件 那有較「高段」的option
△陽春SERVER的設定
1.ServerRoot /where/ever/server_root
主要與用WWW BROWSER 抓取到目錄時 將要顯示的icons的目錄有關 如果設定
ServerRoot /home/www
則default會抓/home/www下的叫"icons"這個目錄的*.xbm檔當顯示圖形
2.Port xxxx 設定要讓Daemon在那一個port上跑 如果有root的權限 一般人都設成
Port 80
如果作測試用 可以用其他的port 如: 8080, 8001等
3.UserId與GroupId
設定所跑的daemon是以那一個user和group 在運作 如果daemon不是由
root在跑 那當然沒有作用 例
UserId nobody
GroupId nogroup
4.Welcome file1.html
筆者認為 這是相當應該一提的option 這個option的default值有三
Welcome Welcome.html
Welcome welcome.html
Welcome index.html
大家平常在玩WWW 時 應該會發現 我們輸入一個http的URL 時 一般
上很少有輸入檔名的 例如 http://www.nccu.edu.tw/
^^^沒有檔名
其實 這就是這個option的貢獻 如果希望別人一連上我們的server就
default 讀取某個檔 那麼 我們可能可以
1.把這個檔的檔名改名字 改成上述三個之一
2.假設該檔叫"hup.html"(有人會這麼叫嗎)
在設定檔中加入一行 Welcome hup.html
5. Pass /* /local/Web/*
Pass是一個多功能的option
上面用法是其中的一個必要的設定 在設定data的root
如上是在說 在使用者的URL 搜尋開的root 是在我們server的
/local/Web開始搜尋 所以 在/local/Web目錄之前的資料是找
不到的 之後的才能被接觸到
不過 這個說法并不完全正確 因為如果有抓使用者的資料(即~user)
那根目錄是使用者下的特定目錄(這個下面會說明) 而不是受這個
Pass的限制
6. UserDir www
如果有使用者要自己建個home page 要處理自己的資訊 那他是否
要另外架臺server呢
當然不是 因為架server是會要占用系統不必要浪費的資源的(如硬碟
空間 daemon所占的記憶體等) 而且會因此影響server的
performance
有了這一個option 那麼使用者可以很愉快的在自己帳號下 「輕輕」
的建個由UserDir 所指定的目錄 如上面的目錄是 www 例如 hup
這個user愿意把資料分享出去 那hup 可以建個~/www 的目錄 把資
料擺進去就可以了(復習一下 那home page名要叫甚麼呢 不知道嗎
就看Welcome 怎麼設羅)
有一點要注意的是 目錄的mode是要UserID的那個user可以讀與執行的
7. ServerType Inetd 或
ServerType Standalone
讓Daemon以怎麼樣的方式執行就是這個option設定
Standalone是表示 直接執行httpd 這個程式 讓這個程式直接
Listen某一個Port 這一種方法的好處是 快 由於這個種式自己直接
的處理自己所要的要求 一收到要求 由於已經在記憶體中了 所以
可以直接處理 不過 缺點也不見沒有 很明顯的 就是占用記憶體
另一方面 在某些機器 系統 也可能發生Daemon死去的問題 所以
要用Standalone的方式執行的話 那先評估一下自己配備的情形
Inetd 是另一種可以考慮的方法 不過 這稍微要改多一些東東
簡單來講 inetd 是個超級的daemon 它所作的事情 就只是負責處理
與我們機器連接的要求 如果是它所負責的服務 那inetd 會執行該服
務真正運作的daemon
這種方式執行httpd 的優點是 節省記憶體 而且 只要inetd 不死
那麼各個服務都能愉快的進行 不過 缺點是 比較慢 因此inetd 還
要把負責該服務的daemon(如httpd) 執行起來才行
方法是
a.在/etc/services 中加入這麼一行
http 80/tcp www
表示port 80 是叫"http"的服務 而且這個服務又叫"www"
如果services有上yp 請重作yp 如 cd /var/yp; make
b.在/etc/inetd.conf中加入這麼一行
http stream tcp nowait nobody /usr/local/bin/httpd httpd
^^^1. ^^^^2. ^^^^^^^^^^^^^^^^^^^3.
1.在services所注冊的名字
2.用甚麼使用者在跑httpd
3.httpd 的所在 如我把它擺在/usr/local/bin/httpd
c.kill -HUP
好了 講到這里 這種接近陽春型的server應該可以跑了:)
不過 前面筆者說過 如果硬碟允許的話 希望大家都能夠裝proxy cache
下面筆者再介紹如果要設proxy cache server 那麼應該再增加那些設定
△proxy cache server的設定
1.Caching on 這應該不用解釋吧
2.CacheRoot /my/cache/dir
我們要把資料Cache 在那里 這個目錄必須是httpd 的running ID所能
寫的 有設這東東就會把Caching 的default設on
3.CacheSize xx M
設多大的Cache 如"CacheSize 200 M"
4.NoCaching protocol://some.hosts//*
protocol可能是http, gopher, ftp, wais, news等
這是設定那些地方的資料不作cache 例如我們設定"*.tw"(國內)的
就不作cache
NoCaching http://*.tw/*
NoCaching http://140.*/*
而
NoCaching ftp://140.119.*/* <--不把140.119.*的ftp
資料作cache
*.xx.yy是表示以.xx.yy結尾的機器hostname
123.456.*是表示以123.456.開頭的ip
這個option用在抓取與我們連接速率快的機器頗有用的 由於對方與
我們連接速率快 所以就不必在我們機器上留份資料了 以免浪費空
間:)
5.CacheClean protocol:* how-long
設定我們Cache 的資料最久能存多久 例如
CacheClean http:* 1 month <--http的資料最長存一個月
CacheClean ftp:* 14 days <--ftp 的資料14天後就清掉
CacheClean gopher:* 5 days 12 hours <--gopher資料用5天半
6.CacheUnused * 4 days 12 hours
CacheUnused http://some.server/* 7 days
CacheUnused ftp://some.hosts/* 14 days
三個取自document的例子 這個設定是設多久沒用的檔案就清掉
7.CacheLimit_1 200 K
CacheLimit_2 4000 K
上面是這兩個options 的default值
CacheLimit_1是設定最小要多少我們的系統才作cache 預設值是200 K
CacheLimit_1是設定最大只cache 到多大的檔案 預設值是4 MB
所以小於200K或大過4MB 的資料是不作cache 的
我們可以改這預設值 例如我想把所有的資料都cache
CacheLimit_1 0 K
CacheLimit_2 40000 K
(再小我也cache 40MB以內的我也照收)
8.Pass http:*
Pass ftp:*
Pass gopher:*
設定那些protocol的資料要作proxy 如果只設
Pass http:*
那麼就只有http的資料會作proxy 所以要作proxy cache的protocol就
請都Pass過去:)
◇結論
這也不算甚麼結不結論的 只是 寫到最後 總是令人快樂的一件事:)
www server架設的介紹就介紹到這里 希望大家能夠同意架設一臺www server真的是件小case 打個哈欠就架好了:)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -