徐紅梅
摘 要:Apache服務器默認情況下只能支持傳統的動態網頁技術CGI。但Apache可以通過和其他動態網頁技術進行整合,實現更多的特性與功能。文章主要研究在Linux網絡操作系統中安裝Apache,PHP和MySQL軟件的動態網頁技術整合的安裝及所遇到問題的解決方法。
關鍵詞:動態網頁;Apache;LAMP
目前,在各大操作系統平臺上能運行且較為流行的Web服務器非Apache服務器莫屬,再加上Apache服務器屬于開源軟件,在不斷的功能新特性的開發及完善后,已經成為當前主要的Web服務器端主流軟件之一。
1 Apache服務器介紹
1.1 Apache的結構
Apache由內核、標準模塊和第三方提供的模塊3個層次組成(見表1)。
表1 Apache結構
1Apache內核
2標準默認安裝模塊集合 3標準默認不安裝模塊集合
4第三方提供的模塊
由表1可以看出,Apache服務器將默認安裝安裝圖中的內核部分和標準模塊的默認安裝模塊兩部分。在安裝過程中,如果用戶需要,可以根據自行需求,對安裝部分的模塊集合進行修改和刪除等。同時,也可選擇對第三方提供的模塊的安裝。因此,Apache服務器在模塊安裝過程中的可擴展性很強,可以滿足不同用戶的開發動態網頁的需求[1]。
1.2 Apache的運行機制
Apache2.xApache運行方式有3種,主要采用多處理模塊(Multi-Processing Module,MPM)方式,這種方式可以在服務器上同時處理多個請求操作,從而控制Apache的運行方式。
(1)預派生(Profork)MPM。這種模式首先啟動父進程,父進程監控子進程的終止或創建,父進程創建并啟動一定可配置數量的子進程,在運行中,由一定數量的空閑子進程響應客戶請求,避免啟動多余的進程造成額外的資源消耗。
(2)工作者(Worker)MPM。此模式與預派生多模塊相同,不同在于它是由子進程創建的線程監聽客戶請求,由父進程始終監控。
(3)獨立子進程(Perchild)MPM。進程和線程的混合模式,與工作MPM想比較,每個子進程創線程數量不一樣。當遇到服務器上的負載過重,此模式只在當前的子進程一致上創建新的線程為客戶提供服務而不會重新創建一個字進程。因此這種方式的可擴展性高,但可靠率低[2]。
2 Apache服務器與動態網頁技術整合
2.1 網頁技術的工作原理
網頁技術中的動態網頁的信息的處理是根據客戶的需求不斷變化的。而動態網頁就是指由客戶進行信息訪問輸入,服務器作出響應后處理不同的信息,然后把處理的結果反饋給客戶。如若用戶在信息請求時都是用的一個包含動態語言代碼的網頁,服務器端將根據由用戶發出的請求頁面的頁面名稱后綴識別使用的是哪種動態網頁技術,并把此頁面提交給解釋引擎,由解釋引擎定位動態網頁腳本代碼,并把最終的處理結果反饋給Web服務器。相較于靜態網頁而言,動態頁面是經過服務端處理后,根據用戶的不同的輸入而返回了并生成一個結果顯示在頁面上。目前常見的實現動態頁面的技術分別有通用網關接口(Common Gateway Interface,CGI),PHP,JSP.NET.ASP.NET等[3]。
2.2 網頁技術整合的原因
由于Apache在處理靜態網頁方面具有明顯優勢,在初始安裝Apache軟件時,它只支持CGI這種老式動態網頁技術,但Apache可以和很多動態網頁技術兼容,并可以安裝第三方軟件獲取更多的功能,例如LAMP(Linux-Apache-MySQL-PHP)平臺的搭建,就是在Apache中通過安裝配置第三方的軟件和模塊及和其他軟件綜合應用,實現對各種流行動態網頁的技術的支持,Apache+PHP+MySQL被認為是在Linux平臺上最佳組合之一。
3 動態網頁技術的整合—LAMP平臺的搭建問題
LAMP架構是目前開發動態網頁的一個Web服務的框架,在很多商業應用中屬于主流框架應用。它和Java/J2EE架構、微軟的.net等架構的網頁開發相比,LAMP優勢比較明顯,這也是很多企業搭建網站的首選平臺,它的跨平臺性、通用性及性價比等是其他架構平臺不能比擬的[4]。LAMP架構平臺由Linux+Apache+Mysql+PHP組成,在此對該系統平臺的安裝搭建及問題的解決方式進行了解和研究。
3.1 LAMP平臺的組成與工作原理
LMAP的各個組件主要由Linux操作系統、Apache、PHP開源腳本語言和開源數據MySQL組成。LAMP平臺工作原理如圖1所示。當一個用戶訪問PHP頁面時,先訪問Apache服務器,當Apache服務器無法識別PHP頁面,可通過Apache里面的phpmod傳給php體系,php根據用戶出過來的參數訪問mysql數據庫,mysql數據庫再把根據參數查詢出來的表返回給PHP,由PHP直接生成HTML網頁傳回給Apache服務器,供用戶訪問。
3.2 LAMP平臺搭建配置的常見問題
安裝一個LAMP的應用軟件,首先必須在Linux操作系統下安裝好Apache,PHP和MySQL。相對于靜態Web服務器,在平臺搭建的配置安裝過程中,會出現很多安裝問題,由于配置的復雜性,不能一一列舉解決方式,從中選出幾個常見的問題,提出解決方案。
3.2.1 在安裝Apache完畢啟動時,出現提示性錯誤,Apache無法正常啟動
Apache無法正常啟動,系統會在顯示器上顯示錯誤提示信息,第一種是httpd.conf文件配置出錯,對于這種情況,Apache啟動會給出相應的相關提示信息,用戶可以根據提示信息更改httpd.conf中的配置以修復錯誤。第二種是可以查看日志信息,通過日志信息解決錯誤信息。例如防火墻及SELinux是否允許Apache服務器運行。第三種,監聽端口被占用,Apache默認的監聽端口是80.提示有進程占用此端口,Apache啟動時也會出現錯誤。用戶可以通過netstat–an命令獲取系統當前的端口使用情況,關閉占用端口進程或用kill命令結束占用端口的進程號[5]。
3.2.2 無法載入PHP模塊
由于centos啟動受SELinux保護,在完成PHP模塊配置后,重啟Apache,將出現PHP模式無法載入的錯誤。這是由Linux的selinux保護模式引起的,可以通過以下方法解決。但這種解決方法是臨時的,當計算機重啟后配置將會失效,如果希望永久生效,可以編輯/etc/selinux/config文件,找到配置選項,SELINUX=enforcing更改為以下內容:SELINUX=disabled。最后重啟Apache服務器。
操作命令
#vi /etc/selinux/config
設置內容
SELINUX=disabled
3.2.3 忘記root用戶口令解決方法
MySQL的系統管理員賬號為root。擁有數據庫中最高級別的權限,如果忘記root用戶口令,可以通過結束MySQL進程,一—skip-grant-tables選項啟動MySQL。然后進入MySQL并更改root用戶口令。
操作命令
#killall mysqld
#/usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
#./mysql
Mysql>use mysql
mysql> update user SET password=password(‘userpasswd) WHERE
user=root;
[參考文獻]
[1]余柏山.Linux系統管理與網絡管理[M].北京:清華大學出版社,2011.
[2]鳥哥.鳥哥的私房菜—服務器架設篇[M].3版.北京:機械工業出版社,2013.
[3]梁如軍.Linux應用基礎教程-RedhatenterpriseLinux[M].北京:機械工業出版社,2013.
[4]張建華.LAMP從入門到精通[M].杭州:浙江大學出版社,2006.
[5]巴雷德.PHP應用程序安全編程[M].北京:機械工業出版社,2010.