前言   有同事已經(jīng)通過艱苦的工作完成了長(zhǎng)達(dá)好幾百頁(yè)的關(guān)于Linux的文檔。事實(shí)上,在網(wǎng)上還有超過好幾萬(wàn)頁(yè)的各種關(guān)于Linux的技術(shù)精華,還不包括英文的。有數(shù)萬(wàn)程序員和網(wǎng)絡(luò)專家在為這個(gè)軟件努力工作。這就是自由的魅力。   我使用Linux有不少時(shí)間了,期間也經(jīng)歷過無(wú)數(shù)的挫折,同時(shí)也得到過很多高手的幫助。我一向喜歡言簡(jiǎn)意賅的文字。通過下面的簡(jiǎn)單句子和代碼,我希望能夠表達(dá)出我使用Linux的體會(huì)。也許本文的結(jié)構(gòu)比較凌亂,但我希望它的每一句話都是對(duì)你有用的。當(dāng)然,你要知道一些更詳細(xì)的東西,請(qǐng)參閱我同事寫的文檔。   當(dāng)然,能夠通過查閱這個(gè)文檔,使你的工作順利是我最大的心愿。 一、關(guān)于Linux的誤區(qū)   1、Linux干什么用?   首先,很少有人用Linux做桌面系統(tǒng),因?yàn)閃indows桌面系統(tǒng)已經(jīng)足夠好了。我們主要把Linux用作網(wǎng)絡(luò)服務(wù)器的操作系統(tǒng)。如果你和你的應(yīng)用符合下面的幾條,那么你合適使用Linux:   *不愿意花錢在操作系統(tǒng)和網(wǎng)絡(luò)應(yīng)用上。   *用D版系統(tǒng)受良心譴責(zé)或害怕承擔(dān)責(zé)任。   *想得到和花錢的系統(tǒng)差不多的性能。   *在用戶面前顯得水平較高。   *認(rèn)識(shí)幾個(gè)弄Linux的高手,或者知道在哪里能夠找到問題答案。   2、每種Linux發(fā)行包差別很多嗎?   如果你在上世紀(jì)80年代末到95年之前這段時(shí)間大量使用PC機(jī)的話,那對(duì)于Linux你應(yīng)該很好理解:它就象一個(gè)有著32位搶先多任務(wù)核心的DOS,其區(qū)別在于外表看起來像是一種UNIX。Linux是好多人用智慧堆砌起來的,初學(xué)者經(jīng)常問:“RedHat好還是Slackware好?”。這個(gè)人同時(shí)還面臨上百種選擇,這的確讓人頭痛。大部分Linux發(fā)行包實(shí)際上很簡(jiǎn)單,幾乎所有的發(fā)行包都有相同的內(nèi)核(也許是不同版本),外部命令和數(shù)據(jù)文件的差別也僅僅局限于在文件系統(tǒng)中的存放位置不同(這導(dǎo)致了某些兼容性問題,因?yàn)樵谀承┑胤秸也坏教囟ǖ奈募铮?。另外就是有些發(fā)行包為了顯示自己的卓而不群,在發(fā)行包中增加了一些自己的實(shí)用程序。實(shí)際上動(dòng)手修改內(nèi)核的廠商不算太多,因?yàn)檫@樣會(huì)內(nèi)核官方版本的不斷更新而手忙腳亂。當(dāng)然有一些嵌入式系統(tǒng)開發(fā)商在Linux基礎(chǔ)上做了自己的系統(tǒng)另說。   擁有眾多的發(fā)行包是Linux的一個(gè)很討厭的問題,在這一點(diǎn)上,我更喜歡FreeBSD,因?yàn)樗挥幸粋€(gè)官方發(fā)行版本,也運(yùn)行得比較穩(wěn)定??山oLinux做軟件的程序員太多了,Linux上面的資料也更多。記?。寒?dāng)一個(gè)家伙跟你說用哪個(gè)發(fā)行版本無(wú)所謂的時(shí)候,那他就是專家。   3、Linux業(yè)余愛好者的東西嗎?   這樣的宣傳給了很多人這樣的印象。其實(shí),Linux是一個(gè)嚴(yán)肅的操作系統(tǒng),擁有一切操作系統(tǒng)共有的特性。它可以用在很多嚴(yán)肅的場(chǎng)合。   4、Linux性能比Windows更好嗎?   這里的答案會(huì)讓你失望,據(jù)我以往的實(shí)際測(cè)試,2.2版本的Linux核心的性能比windows2000要低。值得欣慰的是2.4版本的核心性能有大幅度提高基本上接近了Windows2000。但Windows2000復(fù)雜的圖形界面占用了相當(dāng)?shù)南到y(tǒng)資源。   5、Linux比Windows更復(fù)雜更專業(yè)嗎?   從復(fù)雜度上說,Windows2000要比Linux復(fù)雜很多。在核心技術(shù)上,Windows也更先進(jìn)。   6、Linux更可靠嗎?   應(yīng)該從兩個(gè)角度評(píng)價(jià)系統(tǒng)的可靠性。(1)系統(tǒng)自身的可靠性,兩者象差不多。人們普遍認(rèn)為的Windwos不如Linux可靠的印象來源于Windows眾多的良莠不齊的軟件。當(dāng)然,Linux比Windows結(jié)構(gòu)簡(jiǎn)單,在一定程度上也可以提高可靠性。(2)從安全性角度來說,Linux遠(yuǎn)遠(yuǎn)高于Windows系統(tǒng),道理很簡(jiǎn)單:樹大招風(fēng)嘛。另外,Linux的源代碼開放機(jī)制使得漏洞發(fā)現(xiàn)和消滅得很快。而Windows相對(duì)就顯得比較官僚了。這里補(bǔ)充一點(diǎn),我用過的最可靠的系統(tǒng)是BSD類的OS,可靠性和安全性都可圈可點(diǎn)。   7、Linux真的不用花一分錢嗎?   大部分的發(fā)行包需要花少量的錢購(gòu)買。當(dāng)然你也可以從網(wǎng)絡(luò)上DOWN。其實(shí)這些發(fā)行包未必符合你的應(yīng)用,一般都需要經(jīng)過一些改動(dòng)和定制才能運(yùn)行好。當(dāng)然,花的錢跟Windows沒法比。 二、Linux安裝注意事項(xiàng)   現(xiàn)在的大部分發(fā)行包都很容易安裝,基本上都是圖形向?qū)降?,每個(gè)發(fā)行包都不太相同,也無(wú)法一一描述,如果你連安裝都不明白,那就別用Linux了。這里僅僅說明幾個(gè)注意的問題。   1、如果要和Windows混裝,一定要先裝Windows,后裝Linux。   2、分區(qū)的時(shí)候,根據(jù)計(jì)劃安裝的軟件靈活決定分區(qū)。一般分區(qū)有:/,/root,/usr,/var和swap分區(qū),其中swap分區(qū)類型和其他不同需要專門選擇一下,它的空間一般是物理內(nèi)存的兩倍即可。/root分區(qū)是緊急情況root用的,有64兆就行了。   3、當(dāng)然,為了方便,你可以安裝發(fā)行包給你做好的軟件。但我安裝Linux的習(xí)慣做法是開始就安裝一個(gè)最小系統(tǒng),然后安裝所有的編譯工具。安裝編譯工具的方法一般都通過你用的發(fā)行包的包管理工具實(shí)現(xiàn),這樣最方便。比如在TurboLinux中,運(yùn)行/usr/sbin/Turbopkg就可以了。在管理工具中選擇所有關(guān)于Developoment相關(guān)的選項(xiàng)或gcc相關(guān)選項(xiàng),一般就可以了。   4、lilo一定要裝。否則一旦出現(xiàn)分區(qū)問題都不好辦。   5、如果和Windows混裝的時(shí)候,裝完了系統(tǒng)起不來了。可以用98啟動(dòng)盤啟動(dòng),然后用FDISK /MBR回復(fù)主引導(dǎo)分區(qū)來保住Windows分區(qū)。   在安裝了最小系統(tǒng)和全套的編譯器后,我們應(yīng)該得到一個(gè)比較干凈的系統(tǒng)。在這個(gè)系統(tǒng)上,可以下載和安裝各種應(yīng)用軟件了。 三、基本使用   1、文件系統(tǒng)   無(wú)論有多少個(gè)分區(qū),整個(gè)文件系統(tǒng)都是一棵完整的樹結(jié)構(gòu)。經(jīng)常用到的目錄有:   (1)/usr:存放各種應(yīng)用程序文件用。其中的/usr/local用來存放后安裝的軟件   (2)/var:用來存放所有的數(shù)據(jù)文件   (3)/proc:里面的文件用來表示系統(tǒng)內(nèi)核的各種配置和狀態(tài)。這一塊不是真正的文件系統(tǒng),而是內(nèi)存里面的各種數(shù)據(jù)。可以從這里得到一些常用的系統(tǒng)信息。比如CPU內(nèi)存什么的。   (4)/etc:這里是放置所有的系統(tǒng)配置文件。一般情況下,后安裝的軟件的配置文件不會(huì)放到這里。除非你是用RPM安裝的隨發(fā)行包配的軟件或者故意這樣做。我不喜歡把不同軟件的文件混在一起,因此通常讓不同的軟件的配置文件放在各自的目錄中。   2、常用的命令   這里我列出一些經(jīng)常用的命令,具體的用法可以參見相關(guān)手冊(cè)頁(yè)(希望你的英文不象我這么差)。   vi(一定要會(huì)用這個(gè)你非常討厭的東西,如果你屈服了,可以選擇另一個(gè)叫做pico的編輯器,它有點(diǎn)象DOS的edit)   head(用來看很長(zhǎng)的文件用)   tail(同上)   netstat(看網(wǎng)絡(luò)狀態(tài))   tar(解開.tar.gz的壓縮包)   ps(察看進(jìn)程)   kill(干掉進(jìn)程)   top(看系統(tǒng)狀況)   shutdown(關(guān)閉系統(tǒng))   cat(看文件內(nèi)容)   ping (看網(wǎng)絡(luò)連通狀況)   ftp(傳輸文件)   man(手冊(cè))   上面這些命令都是最最常用的,一定要把基本用法記牢。事實(shí)上,每人能記住全部命令或一個(gè)命令的全部參數(shù),記住幾個(gè)常用的就行了。其他的查書。   3、內(nèi)核升級(jí)   如果你不愿意冒險(xiǎn),可以跳過這個(gè)部分。不過根據(jù)我實(shí)際使用的經(jīng)驗(yàn),2.4.x版本的內(nèi)核性能比2.2.x的性能至少提高40%,還是很值得一試的。現(xiàn)在最新的發(fā)行包幾乎都帶有新的2.4內(nèi)核,但是版本號(hào)想對(duì)保守。這里,我的建議是在決定升級(jí)任何部分的時(shí)候,一定要首先看一下所謂的“currect version release note”信息,里面告訴你本次版本升級(jí)都有些什么改動(dòng)。如果改動(dòng)的內(nèi)容不涉及你當(dāng)前的環(huán)境或需求,只是增加了一些邪門設(shè)備的驅(qū)動(dòng),你大可不必急著升級(jí)。補(bǔ)充一句話:Linux的內(nèi)核版本號(hào)的中間一位是奇數(shù)的是非穩(wěn)定版本,比如2.3,是偶數(shù)的才是穩(wěn)定版本。   升級(jí)內(nèi)核的步驟如下:   (1)首先在網(wǎng)上找到你打算升級(jí)的內(nèi)核文件,一般名字是:linux-2.x.xx.tar.gz,把這個(gè)文件復(fù)制到/usr/src。(不知道在哪里找?看看:http://www.kernel.org ,最好找到.tar.gz格式的,比如這里:http://www.kernel.org/pub/linux/kernel/v2.x/)。下面的升級(jí)舉例是從2.2.18升級(jí)到2.5.7(這是最新的內(nèi)核了,你使用其它的版本別忘了改變版本號(hào))   (2)解壓縮:tar zxvf linux-2.5.7.tar.gz后生成一個(gè)目錄:linux-2.5.7。   (3)進(jìn)入/usr/src,用ls –l 命令可以看到src里面有一個(gè)連接,類似于:linux -> linux-2.2.18/ (連接指向你當(dāng)前用的內(nèi)核版本)。首先刪除這個(gè)連接(rm linux),用ln -s linux-2.5.7 linux 命令重建連接。我想你一定不會(huì)連這里的版本號(hào)都照抄吧?   (4)進(jìn)入linux-2.5.7 目錄,如果不是第一次編譯這個(gè)內(nèi)核,最好用命令:make mrproper 刪掉上次編譯產(chǎn)生的.o文件等,當(dāng)然以前保存的配置也丟了。   (5)用命令:make menuconfig命令調(diào)整內(nèi)核配置以適應(yīng)你目前的環(huán)境,記住,不懂的配置不要亂動(dòng)。首要任務(wù)是調(diào)整各種硬件的環(huán)境,比如SCSI卡:SCSI support/SCSI low-level drivers,不知道現(xiàn)在的SCSI卡型號(hào)?在/proc/scsi中可以找到。還有網(wǎng)卡,在Network Device Support 里面。不知道現(xiàn)在的網(wǎng)卡型號(hào)?在這個(gè)文件里面寫著呢:/proc/net/PRO_LAN_Adapters/eth0.info或/proc/pci文件中也可以找到 。在menuconfig中用空格鍵改變選項(xiàng)狀態(tài),前面的<*>表示該功能編譯在內(nèi)核中,主要是運(yùn)行速度快。< >表示不需要該功能。表示把該功能編譯成模塊,通常為了減小尺寸,和更換方便而把某些驅(qū)動(dòng)編譯成模塊。   (6)下面的事情比較程序化,照著做:make dep (檢查文件的完整性,過程很復(fù)雜)   (7)make bzImage 注意大小寫(真正開始編譯了耶!我覺著這個(gè)最過癮了,屏幕“嘩啦嘩啦”的,這時(shí)候你會(huì)感覺到,多少不知名的程序員在這個(gè)復(fù)雜的系統(tǒng)中貢獻(xiàn)了自己的一份力量)   (8)make modules (編譯那些被標(biāo)記為的功能模塊或驅(qū)動(dòng)程序)   (9)make modules_install(把編譯好的模塊復(fù)制到指定地點(diǎn),一般是:/lib/modules/ 。注意:不同版本號(hào)的模塊是完全分開在不同目錄中的,因?yàn)閙odules跟內(nèi)核是緊密相關(guān)的,混用容易導(dǎo)致系統(tǒng)崩潰)   (10)cd /usr/src/linux-2.5.7/arch/i386/boot ,用命令:cp /usr/src/linux2.5.7/arch/i386/boot/bzImage /boot/vmlinuz-2.5.7 把文件bzImage文件改名成vmlinuz-2.5.7復(fù)制到/boot/   (11)cp /usr/src/linux-2.5.7/System.map /boot/System.map-2.5.7   (12)進(jìn)入/boot目錄,rm System.map   (13)在/boot目錄中運(yùn)行l(wèi)n System.map-2.5.7 System.map 10-13兩個(gè)步驟每次重新編譯都要做。   (14)我開始提醒過的,但愿你安裝了lilo (否則你就高唱:“神啊,救救我吧!”),編輯文件:/etc/lilo.conf ,做下面的編輯:   boot=/dev/sda   map=/boot/map   install=/boot/boot.b   prompt   timeout=50   lba32   default=linux-2.5.7   image=/boot/vmlinuz label=linux initrd=/boot/initrd read-only root=/dev/sda5   image=/boot/vmlinuz-2.5.7 label=linux-2.5.7 initrd=/boot/initrd read-only root=/dev/sda5   黑體字部分是后加的和修改的。萬(wàn)一你沒有安裝lilo,你只能修改/boot下面的連接指向你新的System.map和vmlinuz , 而不用修改lilo了。這樣也能啟動(dòng),但是一旦出現(xiàn)問題,你的機(jī)器就啟動(dòng)不了了。   (15)執(zhí)行命令:lilo (用來更新lilo數(shù)據(jù)),注意輸出的結(jié)果:帶星號(hào)的是缺省的。   (16)祈禱,然后reboot 系統(tǒng)重新啟動(dòng)后,用uname –a 可看到新的內(nèi)核起作用了。如果出現(xiàn)任何問題不能引導(dǎo)了,你需要在lilo的引導(dǎo)界面選擇原來的內(nèi)核啟動(dòng),進(jìn)入系統(tǒng)后重新改變內(nèi)核參數(shù),調(diào)整硬件或其他配置。然后重復(fù)前面所有過程。 【發(fā)表回復(fù)】【查看論壇原帖】【添加到收藏夾】【關(guān)閉】 -------------------------------------------------------------------------------- lsw 回復(fù)于:2002-12-23 11:39:14 四、主要的軟件安裝  前面說過,我的習(xí)慣是,裝系統(tǒng)的時(shí)候就安裝一個(gè)內(nèi)核和編譯系統(tǒng),得到了一個(gè)干凈的系統(tǒng)后,再安裝其他的軟件就比較清晰。另一點(diǎn),除非搞不到源代碼版本,一般情況下我都會(huì)下載官方版本的源代碼文件,來重新編譯之。同樣的,選擇軟件版本要根據(jù)該軟件的Release Note來決定,并非越新越好。這就是為什么很多軟件都是幾個(gè)版本齊頭并進(jìn)的發(fā)展之原因。這些軟件不同版本之間的安裝方法會(huì)有少許不同,安裝前一定要仔細(xì)閱讀目錄中的README文件和INSTALL文件,否則這些少許不同會(huì)造成不少得麻煩。下面描述的安裝過程都核版本號(hào)緊密相關(guān)。另外,所有的軟件都把程序文件的包拷貝到/usr/local/src目錄中再解壓縮,這是習(xí)慣。因?yàn)樵贚inux中習(xí)慣于把后來的軟件裝在/usr/local中。   (1)安裝DNS服務(wù)器   1、從www.isc.org下載bind 域名服務(wù)器軟件。我們這里用的是bind8.3.0,bind8分支和bind9分支是并行發(fā)展的。根據(jù)自己的實(shí)際情況選擇合適的bind版本。   2、mkdir /usr/src/bind83   3、下載的文件叫bind-src.tar.gz,復(fù)制到/usr/local/src/bind83目錄下。   4、cd /usr/local/src/bind83   5、tar zxvf bind-src.tar.gz   6、cd src   7、make stdlinks   8、make clean   9、make depend   10、make all   11、make install   12、編輯配置文件:/etc/named.conf內(nèi)容如下,需要更改的部分用黑體標(biāo)出:   /*    * This is a worthless, nonrunnable example of a named.conf file that has    * every conceivable syntax element in use. We use it to test the parser.    * It could also be used as a conceptual template for users of new features.    */   /*    * C-style comments are OK    */   // So are C++-style comments   # So are shell-style comments   // watch out for ";" -- it‘s important!   options { directory "/var/named";       // use current directory named-xfer "/usr/libexec/named-xfer";       // _PATH_XFER dump-file "named_dump.db";       // _PATH_DUMPFILE pid-file "/var/run/named.pid";       // _PATH_PIDFILE statistics-file "named.stats";       // _PATH_STATS memstatistics-file "named.memstats";       // _PATH_MEMSTATS check-names master fail; check-names slave warn; check-names response ignore; host-statistics no; deallocate-on-exit no;       // Painstakingly deallocate all       // objects when exiting instead of       // letting the OS clean up for us.       // Useful a memory leak is suspected. // Final statistics are written to the // memstatistics-file. datasize default; stacksize default; coresize default; files unlimited; recursion yes; fetch-glue yes; fake-iquery no; notify yes;      // send NOTIFY messages. You can set // notify on a zone-by-zone // basis in the "zone" statement // see (below) serial-queries 4;      // number of parallel SOA queries // we can have outstanding for master // zone change testing purposes auth-nxdomain yes; // always set AA on NXDOMAIN. // don‘t set this to ‘no‘ unless // you know what you‘re doing -- older // servers won‘t like it. multiple-cnames no;    // if yes, then a name my have more // than one CNAME RR. This use // is non-standard and is not // recommended, but it is available // because previous releases supported // it and it was used by large sites // for load balancing. allow-query { any; }; allow-transfer { any; }; transfers-in 10;      // DEFAULT_XFERS_RUNNING, cannot be    // set > than MAX_XFERS_RUNNING (20) transfers-per-ns 2; // DEFAULT_XFERS_PER_NS transfers-out 0; // not implemented max-transfer-time-in 120; // MAX_XFER_TIME; the default number // of minutes an inbound zone transfer // may run. May be set on a per-zone // basis. transfer-format one-answer; query-source address * port *;   /* * The "forward" option is only meaningful if you‘ve defined * forwarders. "first" gives the normal BIND * forwarding behavior, i.e. ask the forwarders first, and if that * doesn‘t work then do the full lookup. You can also say * "forward only;" which is what used to be specified with * "slave" or "options forward-only". "only" will never attempt    * a full lookup; only the forwarders will be used.    */ forward first; forwarders { };     // default is no forwarders topology { localhost; localnets; };     // prefer local nameservers listen-on port 53 { any; };     // listen for queries on port 53 on    // any interface on the system    // (i.e. all interfaces). The    // "port 53" is optional; if you    // don‘t specify a port, port 53    // is assumed. /* * Interval Timers */ cleaning-interval 60;     // clean the cache of expired RRs    // every ‘cleaning-interval‘ minutes interface-interval 60;     // scan for new or deleted interfaces    // every ‘interface-interval‘ minutes statistics-interval 60;     // log statistics every    // ‘statistics-interval‘ minutes maintain-ixfr-base no;     // If yes, keep transaction log file for IXFR max-ixfr-log-size 20;     // Not implemented, maximum size the    // IXFR transaction log file to grow   };   /*    * Control listeners, for "ndc". Every nameserver needs at least one.    */   controls { inet * port 52 allow { any; }; // a bad idea unix "/var/run/ndc" perm 0600 owner 0 group 0;        // the default   };   zone "rd.21vianet.com" in { type master;       // what used to be called "primary" file "rd.21vianet.com.db"; check-names fail; allow-update { none; }; allow-transfer { any; }; allow-query { any; }; // notify yes;       // send NOTIFY messages for this // zone? The global option is used // if "notify" is not specified // here. also-notify { };       // don‘t notify any nameservers other // than those on the NS list for this // zone   };   zone "223.99.211.in-addr.arpa" in { type master; // what used to be called "secondary" file "211.99.223.db"; };   zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.db";   };   zone "." in { type hint;        // used to be specified w/ "cache" file "named.root";   };   logging { /* * All log output goes to one or more "channels"; you can make as * many of them as you want. */ channel syslog_errors {       // this channel will send errors or syslog user;       // or worse to syslog (user facility) severity error; }; category parser { syslog_errors; // you can log to as many channels default_syslog;      // as you want }; category lame-servers { null; };      // don‘t log these at all channel moderate_debug { severity debug 3;      // level 3 debugging to file file "foo";      // foo print-time yes;     // timestamp log entries print-category yes;      // print category name print-severity yes;      // print severity level /* * Note that debugging must have been turned on either * on the command line or with a signal to get debugging * output (non-debugging output will still be written to * this channel). */ }; /* * If you don‘t want to see "zone XXXX loaded" messages but do * want to see any problems, you could do the following. */ channel no_info_messages { syslog; severity notice; }; category load { no_info_messages; }; /* * You can also define category "default"; it gets used when no * "category" statement has been given for a category. */ category default { default_syslog; moderate_debug; }; };   13、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:rd.21vianet.com.db,內(nèi)容如下,需要修改和調(diào)整相應(yīng)部分:   ;Authoriative data for rd.21vianet.com   ;   $TTL 3600   @ IN SOA compaq.rd.21vianet.com. tandongyu.rd.21vianet.com. (     20020101 ;Serial     3600 ;Refresh 1 hour     900 ;Retry 15 mins     604800 ;Expire 7 days     86400) ;Mini 24 hours   ;Name server NS records   @ IN NS compaq.rd.21vianet.com.   ;Mail Exchange (MX) records   rd.21vianet.com. IN MX 0 compaq   ;Address (A) records.   localhost IN A 127.0.0.1   compaq IN A 211.99.223.9   tls65 IN A 211.99.223.8   fbsd IN A 211.99.223.7   14、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:211.99.223.db,內(nèi)容如下,你需要修改相應(yīng)部分:   ;   ;   $TTL 3600   @ IN SOA compaq.rd.21vianet.com. tandongyu.rd.21vianet.com. (     20020101 ;Serial     3600 ;Refresh     900 ;Retry 15 mins     604800 ;Expire 7 days     86400) ;Mini 24 hours   ;NameServer (NS) records   @ IN NS compaq.rd.21vianet.com.   ;Address Point to Name (PTR) records   9 IN PTR compaq.rd.21vianet.com.   8 IN PTR tls65.rd.21vianet.com.   7 IN PTR fbsd.rd.21vianet.com.   15、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:127.0.0.db,內(nèi)容如下,你需要修改相應(yīng)部分:   ; 0.0.127.in-addr.arpa   $TTL 3600   @ IN SOA compaq.rd.21vianet.com. tandongyu.rd.21vianet.com. (      20020101;serial 3600 ;refresh 1800 ;retry 604800 ;expiration 3600 ) ;minimum IN NS compaq.rd.21vianet.com.   1 IN PTR localhost.   16、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:named.root,內(nèi)容大致如下。該文件標(biāo)記了14個(gè)域名服務(wù)器??梢詮膄tp.rs.internic.net獲得該文件的最新樣本:named.hosts,然后改名成你需要的名字,比如:named.root   ; This file holds the information on root name servers needed to   ; initialize cache of Internet domain name servers   ; (e.g. reference this file in the "cache . "   ; configuration file of BIND domain name servers).   ;   ; This file is made available by InterNIC registration services   ; under anonymous FTP as   ; file /domain/named.root   ; on server FTP.RS.INTERNIC.NET   ; -OR- under Gopher at RS.INTERNIC.NET   ; under menu InterNIC Registration Services (NSI)   ; submenu InterNIC Registration Archives   ; file named.root   ;   ; last update: Aug 22, 1997   ; related version of root zone: 1997082200   ;   ;   ; formerly NS.INTERNIC.NET   ;     . 3600000 IN NS A.ROOT-SERVERS.NET.     A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4   ;   ; formerly NS1.ISI.EDU   ;     . 3600000 NS B.ROOT-SERVERS.NET.     B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107   ;   ; formerly C.PSI.NET   ;     . 3600000 NS C.ROOT-SERVERS.NET.     C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12   ;   ; formerly TERP.UMD.EDU   ;     . 3600000 NS D.ROOT-SERVERS.NET.     D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90   ;   ; formerly NS.NASA.GOV   ;     . 3600000 NS E.ROOT-SERVERS.NET.     E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10   ;   ; formerly NS.ISC.ORG   ;     . 3600000 NS F.ROOT-SERVERS.NET.     F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241   ;   ; formerly NS.NIC.DDN.MIL   ;     . 3600000 NS G.ROOT-SERVERS.NET.     G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4   ;   ; formerly AOS.ARL.ARMY.MIL   ;     . 3600000 NS H.ROOT-SERVERS.NET.     H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53   ;   ; formerly NIC.NORDU.NET   ;     . 3600000 NS I.ROOT-SERVERS.NET.     I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17   ;   ; temporarily housed at NSI (InterNIC)   ;     . 3600000 NS J.ROOT-SERVERS.NET.     J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10   ;   ; housed in LINX, operated by RIPE NCC   ;     . 3600000 NS K.ROOT-SERVERS.NET.     K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129   ;   ; temporarily housed at ISI (IANA)   ;     . 3600000 NS L.ROOT-SERVERS.NET.     L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12   ;   ; housed in Japan, operated by WIDE   ;     . 3600000 NS M.ROOT-SERVERS.NET.     M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33   ; End of File   17、我們還需要配置/etc/resolv.conf、/etc/hosts、/etc/hosts.conf文件以適應(yīng)新的狀況。   18、一切都結(jié)束后,用/usr/sbin/ndc start命令啟動(dòng)bind,同樣的可用stop、restart、reload等命令參數(shù)操作。   19、啟動(dòng)后用nslookup命令(有的系統(tǒng)推薦使用dig命令)檢驗(yàn)是否正確。如果出現(xiàn)錯(cuò)誤,該命令將不能啟動(dòng)。一般的錯(cuò)誤都是數(shù)據(jù)庫(kù)文件或配置文件筆誤所至。比如少個(gè)“.”或者文件明不正確等等。   (2) 安裝sendmail服務(wù)器   1、從www.sendmail.org下載最新的版本(這個(gè)snedmail倒是有必要升級(jí)為最新的版本,因?yàn)樗纳?jí)主要是安全漏洞問題)。這里說明的是用的sendmail-8.12.2.tar.gz   2、cd /usr/local/src/   3、把文件下載到:/usr/local/src中   4、tar zxvf sendmail-8.12.2.tar.gz   5、cd /usr/local/src/sendmail-8.12.2   6、chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue   7、chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue   8、cd /usr/local/src/sendmail-8.12.2/sendmail   9、sh Build   10、cd /usr/local/src/sendmail-8.12.2/cf/cf   11、建立文件sendmail.mc內(nèi)容如下,你可根據(jù)需要修改相應(yīng)部分。   divert(-1)   dnl This is the macro config file used to generate the /etc/sendmail.cf   dnl file. If you modify thei file you will have to regenerate the   dnl /etc/sendmail.cf by running this macro config through the m4   dnl preprocessor:   dnl m4 /etc/sendmail.mc > /etc/sendmail.cf   dnl You will need to have the Sendmail-cf pacage installed for this to work.   include(`/usr/local/src/sendmail-8.12.2/cf‘) define(`confDEF_USER_ID‘,`8:12‘) OSTYPE(`linux‘) undefine(`UUCP_RELAY‘) undefine(`BITNET_RELAY‘) define(`confTO_CONNECT‘, `1m‘) define(`confTRY_NULL_MX_LIST‘,true) define(`confDONT_PROBE_INTERFACES‘,true) define(`PROCMAIL_MAILER_PATH‘,`/usr/bin/procmail‘) define(`SMART_HOST‘,compaq.rd.21vianet.com)     <---這條用于(非HUB)缺省使用HUB發(fā)送郵件 MASQUERADE_AS(`rd.21vianet.com‘) <------------------------- FEATURE(`masquerade_entire_domain‘)      <---這三條用于郵件地址偽裝 FEATURE(`masquerade_envelope‘)       <------------------------- FEATURE(`smrsh‘,`/usr/sbin/smrsh‘) FEATURE(`mailertable‘,`hash -o /etc/mail/mailertable‘) FEATURE(`virtusertable‘,`hash -o /etc/mail/virtusertable‘) FEATURE(redirect) FEATURE(always_add_domain) FEATURE(use_cw_file) FEATURE(local_procmail) FEATURE(`access_db‘) FEATURE(`blacklist_recipients‘) FEATURE(`accept_unresolvable_domains‘) MAILER(smtp) MAILER(procmail) dnl We strongly recommend to comment this one out if you want to protect dnl yourself from spam. However, the laptop and users on computers that do dnl not hav 24x7 DNS do need this. dnl FEATURE(`relay_based_on_MX‘)   12、sh Build install-cf   13、groupadd smmsp   14、useradd smmsp   15、cd cd /usr/local/src/sendmail-8.12.2/sendmail   16、sh Build install   17、cd /usr/local/src/sendmail-8.12.2/makemap   18、sh Build clean   19、sh Build all   20、sh Build install   21、cd /usr/local/src/sendmail-8.12.2/   22、在本域DNS主數(shù)據(jù)庫(kù)文件中增加MX紀(jì)錄:   rd.21vianet.com. IN MX 0 compaq   注意修改相應(yīng)部分。那個(gè)0是有幾個(gè)郵件集中器的時(shí)候用于標(biāo)記先后順序的。當(dāng)有好幾個(gè)MX的時(shí)候,建議順序?qū)憺?0、20、30…   23、在/etc/mail目錄下創(chuàng)建access文件,內(nèi)容類似如下: 127.0.0.1 RELAY 211.99.223 RELAY 211.99.221.238 RELAY   然后:makemap hash access.db < access   24、創(chuàng)建文件/etc/mail/local-host-names,其內(nèi)容為本機(jī)的擁有的域名信息。   rd.21vianet.com   compaq.rd.21vianet.com   25、創(chuàng)建文件/etc/mail/aliases,內(nèi)容類似:   MAILER-DAEMON: postmaster postmaster: root bin: root daemon: root nobody: root   運(yùn)行newaliases創(chuàng)建數(shù)據(jù)庫(kù)。   創(chuàng)建別名文件的意義之一在于當(dāng)郵件發(fā)往域中其他郵件服務(wù)器的用戶而不是mail HUB用戶的時(shí)候用。   比如增加一條:   atan: atan@fbsd   則導(dǎo)致郵件發(fā)往mail HUB的時(shí)候自動(dòng)轉(zhuǎn)發(fā)到atan@fbsd.rd.21vianet.com   26、啟動(dòng)sendmail: /usr/sbin/sendmail -bd -q30m   排錯(cuò):如果有問題導(dǎo)致啟動(dòng)不了,大部分問題和DNS配置有關(guān),可以使用nslookup檢查DNS是否正常。挨個(gè)檢查/etc/mail中的文件內(nèi)容也是排錯(cuò)的好辦法。另外,修改配置,不建議直接編輯sendmail.cf文件,建議使用m4宏編譯工具,因?yàn)橛行в邪踩┒椿蜻^時(shí)的宏在編譯的時(shí)候會(huì)有提示,這樣以免造成相關(guān)安全問題。 -------------------------------------------------------------------------------- lsw 回復(fù)于:2002-12-23 11:40:34 (3)安裝DHCP服務(wù)器  1、源程序下載地址是:ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.tar.gz ,我們的版本是:dhcpd-3.0   2、復(fù)制到:/usr/local/scr后解壓:tar zxvf dhcp-3.0.tar.gz   3、cd /usr/local/src/dhcp-3.0.tar.gz   4、./configure   5、make(如果不是第一次編譯,先make clean)   6、make install   7、cp ./server/dhcpd.conf /etc   8、編輯這個(gè)文件,看起來類似下面這樣:(要更改的地方用粗體標(biāo)出)   # dhcpd.conf   #   # Sample configuration file for ISC dhcpd   #   # option definitions common to all supported networks...   option domain-name "rd.21vianet.com";   option domain-name-servers compaq.rd.21vianet.com;   default-lease-time 86400;   max-lease-time 172800;   ddns-update-style ad-hoc;   # If this DHCP server is the official DHCP server for the local   # network, the authoritative directive should be uncommented.   #authoritative;   # Use this to send dhcp log messages to a different log file (you also   # have to hack syslog.conf to complete the redirection).   log-facility local7;   # No service will be given on this subnet, but declaring it helps the   # DHCP server to understand the network topology.   # This is a very basic subnet declaration.   subnet 211.99.223.0 netmask 255.255.255.224 {     range 211.99.223.2 211.99.223.6;     option routers 211.99.223.1;   }   # This declaration allows BOOTP clients to get dynamic addresses,   # which we don‘t really recommend.   #subnet 10.254.239.32 netmask 255.255.255.224   {     # range dynamic-bootp 10.254.239.40 10.254.239.60;     # option broadcast-address 10.254.239.31;     # option routers rtr-239-32-1.example.org;   #}   # A slightly different configuration for an internal subnet.   #subnet 10.5.5.0 netmask 255.255.255.224 {   # range 10.5.5.26 10.5.5.30;   # option domain-name-servers ns1.internal.example.org;   # option domain-name "internal.example.org";   # option routers 10.5.5.1;   # option broadcast-address 10.5.5.31;   # default-lease-time 600;   # max-lease-time 7200;   #}   # Hosts which require special configuration options can be listed in   # host statements. If no address is specified, the address will be   # allocated dynamically (if possible), but the host-specific information   # will still come from the host declaration.   #host passacaglia {   # hardware ethernet 0:0:c0:5d:bd:95;   # filename "vmunix.passacaglia";   # server-name "toccata.fugue.com";   #}   # Fixed IP addresses can also be specified for hosts. These addresses   # should not also be listed as being available for dynamic assignment.   # Hosts for which fixed IP addresses have been specified can boot using   # BOOTP or DHCP. Hosts for which no fixed address is specified can only   # be booted with DHCP, unless there is an address range on the subnet   # to which a BOOTP client is connected which has the dynamic-bootp flag   # set.   #host fantasia {   # hardware ethernet 08:00:07:26:c0:a5;   # fixed-address fantasia.fugue.com;   #}   # You can declare a class of clients and then do address allocation   # based on that. The example below shows a case where all clients   # in a certain class get addresses on the 10.17.224/24 subnet, and all   # other clients get addresses on the 10.0.29/24 subnet.     #class "foo" {   # match if substring (option vendor-class-identifier, 0, 4) = "SUNW";   #}   #shared-network 224-29 {   # subnet 10.17.224.0 netmask 255.255.255.0 {   # option routers rtr-224.example.org;   # }   # subnet 10.0.29.0 netmask 255.255.255.0 {   # option routers rtr-29.example.org;   # }   # pool {   # allow members of "foo";   # range 10.17.224.10 10.17.224.250;   # }   # pool {   # deny members of "foo";   # range 10.0.29.10 10.0.29.230;   # }   上面這個(gè)文件中后面都是注釋,是原來系統(tǒng)給你的配置做的例子,可以不要。當(dāng)然除非你用到它們,并且清楚它們的含義。   9、建立空文件:touch /var/state/dhcp/dhcpd.leases空文件   10、檢查內(nèi)核編譯選項(xiàng):Networking options-----Packet socket: mmapped IO和Socket Filtering選項(xiàng)是否被選中(不知道怎么看?看看前面的文章,用make menuconfig呀),如果沒有就需要重新編譯內(nèi)核了。   11、route add -host 255.255.255.255 dev eth0   12、roote add -host localhost dev eth0   13、在/etc/rc.d/rc.local最后增加一行route add -host 255.255.255.255 dev eth0   14、reboot系統(tǒng)   15、用dhcpd命令啟動(dòng)DHCP,用其他的機(jī)器試試看能不能自動(dòng)配置網(wǎng)絡(luò)了。 (4) 安裝apache+mysql+php+gd+png+zlib+jpeg+freetype+sslmod   這么一大堆東西為什么要一塊說呢?因?yàn)樗麄冎虚g是有緊密聯(lián)系的,尤其是那個(gè)PHP,用到其他所有的模塊。要想PHP功能全,只能一步步來了。   1、首先安裝MYSQL:從http://www.mysql.com/downloads/index.html下載自己覺得合適的版本。這里用3.23.42版本。   2、進(jìn)入目錄/usr/local/src(這個(gè)以后就不用說了吧?)解壓縮:tar zxvf mysql-3.23.42.tar.gz   3、cd mysql-3.23.42/   4、configure --prefix=/usr/local/mysql   5、make   6、make install   7、useradd mysql ; groupadd mysql ; su mysql ;(建立命名為mysql的用戶和組,并切換為mysql身份)   8、scripts/mysql_install_db (建立數(shù)據(jù)庫(kù)結(jié)構(gòu))   9、cd /usr/local/mysql/bin   10、./safe_mysqld & (啟動(dòng)了)   11、./mysqladmin -u root password "new-password"(你的新密碼,記住MYSQL的密碼核系統(tǒng)密碼是獨(dú)立的,缺省是沒有密碼)   12、用mysql程序試試看。   下面的步驟都很程式化,我盡量簡(jiǎn)潔地寫出。   13、下載相關(guān)的軟件包:地址表格如下   軟件     版本     地址 jpegsrc.v6b.tar.gz  6b ftp://ftp.uu.net/graphics/jpeg zlib.tar.gz 1.1.3 ftp://ftp.uu.net/graphics/png/src freetype-2.0.8.tar.gz 2.0.8 http://www.freetype.org libpng-1.0.10.tar.gz 1.0.10 ftp://ftp.uu.net/graphics/png/src gd-1.8.4.tar.gz 1.8.4 http://www.boutell.com/gd apache_1.3.23.tar.gz 1.3.23 http://www.apache.org php-4.1.1.tar.gz 4.1.1 http://www.php.net number4.tar.gz 4 http://www.php.net/extra rsaref20.tar.Z 2.0 ftp://ftp.ai.mit.edu/pub/deberg openssl-engine-0.9.6c.tar.gz 0.9.6c http://www.openssl.org/source mod_ssl-2.8.6-1.3.23.tar.gz 2.8.6 http://www.modssl.org   下齊了就放在/usr/local/src目錄下,除了number4.tar.gz和rsaref20.tar.Z以外,其他一律用tar zxvf XXXX.tar.gz解壓縮。(過癮吧?)   特殊的,rsaref20.tar.Z 需要先建立一個(gè)rsaref-2.0目錄,然后把rsaref20.tar.Z復(fù)制到改目錄下用tar zxvf rsaref30.tar.Z釋放壓縮。Number4.tar.gz需要復(fù)制到php-4.1.1目錄內(nèi),然后用tar zxvf number4.tar.gz解壓縮。   下面的描述我想簡(jiǎn)單一點(diǎn),只寫出進(jìn)入目錄后執(zhí)行的命令。那些目錄都是釋放的時(shí)候自己建立的,如果你這些操作都在/usr/local/src下面執(zhí)行,所有的目錄就都在這里面。最好按照順序執(zhí)行。再羅嗦一句:如果不是第一次編譯,一般情況請(qǐng)執(zhí)行一次make clean后再編譯。   14、[jpeg-6b]:生成JPEG圖像的函數(shù)庫(kù)。   ./configure   make   make test   make install   15、[zlib-1.1.3]:壓縮算法庫(kù),是PNG和JPEG需要的   make test   make install   16、[freetype-2.0.8]:字體庫(kù),在圖像上使用字體的時(shí)候需要用到,   ./configure --prefix=/usr/local   make   make install   17、[libpng-1.0.10]:生成PNG圖像的函數(shù)庫(kù)   cp scripts/makefile.linux makefile   make test   pngtest pngnow.png   (如果都通過測(cè)試了,請(qǐng)繼續(xù)。否則,看看錯(cuò)誤提示,改正錯(cuò)誤)   make install   18、[gd-1.8.4]:GD庫(kù),用來動(dòng)態(tài)生成圖像用,這里主要是配合PHP生成圖像。   編輯Makefile 文件:   把下列行取消注釋符號(hào)(#):   CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG   -DHAVE_LIBFREETYPE -DHAVE_LIBTTF   LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm -lttf   注釋下列行(增加#):  CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG   LIBS=-lgd -lpng -lz -lm   修改下列行:  INCLUDEDIRS=-I. -I/usr/local/include/freetype2 -I/usr/include/X11     -I/usr/X11R6/include/X11 -I/usr/local/include      -I/usr/include/freetype   保存后執(zhí)行:   make   make install   19、[apache_1.3.23]:步驟一 ./configure --prefix=/usr/local/apache   20、[php-4.1.1]:   如果不是第一次安裝,請(qǐng)刪除:config.cache文件,然后執(zhí)行先執(zhí)行make clean   接下來配置環(huán)境,輸入一個(gè)比較長(zhǎng)的命令:   ./configure     --with-apache=/usr/local/src/apache_1.3.23     --with-config-file-path=/local/apache/conf     --with-enable-versioning     --with-mysql=/usr/local/mysql     --with-ftp     --with-gd=/usr/local/src/gd-1.8.4     --with-enabled-bcmath=yes     --with-disable-debug     --enable-memory-limit=yes     --enable-track-vars     --with-zlib     --with-jpeg-dir=/usr/local/src/jpeg-6b     --with-png-dir=/usr/local/src/libpng-1.0.10     --with-freetype-dir=/usr//local/src/freetype-2.0.8   當(dāng)然你也可以實(shí)現(xiàn)準(zhǔn)備一個(gè)含有上述命令的sh文件,這樣改起來方便些。我就是這樣做的。   make   make install   21、[rsaref-2.0]:RSA加密模塊   前面說過,這個(gè)目錄的釋放是特殊的,先見目錄后釋放,希望你是這樣做的。   cp -rp install/unix local   cd local   make   mv rsaref.a librsaref.a   22、[openssl-engine-0.9.6c]:openssl引擎   ./config -prefix=/usr/local/ssl -L`pwd`/../rsaref-2.0/local/ rsaref –fPIC   make   make test   make install   23、[mod_ssl-2.8.6-1.3.23]   ./configure --with-apache=../apache_1.3.23   24、[apache_1.3.23]步驟二   ./configure --prefix=/usr/local/apache --enable-shared=ssl      --enable-module=ssl --activate-module=src/modules/php4/libphp4.a   make   make certificate TYPE=custom(回答一些問題)  make install   25、收尾工作:   編輯/usr/local/apache/conf/httpd.conf文件,增加一行:   AddType application/x-httpd-php .php   26、用命令/usr/local/apache/bin/apachectl configtest檢查一下配置文件的正確性。   27、用/usr/lcoal/apache/bin/apachectl start啟動(dòng)apache服務(wù)器   28、在/usr/local/apache/htdocs建立一個(gè)test.php文件包含下列內(nèi)容:       phpinfo();   >   29、在別的機(jī)器上用瀏覽器看一下這個(gè)機(jī)器:http://xxx.xxx.xxx.xxx/test.php會(huì)出現(xiàn)php的配置總匯,看看前面編譯的模塊都在不在。   30、檢驗(yàn)ssl很麻煩,需要用apachectl startssl啟動(dòng)apache然后還要生成一大堆證書。這里就不討論了。   31、把/usr/local/apache/bin/apachectl文件復(fù)制到/etc/rc.d/init.d中,然后在/etc/rc.d/rd3.d中建立個(gè)符號(hào)連接指向/etc/rc.d/init.d中的上述文件:   ln -s ../init.d/apachectl S70apachectl   這樣系統(tǒng)啟動(dòng)的時(shí)候就可以自動(dòng)啟動(dòng)apache和她的哪一大堆模塊了。   呼~~~~(喘口氣)到這里,就基本上完成了一個(gè)功能很全的WEB服務(wù)器系統(tǒng)了。   (5)安裝 ftp 服務(wù)器   (6)安裝 pop3服務(wù)器   有的郵件服務(wù)器自己帶pop3功能(比如Qmail、Xmail),如果你用這幾種郵件服務(wù)器軟件,當(dāng)然就不用安裝pop3了。目前,常用的郵件服務(wù)器里面不帶pop3的好象只有sendmail和postfix等少數(shù)幾種。這幾種郵件服務(wù)器軟件使用的都是系統(tǒng)用戶,而我們安裝的pop3也只是對(duì)系統(tǒng)用戶的郵件進(jìn)行彈出操作的。這里我們使用的版本和下載地址是:   qpopper4.0.3.tar.gz     http://www.eudora.com/qpopper_general/   同樣的,把文件下載到/usr/local/src中,按照下列步驟安裝:   tar zxvf qpopper4.0.3.tar.gz   cd qpopper4.0.3   ./configure   make   make install   完成后,qpopper安裝在/usr/local/sbin中(如果你愿意把它放在其他地方,可以在前面用./configure –prefix=/your_path指定),文件名叫作popper。通常情況下,popper是作為一個(gè)inetd(超級(jí)網(wǎng)絡(luò)服務(wù)進(jìn)程)的子進(jìn)程加載的。這樣需要編輯文件/etc/inetd.conf并做下面改動(dòng): ...   # POP3 mail server   #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d   pop-3 stream tcp nowait root /usr/local/sbin/popper qpopper –s   ...   增加黑體的這一行,注釋掉原來的(上面這一行),注意,如果你的安裝路經(jīng)不同,記著改過來呀。然后,用下面的命令得到inetd的進(jìn)程號(hào):   ps –ax | grep inetd   得到結(jié)果類似:   248 ? S 0:00 inetd   什么?哪個(gè)是進(jìn)程號(hào)?就是最前面那個(gè)數(shù)字。然后用下面的命令重新啟動(dòng)inetd:   kill –HUP 248   用下面的命令看看pop3是不是啟動(dòng)了。   netstat -ln|grep 110   如果結(jié)果是這樣,就恭喜了。   tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN   這里還要補(bǔ)充一點(diǎn),少數(shù)情況下,pop3進(jìn)程需要獨(dú)立的監(jiān)聽端口,也就是不作為inetd的子進(jìn)程裝載,上面過程需要做如下改動(dòng):   ./configure的時(shí)候加上--enable-standalone參數(shù)。   編輯/etc/inetd.conf不增加黑體一行,但需要注釋掉原來的pop-3一行(如果有的話)。   啟動(dòng)的時(shí)候,直接運(yùn)行/usr/local/sbin/popper xxx.xxx.xxx.xxx:110即可。后面的參數(shù)是本地需要幾監(jiān)聽的IP地址和端口。注意,沒有特殊需要,端口必須是110。最后要說的是:其實(shí)最簡(jiǎn)單的辦法就是用你使用的Linux發(fā)行包帶的pop3軟件,安裝的時(shí)候直接選上即可。 -------------------------------------------------------------------------------- lsw 回復(fù)于:2002-12-23 11:43:32 (7)安裝imap服務(wù)器  幾乎所有的發(fā)行包都帶有imap服務(wù)器軟件(一般是華盛頓大學(xué)版本),最好的辦法是用你的發(fā)行包安裝IMAP服務(wù)器。事實(shí)上,我個(gè)人覺得IMAP服務(wù)器很少被使用。下載最常規(guī)的IMAP服務(wù)器源碼地址是:ftp://ftp.cac.washington.edu/imap/imap.tar.Z   tar zxvf imap.tar.Z   cd imap-2001a   make slx   (如果不行依次試驗(yàn)一下其他你覺得可能的系統(tǒng)類型,用vi看一下Makefile中列的名稱)   然后配置/etc/inetd.conf,讓inetd允許imap服務(wù)。[本節(jié)內(nèi)容沒有試驗(yàn)成功,編譯總是過不去]   (8)安裝squid服務(wù)器   SQUID是一個(gè)優(yōu)秀的代理服務(wù)器軟件,它可以很靈活的被配置為各種應(yīng)用形式,其中包括正向代理,反向加速模式和透明代理等。但是SQUID目前只能代理HTTP協(xié)議,代理FTP協(xié)議需要配置瀏覽器仿真主動(dòng)FTP協(xié)議。下面的步驟是安裝SQUID的過程。   1、下載反向代理服務(wù)器軟件采用squid,下載地址:http://www.squid-cache.org/   下載后存放在/usr/local/src目錄里,文件名是squid-2.4.STABLE2-src.tar.gz   2、tar zxvf squid-2.4.STABLE2-src.tar.gz 解壓縮   3、cd /usr/local/src/squid-2.4.STABLE2 進(jìn)入目錄   4、./configure --prefix=/usr/local/squid --enable-heap-replacement --disable-internal-dns建立環(huán)境,把squid安裝/usr/local/squid中。第二個(gè)參數(shù)是指定使用更先進(jìn)的緩沖算法。第三個(gè)參數(shù)是取消內(nèi)部DNS解析(如果使用在遠(yuǎn)程高速緩存模式,比如GSLB,需要增加選項(xiàng):--disable-internal-dns,目的是關(guān)閉內(nèi)部DNS.否則內(nèi)部DNS不理睬你在etc/hosts中的設(shè)定,直接尋找域名服務(wù)器,這樣就會(huì)造成轉(zhuǎn)發(fā)循環(huán)。就是cache發(fā)送給物理服務(wù)器的更新請(qǐng)求(因?yàn)橛糜蛎┮矔?huì)被用戶的GSLN設(shè)備解析回來而形成循環(huán)。)   5、make 開始編譯   6、make install 安裝到剛才--prefix=指定的路徑當(dāng)中   7、安裝完成后,會(huì)在您指定的安裝路徑里產(chǎn)生一個(gè)squid目錄,squid目錄下有四個(gè)目錄:bin/ etc/ libexec/ logs/。其中etc里面是配置文件,bin里面是執(zhí)行文件,logs里面是日志文件。   8、安裝結(jié)束后就是調(diào)試服務(wù)器,使其按照您的要求工作。Squid的配置文件只有一個(gè),在etc目錄里,名字是squid.conf,所有的配置選項(xiàng)都在這個(gè)文件里面。而且每個(gè)配置項(xiàng)目都有注釋說明。首先,在squid文件里面找到下列配置項(xiàng):   cache_mem ---這里可以添上您準(zhǔn)備給squid作為高速緩存使用的內(nèi)存大小。注意,如果您的機(jī)器有N兆內(nèi)存,那么,推薦您在這里添的數(shù)字是N/3。   cache_dir /usr/local/squid/cache 100 16 256 這里的第一個(gè)數(shù)字100是您準(zhǔn)備給squid作為cache使用的硬盤空間大小,單位是兆。如果您想劃100M空間當(dāng)作cache,那么這里就寫100。   cache_mgr webmaster@test.com.cn這里填寫cache管理員的Email地址,系統(tǒng)出錯(cuò)會(huì)自動(dòng)提醒cache管理員。   cache_replacement_policy和memory_replacement_policy的參數(shù)由于使用了--enable-heap-replacement編譯參數(shù),就不能使用缺省的lru算法了,你可以在下列三種里面選一個(gè):   heap GDSF : Greedy-Dual Size Frequency   heap LFUDA: Least Frequently Used with Dynamic Aging   heap LRU : LRU policy implemented using a heap   例如:   cache_replacement_policy heap LRU   memory_replacement_policy heap LRU   下面設(shè)定ACL訪問控制列表:為了簡(jiǎn)單起見,我們?cè)谶@里開放所有的權(quán)限。ACL分為兩個(gè)部分:ACL定義部分,和http_access部分。在access_http部分用到前面的定義。前面定義了:   acl all src 0.0.0.0/0.0.0.0   我們注釋掉所有的http_access行加一句:   http_access allow all ---注意:all是前面acl定義的。   這樣就開放了所有的權(quán)限。以后有需要的,再繼續(xù)往上加各種限制即可。   9、以root身份創(chuàng)建組nogroup :   %su root (如果當(dāng)前不是root)  #groupadd nogroup   #useradd nobody (如果沒有這個(gè)用戶)   10、進(jìn)行目錄/usr/local ,以root身份執(zhí)行下面的命令,改變整個(gè)Squid目錄的所有者為nobody.nogroup   #cd /usr/local   #chown nobody.nogroup -R squid   11、su 作為nobody,進(jìn)行/usr/local/squid/bin目錄,執(zhí)行#squid -z 創(chuàng)建cache交換目錄   #su nobody   $ cd /usr/local/squid/bin   $./squid -z   12、成功后,測(cè)試一下:/usr/local/squid/bin/squid -NCd1 該命令正式啟動(dòng)Squid。如果一切正常,你會(huì)看到一行輸出 :Ready to serve requests.   13、用ctrl-c退出前臺(tái)測(cè)試。   14、把squid作為守護(hù)進(jìn)程啟動(dòng)就直接運(yùn)行:/usr/local/squid/bin/squid   15、檢查狀態(tài)用squid –k check   16、停止squid用squid -k shutdown   如果是配置基本的正向代理,上面的已經(jīng)可以使用了。下面的步驟用于配置支持多域名的反向代理服務(wù)器。還好,SQUID的所有配置都在/usr/local/squid/etc下面,和反向代理有關(guān)的幾項(xiàng)介紹如下:   17、http_port 80 “http_port”參數(shù)指定Squid監(jiān)聽瀏覽器客戶請(qǐng)求的端口號(hào)。   18、icp_port 0 “icp_port”參數(shù)指定Squid從鄰居(neighbour)服務(wù)器緩沖內(nèi)發(fā)送和接收ICP請(qǐng)求的端口號(hào)。這里設(shè)置為0是因?yàn)檫@里配置Squid為內(nèi)部Web服務(wù)器的加速器,所以不需要使用鄰居服務(wù)器的緩沖。   19、emulate_httpd_log on 打開“emulate_httpd_log”選項(xiàng),將使Squid仿照Web服務(wù)器的格式創(chuàng)建訪問記錄。如果希望使用Web訪問記錄分析程序,就需要設(shè)置這個(gè)參數(shù)。   20、redirect_rewrites_host_header off 缺省地,Squid將改寫任何重定向請(qǐng)求的主機(jī)頭部。若系統(tǒng)運(yùn)行Squid為加速器模式,則這時(shí)不需要重定向特性。該參數(shù)在負(fù)載過重的情況下要旁路重定向器時(shí)才打開   21、httpd_accel_host vartual 此處設(shè)置反向代理的主機(jī)名,如果對(duì)后面多個(gè)域名進(jìn)行緩沖,請(qǐng)使用虛擬主機(jī)模式(如此)。   22、httpd_accel_port 80 此處設(shè)置反向代理的WEB服務(wù)端口號(hào)。   23、#httpd_accel_with_proxy off 把這行注釋掉,此處設(shè)置開反向代理的同時(shí),是否開普通代理緩存服務(wù)。如果這行不注釋掉,就沒有高速緩存功能。   24、定義訪問控制列表:   acl port80 port 80   acl accel_host1 dstdomain .test.com   acl accel_host2 dstdomain .test.net   … …   http_access allow accel_host1 port80   http_access allow accel_host2 port80   http_access deny all;   25、完成后,用squid –k reconfigure重新裝載配置文件。   (9)安裝SSH   ---   (10)配置Linux為路由器   ---   (11)配置Linux網(wǎng)關(guān)和安裝ipchains/iptables防火墻   在Linux上面的防火墻,最最常用的是ipchains,而且通常情況下是作為網(wǎng)關(guān)的附加部分安裝的。Ipchains的規(guī)則是很復(fù)雜的,靈活性也很強(qiáng),可以配制成各種五花八門的樣子。這些都需要和你自己的實(shí)際情況相結(jié)合。這里,我們只介紹一種基于網(wǎng)關(guān)的簡(jiǎn)單配置。   安裝IPCHAINS一般都不用你操心,因?yàn)閹缀跛械腖inux發(fā)行包都把該軟件作為必須安裝的卻省配置。另一個(gè)原因是ipchains是跟內(nèi)核(kernel)有很大的關(guān)系,因此最好在安裝系統(tǒng)的時(shí)候選上相關(guān)選項(xiàng)(如果有)。在標(biāo)題里面我們還提到了iptables,這個(gè)工具在表面上等同于ipchains,只不過是用于2.4內(nèi)核的(2.4內(nèi)核在這方面的代碼幾乎是重新寫過的,功能有了長(zhǎng)足的提高)。關(guān)于iptables工具的配置我們?cè)诤竺娼榻B。你只需要記住2.2核心下使用ipchains,2.4核心下使用iptables即可。   首先,你的服務(wù)器需要兩塊網(wǎng)卡(或更多),這種機(jī)器叫做“多宿主主機(jī)”,是專門的用于做網(wǎng)關(guān)或路由器的。這里插一句:一般情況下,作為普通服務(wù)器的主機(jī)即使負(fù)載再重就需要一塊網(wǎng)卡就夠了,只有做網(wǎng)關(guān)或路由器的時(shí)候才需要多宿主主機(jī)。這并不象一般人認(rèn)為得那樣增加一塊網(wǎng)卡可以增加一份帶寬,事實(shí)上,一塊網(wǎng)卡就可以提供足夠的帶寬。并且,還有人錯(cuò)誤的把兩塊網(wǎng)卡接在同一個(gè)交換機(jī)上分配兩個(gè)地址,這更是錯(cuò)誤的,因?yàn)檫@樣產(chǎn)生了額外的循環(huán)路由,會(huì)產(chǎn)生大量的內(nèi)部警告錯(cuò)誤,某些系統(tǒng)就會(huì)報(bào)警。   1、制作一個(gè)雙界面(雙宿主)的主機(jī)。   通常,現(xiàn)在的發(fā)行包的安裝程序都可以識(shí)別兩塊網(wǎng)卡,這樣就省事了。但是也有不少發(fā)行包只識(shí)別第一塊網(wǎng)卡(也許是出于前面說的原因),或者你要在一臺(tái)在用的機(jī)器上加一塊網(wǎng)卡(因?yàn)槟悴辉敢庵匮b系統(tǒng)),那么就按照下面的辦法處理。   1.1、我們就說PCI網(wǎng)卡。安裝前首先看看網(wǎng)卡芯片,記住芯片的型號(hào)(希望你自己攢過機(jī)器)。   1.2、安裝MAN手冊(cè)(用發(fā)行包)   1.3、在/usr/doc/HOWTO/english/txt/Ethernet-HOWTO文件(如果是壓縮的就釋放)中搜索你的網(wǎng)卡型號(hào),找到對(duì)應(yīng)的驅(qū)動(dòng)模塊名稱。   1.4、如果模塊沒有,還需要重新編譯核心。在menuconfig網(wǎng)絡(luò)設(shè)備一欄選中你的型號(hào)然后標(biāo)記為*或M,編譯完核心后別忘了編譯模塊:make modules;make modules_install。(不會(huì)的話再仔細(xì)溫習(xí)一下前面編譯內(nèi)核的部分)   1.5、用depmod –a命令建立/etc/modules.conf(如果已經(jīng)有就不用了),也有的發(fā)行包叫做conf.modules   1.6、編輯該文件加上一行:alias eth1 XXXX,其中XXXX是你剛才查到的模塊名稱。一般該模塊文件位于:/lib/modules/內(nèi)核版本號(hào)/net…中的XXXX.o文件。這個(gè)文件是你編譯內(nèi)核模塊的時(shí)候產(chǎn)生的,你在內(nèi)核配置的時(shí)候,凡是標(biāo)記為M的都會(huì)被編譯成.o文件放在這里。同樣的,你選擇的網(wǎng)卡驅(qū)動(dòng)也是會(huì)編譯成模塊在這里的。   1.7、運(yùn)行modprobe eth1使模塊有效。   1.8、修改/etc/sysconfig/network文件中需要修改的部分。   1.9、建立或修改/etc/sysconfig/network-script/ifcfg-eth1文件(照抄那個(gè)eth0的即可),設(shè)定地址是你的真實(shí)情況,比如設(shè)為eth1要接的網(wǎng)段。這兩個(gè)文件(eth0/eth1是啟動(dòng)的時(shí)候的腳本參數(shù)文件)   1.10、重新啟動(dòng)一下網(wǎng)絡(luò):/etc/rc.d/init.d/network restart   1.11、用ifconfig看看是否eth0/eth1都啟動(dòng)了。   1.12、大功告成   2、調(diào)整和編譯核心:如果作為網(wǎng)關(guān),有些核心選項(xiàng)需要配置。注意:這里的內(nèi)核編譯選項(xiàng)僅僅適合于2.2.X版本,2.4版本完全不同。   2.1、在/usr/src/linux中運(yùn)行make menuconfig配置核心下列選項(xiàng):   Networking options中 [*] Network firewalls   [*] IP: advanced router   [*] IP: firewalling   [*] IP: firewall packet netlink device   [*] IP: transparent proxy support   [*] IP: masquerading   [*] IP: ICMP masquerading   [*] IP: masquerading special modules support    IP: ipautofw masq support (EXPERIMENTAL)    IP: ipportfw masq support (EXPERIMENTAL)    IP: ip fwmark masq-forwarding support (EXPERIMENTAL)   [*] IP: masquerading virtual server support (EXPERIMENTAL)   (12) IP masquerading VS table size (the Nth power of 2)   具體選項(xiàng)不同版本的內(nèi)核不盡相同,你看著差不多就可以了。編譯成模塊或編進(jìn)核心[*]可以自由選擇。   2.2、按照前面說的編譯內(nèi)核,重新啟動(dòng)后就具有網(wǎng)關(guān)功能了。啟動(dòng)后驗(yàn)證一下文件:/proc/sys/net/ipv4/ip_forward內(nèi)容是否為1。(別告訴我不知道怎么看8-))   3、設(shè)置ipchains   本來這項(xiàng)工作是非常復(fù)雜的,但是我們這里講的簡(jiǎn)單,讓網(wǎng)關(guān)通了就行。   3.1、先看一下目前我們目前的假想環(huán)境:你的機(jī)器有兩塊網(wǎng)卡,一塊連接在內(nèi)網(wǎng)交換機(jī)配內(nèi)部網(wǎng)絡(luò)地址,另一塊在外網(wǎng)交換機(jī)配公網(wǎng)地址。在這個(gè)機(jī)器ping 內(nèi)網(wǎng)和外網(wǎng)的機(jī)器應(yīng)該都能通。并且在內(nèi)網(wǎng)的機(jī)器ping 該機(jī)器的外網(wǎng)地址也通,在外網(wǎng)的機(jī)器ping該機(jī)器內(nèi)網(wǎng)的地址也同樣通。這說明轉(zhuǎn)發(fā)功能是有效的。   3.2、再試驗(yàn)一下:在內(nèi)部網(wǎng)絡(luò)把網(wǎng)關(guān)設(shè)為你的機(jī)器的內(nèi)網(wǎng)地址,然后ping 外網(wǎng)的任一臺(tái)機(jī)器(不是這臺(tái)機(jī)器的外網(wǎng)地址),結(jié)果是不通。原因是ICMP包發(fā)出去后外網(wǎng)的機(jī)器不知道怎么回答,那里沒有合適的路由,因?yàn)檫@個(gè)包的回應(yīng)地址是內(nèi)網(wǎng)。   3.3、現(xiàn)在設(shè)置ipchains:(ipchains軟件適用2.2.X的內(nèi)核,在2.4.X的內(nèi)核中不適用。2.4.X的內(nèi)核推薦使用iptables,關(guān)于該軟件的用法在下面介紹)   ipchains –A forward –s 192.168.1.0/24 –j MASQ   黑體部分是內(nèi)網(wǎng)地址。這句話的意思是,把所有內(nèi)網(wǎng)發(fā)送的包都偽裝成外部網(wǎng)的地址(那個(gè)機(jī)器的外網(wǎng)地址),這樣,外部其他機(jī)器回應(yīng)的時(shí)候就會(huì)發(fā)送到這臺(tái)機(jī)器,經(jīng)過轉(zhuǎn)發(fā)就回來內(nèi)網(wǎng)了。好了,一個(gè)簡(jiǎn)單的網(wǎng)關(guān)做好了。如果你需要實(shí)現(xiàn)防火墻(包過濾功能),則需要配置更加復(fù)雜的過濾規(guī)則,這些規(guī)則應(yīng)該同時(shí)作用于input/output/forward鏈。   3.4、自動(dòng)啟動(dòng):設(shè)定了復(fù)雜的鏈,需要保存。在/etc/rc.d中建立一個(gè)文件:rc.ipfwadm把你的鏈腳本加進(jìn)去就可以了。最后給這個(gè)文件+x屬性(chmod +x rc.ipfwadm)。   4.在2.4.X內(nèi)核中使用iptables建立Linux防火墻(網(wǎng)關(guān))。   4.1 說明和下載   前面已經(jīng)提到過2.4 內(nèi)核中要使用iptables來做類似于ipchains在2.2內(nèi)核中實(shí)現(xiàn)的事情。事實(shí)上,在2.4內(nèi)核中的iptables包含了兩個(gè)完全不同的部分:包過濾和地址轉(zhuǎn)換。這兩個(gè)功能在邏輯上是分開的,考慮到操作習(xí)慣上的問題才集成在一個(gè)配置程序(iptables)上。如果你安裝了帶有2.4內(nèi)核的發(fā)行包,那么一般都帶有iptables,并且在內(nèi)核配置上也配置好了。如果要編譯新的內(nèi)核或者原來的內(nèi)核沒有支持iptables,需要選上相關(guān)的選項(xiàng)。使用make menuconfig 配置內(nèi)核的時(shí)候操作:進(jìn)入:Networking Options至少選擇上:   [*] Network packet filtering (replaces ipchains)   [*] Network packet filtering debugging (NEW)   進(jìn)入:IP: Netfilter Configuration --->   [*] Connection tracking (required for masq/NAT) (NEW) FTP protocol support (NEW) IRC protocol support (NEW)   等等……   把下面的選項(xiàng)全部標(biāo)記<*>   逐級(jí)返回上面菜單后保存配置,然后按照編譯內(nèi)核的那一套程序進(jìn)行即可(參見前面的內(nèi)容)。這里需要說明的是,內(nèi)核支持了iptables功能,還需要有外部程序才行。如果你是直接安裝的帶有2.4內(nèi)核的發(fā)行包,應(yīng)該已經(jīng)帶有iptables實(shí)用程序了。但是如果你是從2.2核心的發(fā)行包直接升級(jí)到2.4內(nèi)核,盡管按照上面的做法配置的核心,但是還不能使用iptables。還必須下載和編譯iptables外部程序才能使用iptables功能。下載的地址是:http://www.netfilter.org ,下載的文件是iptables-1.2.6a.tar.bz2或更新的版本。   4.2 安裝:   這個(gè).bz2文件比較奇怪吧?把文件復(fù)制到/usr/local/src中,然后用下列命令釋放編譯和安裝: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那個(gè)‘- ’別忘了)   你的系統(tǒng)可能沒有bzip2工具,如果沒有,你就去下一個(gè):   進(jìn)入新生成的目錄 :cd iptables-1.2.6a 編譯和安裝:make ; make install   4.3 配置   如果你需要配置一個(gè)簡(jiǎn)單的網(wǎng)關(guān),你僅僅需要配置一個(gè)轉(zhuǎn)發(fā)加地址轉(zhuǎn)換功能即可,我提供的參考腳本如下:   #begin   echo 1 > /proc/sys/net/ipv4/ip_forward   modprobe iptable_nat   modprobe ip_conntrack   modprobe ip_conntrack_ftp   modprobe ip_nat_ftp   iptables -F INPUT   iptables -F FORWARD   iptables –F OUTPUT   iptables -F POSTROUTING -t nat   iptables -t nat -F   iptables -P FORWARD DROP   iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT   iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT   iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24     -j SNAT --to 211.99.223.2   #end   其中3行modprobe是當(dāng)你在內(nèi)核中把iptables相關(guān)功能編譯成模塊(選成)的時(shí)候才用到的(也可能不止3行)。其中插入模塊(modprobe)的幾行比較重要,有時(shí)候當(dāng)你作完NAT后,發(fā)現(xiàn)FTP不好用了,就要手工插入ip_nat_ftp模塊(語(yǔ)法是:modprobe ip_nat_ftp)。黑體的地址部分可能是需要根據(jù)你網(wǎng)絡(luò)的實(shí)際情況來決定的。最后一句話的意思是把凡是源地址是192.168.1.x的包做地址轉(zhuǎn)換,轉(zhuǎn)換為網(wǎng)關(guān)外側(cè)地址211.99.223.2。好了,你已經(jīng)建立起一個(gè)基本的網(wǎng)關(guān)了。其實(shí)iptables的功能及其強(qiáng)大,配置也非常靈活。其中的防火墻功能通過-t filter參數(shù)實(shí)現(xiàn),地址轉(zhuǎn)換功能通過-t nat實(shí)現(xiàn)(就像上面一樣)。防火墻功能(packet filter)主要是3個(gè)鏈:INPUT,FORWARD,OUTPUT,地址轉(zhuǎn)換功(nat)主要是3個(gè)鏈:PREROUTING,POSTROUTING,OUTPUT。觀察當(dāng)前的狀態(tài)可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat。