網站建設已經成為當今社會的一個熱門話題,形形色色的網站如雨後春筍般發展起來。我所在單位通信標准化推進中心擁有豐富的標准資源,這些資源又是企業研發的重要信息,因此我們就建立了通信標准與質量信息網(www.ptsn.cn.net ),把我們的資源在Internet網上發布,供用戶查詢、下載。
系統選擇
網站建設不外乎兩種方案:一種是采用微軟的一系列產品,另一種是使用Linux系統以及一些第三方的網絡產品,兩者系統配置如下表:
操作系統 Win NT Linux
WWW服務器 IIS Apache
網絡數據庫 MS SQL Server MySQL
信件服務器 Exchange Sendmail
編程語言 ASP PHP
由於微軟的網絡產品技術比較成熟,最初我們選擇了微軟的Win NT 4.0、IIS 3.0、SQL Server 6.5、Exchange 5.5來建設網站。但是經過一段時間的試運行我們發現了一些問題,比如,對用戶進行身份驗證時由於用戶自身的網絡接入不同而造成了一部分用戶必須提升為管理員權限才能下載標准全文,甚至個別用戶提升為管理員權限後仍不能下載全文。另一方面,系統的穩定性、安全性也讓人擔憂,曾經有幾次系統莫名奇妙地死機,使我們的網站長時間不能正常工作,而且我們的系統管理員利用Win NT本身的漏洞可以通過浏覽器“竊取”數據庫和系統的重要數據。最後我們決定改用Linux方案。
Linux目前的版本比較多,每個版本都有其獨到的地方,但我們考慮到Intel和Netscape兩大公司對RedHat的大力支持,加上RedHat獨有的RPM(RedHat Package Manager)軟件包管理器,我們最終選擇了RedHat Linux6.0(目前出到6.2版本)。
系統分析和關鍵問題解決
我們重點解決了以下幾個問題:
1.用戶身份認證
通信標准與質量信息網的標准資源只對網員開放,只有加入信息網的網員可以查詢和下載標准信息,按服務項目的不同可以分為A、B、C、D、Z等幾類網員。為此,我們必須對用戶身份進行驗證,並且分成不同的級別。經過分析研究,發現有三種方法可以解決這個問題:一種是通過程序來控制,也就是在用戶訪問受限資源以前,程序讓用戶輸入用戶名/口令來驗證身份。這樣做存在一個問題是用戶只需記下受限資源的鏈接,下一次就可以避開身份驗證直接訪問受限資源。另一種是用Apache自帶的mod—auth模塊來實現身份驗證,但實現起來手工成份太大,不方便。還有一種是與MySQL相結合的mod—auth—mysql模塊,它可以與MySQL數據庫結合由系統來實現身份認證。我們選擇了第三種實現方法。
2.Linux與Win 98共享資源
考慮到在將來開發過程中要對程序做大量修改、調試,就要涉及到現有的Win 95/98操作系統與Linux交互的問題,雖然可以用FTP把程序傳上去,但這樣做是很繁瑣的:程序員每次要把程序傳到Linux上調試,修改一個小錯誤就可能要傳好幾次,很不方便。後來我們了解到Linux帶有一套Samba程序,可以使Linux的共享目錄讓Win 95/98在“網上鄰居”中訪問它,這樣我們只要把Linux的共享資源在Windows中映射成一個盤符就可以方便地存取了。
3.數據保護
考慮到在系統調試的過程中可能會需要重新安裝,所以我們在進行系統分區時單獨分出兩個硬盤分區,用於存放網站的數據和數據庫數據,這樣做的好處是當系統重新安裝時不會影響有用的數據,只要將相應數據所在分區映射成相應的目錄即可。這樣,重新安裝Linux後,也不用把這些數據拷來拷去。但是必要的備份工作是必不可少的。如果系統中有雙硬盤或多硬盤,可以將數據與系統分開存放。
硬件選擇
由於Linux對系統資源的要求並不高,而且目前各品牌的服務器配置都很高,所以一般來說,任何一個品牌的服務器都可滿足用戶的需要。為了使系統在大量用戶訪問時不會太慢,筆者建議采用主頻400MHz、內存128MB以上的服務器,我們的系統最終采用了HP LH3服務器,PⅢ500,256MB內存,27GB硬盤,其中有9GB熱插拔硬盤。之所以采用這台服務器,是因為筆者曾對三台不同配置的機器做了比較:
1.75MHz,16MB內存的PC機。它安裝運行Linux所需的時間明顯很長。這台機器不支持光驅啟動,在安裝時不能發揮RedHat光驅啟動、自動安裝的優勢,而且在編譯MySQL時用了兩個多小時,令人心焦。
2.HP E50服務器,400MHz,128MB內存。它安裝運行Linux的速度已經相當快,從開始安裝系統到完成MySQL等軟件的安裝只需兩個小時左右,但是安裝MySQL還是占用了近二十分鐘。系統在運行過程中的速度令人滿意,即使有多個用戶同時訪問網站或對數據庫進行大數據量查詢,也不會有太慢的感覺。
3.HP LH3服務器,500MHz,256MB內存。它編譯MySQL只需兩三分鐘,即使有幾百兆數據在進行傳輸,也不會影響主頁的浏覽和數據庫的查詢。
軟件選擇與安裝
雖然RedHat 6.0已帶有Apache、PHP等軟件,但由於它不帶有MySQL數據庫,而Apache、PHP、MySQL 、mod—auth—mysql的編譯過程之間還存在一定的聯系,因此要對上述軟件的源代碼進行單獨編譯。上述軟件可以從下列站點獲得:
Apache—1.3.6.tar.gz,從http://www.apache.org 獲得;
PHP-3.0.12.tar.gz,從http://www.php.net 獲得,而且這裡是PHP的“老家”;
MySQL-3.22.27.tar.gz,從http://www.mysql.com 獲得;
mod—auth—mysql-2.20.tar.gz,從http://bourbon.netvision.net.il/mysql/mod—auth—mysql/ 獲得。
注意:以上均為源代碼而非RPM包。
選擇好了軟件,就要著手安裝Linux系統以及相應的軟件,由於講述Linux安裝和調測的資料已經很多,這裡就不再詳細討論,但以下幾點需要注意:
1.由於Apache要用到PHP模塊和mod—auth—mysql模塊,所以在編譯Apache之前要先編譯這兩個模塊,並激活該模塊,在編譯Apache時加載這兩個模塊。
2.在安裝完MySQL後要為MySQL增加一個系統用戶,讓MySQL以該用戶的身份運行,因為在缺省狀態下MySQL是以Root身份運行,這樣會使系統變得不安全。但要注意更改var目錄的所有者為該用戶,並有744(rwxr--r--)的權限。
3.為使系統更安全,對於一些有安全漏洞的端口應該關閉,比如FTP的21端口,Telnet的23端口等等。即使不關閉也應對用戶權限作嚴格管理。
網站開發
系統安裝完畢,一切都准備就緒了,剩下的就是用各種工具來建設我們的網站了,FrontPage、PhotoShop等工具自然是少不了的,但由於我們還要編輯PHP程序和管理MySQL數據庫,所以我們還用到了下面這兩個工具:EditPlus,phpMyAdmin。
EditPlus:是一個文本編輯環境,但它不但能編輯普通的文本文件,還能識別HTML文件,並將特殊記號用特殊的顏色顯示出來,更好的是它還能識別PHP的函數、變量和表達式,並用相應的顏色顯示出來。
phpMyAdmin:是用PHP編寫的一個用於管理MySQL數據庫的軟件,它可以讓用戶以不同的身份來訪問數據庫並具有相應的不同權限。對於數據庫的Root用戶,不但可以對數據庫、表和字段進行浏覽、增加、修改、刪除等操作,還可以將一個表的結構或數據導入一個文本文件,生成的文本文件是以創建表或插入數據的形式顯示,例如:
create table tablenamr {......}
insert tablename ......
這項功能的好處在於方便了表在庫之間進行復制和表中數據的備份。
phpMyAdmin_2.0.5.tar.gz可以從http://www.phpwizard.net/phpMy Admin/獲得。
我們的網站從去年7月份運行到目前為止,已經可以為用戶提供可查詢標准3萬多條,其中可下載全文的標准有2萬多條,發展網員300多家,收入近150萬元。
(作者:李鲲程 2000年05月18日 18:58)