歡迎您光臨本站 註冊首頁

Linux系列-Red Hat5平台下的LAMP網站服務搭建(一)

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
Linux系列-Red Hat5平台下的LAMP網站服務搭建(一)
編譯安裝Apache伺服器&httpd服務的基本配置
LAMP架構是目前最為成熟的一種企業網站應用模式,指的是協同工作的一整套系統和相關軟體,能夠提供動態Web站點服務及其應用開民環境.LAMP這個詞是一個縮寫,具體包括:Linux操作系統,作為LAMP架構運行的基礎;Apache網站伺服器作為LAMP架構的前端;MySQL資料庫伺服器作為LAMP架構的後端;PHP(或Perl、Python)編寫語言,作為三種開發動態網頁的編程語言.LAMP平台具有成本低廉、可定製、易於開發、方便使用、安全和穩定等優勢.
從本次開始我將會和大家共同探討Red Hat5平台下的LAMP網站服務搭建,其中包括編譯安裝Apache伺服器、httpd服務的基本配置、使用awstats分析Web日誌、httpd服務的訪問控制、MySQL資料庫的安裝和管理、構建PHP環境、常見論壇搭建等.因為涉及的內容較多,大家可能也看到標題上多了序號和子標題.
第一部分:安裝httpd伺服器
在配置Apache Web伺服器之前,需要正確安裝好httpd伺服器軟體.在RHEL5系統中, 可以選擇兩種方式行安裝,第一種方式是通過RHEL5系統光碟自帶的RPM包安裝,第二種方式就是下載最新版本的httpd源代碼,釋放後進行編譯安裝.前者簡單、快速,但在功能上存在局限性,實際的生產環境中,編譯安裝的方式應用要更加廣泛.本次我們主要介紹源碼編譯安裝.
1. 獲取軟體包
獲取軟體包可發通過Apache服務軟體的下載頁面:http://httpd.apache.org/download.cgi下載到各個版本的httpd軟體包,或者使用wget工具下載httpd-2.2.9.tar.gz源碼包文件
wget http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
2. 解壓並釋放源碼包


說明:將httpd源碼包解壓並釋放到/usr/src/目錄中,執行cd命令切換到展開的源碼目錄. 3. 配置編譯選項
在配置前可以先執行「./configure –help」命令查看各種配置項的詳細信息,以便實現更靈活,更豐富的功能定製配置. 說明:--prefix用於指定httpd服務程序將要安裝到的系統目錄,這裡設置的是預設目錄「/usr/local/apache2」;--enable-so用於能夠使httpd服務動態載入模塊的功能;--enable-rewrite用於能夠使httpd服務具有rewrite網頁地址重寫功能.
4.編譯伺服器程序 說明:完成配置以後,需要執行「make」命令進行編譯,將源代碼轉換為可執行的程序.
5.安裝已編譯完成的程序 說明:執行「make install」命令完成的安裝過程,將已經編譯完的httpd程序及相關目錄、文件複製到預設的安裝目錄中.
第二部分:httpd.conf配置文件解析
Httpd.conf文件是httpd服務的主配置文件,其中包含的配置項直接決定著Web伺服器的各項運行參數及伺服器性能.要做姨LAMP,我們必須了解httpd.conf中的常用配置項的功能及作用.
1. httpd.conf配置文件的結構
httpd.conf文件由註釋行和設置行兩部分組成,註釋行以「#」開始,包含了對配置行說明和解釋的內容,並不是有效的配置項;設置行不以「#」開始,是配置文件中真正有效的設置內容.配置文件中大量的註釋行雖然對理解配置項的含義有所幫助,但是過多的註釋行也會對配置文件的閱讀造成一定的干擾,我們可以使用如下的命令去除掉註釋行.
[root@www ~]# cd /usr/local/apache2/conf/
[root@www conf]# cp httpd.conf httpd.conf.bak


[root@www conf]# grep -v '#' httpd.conf.bak | grep -v '^$' > httpd.conf
2. httpd.conf中的全局配置、
httpd.conf配置文件中包括有相當數量的全局配置項,這些配置項不包括在任何區域中,決定了Apache伺服器的全局參數.以下是httpd.conf文件中常用到的全局配置項內容及註解.

ServerRoot "/usr/local/apache2" //用於設置httpd伺服器的根目錄
Listen 80 //用於設置監聽的埠號
User daemon //用於設置運行htttpd進程時的用戶身份
Group daemon //用於設置運行htttpd進程時的組身份
ServerAdmin web@zpp.com //用於設置管理員的E-mail地址
ServerName www.zpp.com //用於設置FQDN
DocumentRoot "/usr/local/apache2/htdocs" //用於設置網頁文檔根目錄
DirectoryIndex index.html index.php //用於設置網站的默認首頁
ErrorLog "logs/error_log" //用於設置錯誤日誌文件的路徑和文件名
LogLevel warn //用於設置記錄的級別,默認為Warn(警告)
CustomLog logs/access_log common //用於設置訪問日誌文件的路徑和格式類型
PidFile logs/httpd.pid //用於設置保存httpd伺服器程序進和號(PID)文件
Timeout 300 //用於設置伺服器與瀏覽器之間網路連接的超時時間


KeepAlive On //用於設置是否使用保持連接功能
MaxKeepAliveRequests 100 //用於設置客戶端每次連接允許請求響應的最大文件數
KeepAliveTimeout 15 //用於設置保持連接的超時秒數
Include conf/extra/httpd-vhosts.conf //用於包含另一個配置文件的內容
… …
3. httpd.conf中的區域設置
除了全局設置項外,htttpd.conf文件中的在多數配置都是包括在區域中的,區域設置使用一對組合標記,限定了配置項的作用範圍,例如,配置文件中常用的目錄區域的形式如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
說明:在以上的區域定義中,使用<Directory />定義區域的開始,使用</Directory>定義該區域的結束,其間的設置內容只作用於區域內部,而不會在全局或其它區域中生效.目錄區域設置主要用於為特定的目錄,設置訪問控制許可權.除了目錄區域外,經常會設置如「<VirtualHost>… …</VirtualHost>」這樣的虛擬主機等的區域.
第三部分:web站點的故障排錯與性能測試
1.檢查httpd.ocnf文件的語法設置
在對httpd.conf文件進行修改後,建議使用帶「-t」選項的apachetl命令對配置內容進行語法檢查(也可發使用「httpd –t」命令).如果沒有語法錯誤,將會顯示「syntax OK」的信息.否則,需要根據錯誤信息中的提示,將語法錯誤修正後再重新檢查.用法如下圖:



[root@www conf]# /usr/local/apache2/bin/apachectl –t
Syntax OK
[root@www conf]# /usr/local/apache2/bin/httpd –t
Syntax OK
[root@www conf]#
2.啟動、終止及重啟httpd服務
使用帶「start」選項的apachectl命令可發啟動htttpd服務.
例如:使用apachectl腳本程序啟動httpd服務,並觀察httpd服務的監聽狀態.

[root@www ~]# /usr/local/apache2/bin/apachectl start
[root@www ~]# netstat -anpt | grep :80
tcp 0 0 :::80 :::* LISTEN 21669/httpd
[root@www ~]#
說明:將上述apachectl腳本命令的「start」選項替換為「stop」、「restart」時,可分別用於終止、重啟httpd服務.若希望在伺服器開機后自動運行httpd服務,可以將對應的啟動命令寫入到「/etc/rc.d/local」文件中.
3.排除httpd服務的個別啟動狀態
1>.無法確定Web伺服器主機名的故障
當httpd服務識別的主機名與伺服器實際的主機名不一致時,可能導致啟動httpd服務的時侯反應非常緩慢,且出現如下命令提示信息.

[root@www ~]# /usr/local/apache2/bin/apachectl –t
httpd: apr_sockaddr_info_get() failed for www.zpp.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
[root@www ~]#
參考下列步驟可發解決這個問題.
編輯httpd.conf主配置文件,添加配置行「ServerName www.zpp.com」,指定完整的主機名.若缺少「ServerName」配置行,httpd伺服器可能會將「127.0.0.1」作為主機名.
編輯「/etc/sysconfig/network」文件,修改主機名,例如「HOSTNAME=www.zpp.com」.
編輯「/etc/hosts」文件,添加伺服器的主機名、IP地址記錄,如「192.168.1.1 www.zpp.com 」.


2>.TCP80埠已被佔用的故障
當啟動httpd服務的時侯出現「… …could not bind to adderss [::]:80」的提示信息時,則表示使用的埠(默認為80)已經被其它進程佔用.這時只需要執行「netstat –anpt | grep :80」命令,找出佔用80埠的進程並關閉掉即可.很多時侯是系統原有RPM方式安裝的httpd服務進程造成的,只要停用原有的httpd服務,並將自啟動狀態設置為關閉即可.
如下圖所示是此類故障的效果及解決辦法.

[root@www ~]# /usr/local/apache2/bin/apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98) Address already in use: make_sock:could not bind to address 0.0.0.0:80
no listening sockets available,shutting down
Unable to open logs
[root@www ~]# netstat -anpt | grep :80
tcp 0 0 :::80 :::* LISTEN 21669/httpd
[root@www ~]# killall -9 httpd
[root@www ~]# chkconfig --level 35 httpd off
[root@www ~]# /usr/local/apache2/bin/apachectl start
4.測試httpd伺服器的性能
Httpd服務自帶了一個壓力測試工具AB(Apache Benchmark,Apache基準測試工具),用於檢測Web站點的性能表現,如併發平均響應時間、速度以及併發連接處理能力等.AB命令工具位於安裝目錄中的「bin/」文件夾下,使用該命令的簡單格式如下:

Ab [-q] –c 併發請求數 –n 總的請求數 [http://] 域名 [:埠]/路徑
說明:使用-q選項時,將不顯示測試進度信息,當測試的目標是Web站點的根路徑時,注意的「/」符號不能省略.指定的併發請求數不能大於總的請求數.下面我們來舉例說明ab命令的使用方法.
1>.使用ulimit命令修改最大文件數限制
在RHEL5系統中,默認允許打開的最大文件數為1024.由於使用AB測試工具時可能需要同時打開更多的文件,因此需要使用ulimit命令突破這個限制.Ulimt是一個Bash內部的命令,可以用於對Shell進程使用的系統資源進行限制.

說明:使用ulimit命令將允許打開的最大文件數修改為10000
注意:如果不更改最大文件數限制,在使用AB工具時可能會出現「socket:Too many open files(24)」的錯誤提示信息,導致測試無法進行.
2>.使用AB命令進行壓力測試
執行AB測試命令后,通過命令輸出的結果判斷Web伺服器的響應情況及性能表現

[root@www ~]# /usr/local/apache2/bin/ab -q -c 2000 -n 4000 http://www.zpp.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.zpp.com (be patient).....done

Server Software: Apache/2.2.9
Server Hostname: www.zpp.com
Server Port: 80

Document Path: /
Document Length: 44 bytes

Concurrency Level: 2000 //用於併發連接測試的請求數
Time taken for tests: 3.309 seconds //測試過程消耗的時間
Complete requests: 4000 //測試過程中總共完成的請求數
Failed requests: 0 //失敗的請求數量
Write errors: 0
Total transferred: 1190484 bytes //測試過程中的網路傳輸量
HTML transferred: 179388 bytes //測試過程中的HTML內容傳輸量
Requests per second: 1208.97 [#/sec] (mean) //伺服器平均每秒響應的請求數
Time per request: 1654.301 [ms] (mean) //伺服器平均每請求的響應時間
Time per request: 0.827 [ms] (mean, across all concurrent requests)
Transfer rate: 351.38 [Kbytes/sec] received



Connection Times (ms) //連接時間統計信息
min mean[ /-sd] median max
Connect: 0 212 690.9 39 3131
Processing: 1 158 33.3 163 292
Waiting: 0 88 38.8 101 205
Total: 84 370 685.6 204 3200

Percentage of the requests served within a certain time (ms)
50% 204
66% 211
75% 230
80% 244
90% 292
95% 3152
98% 3180
99% 3188
100% 3200 (longest request)
第四部分:Web站點的典型應用
一. 構建虛擬Web主機
虛擬Web主機指的是在同一台伺服器中運行多個Web站點的應用,其中的每一個站點並不獨立佔用一台真正的計算機.例如,當用戶訪問兩個不同的網站www.zou.com、www.pan.com時,所看到的網頁內容也不相同,而如果這兩個網站實際上是在同一台伺服器中運行的,那麼就可以稱為是「虛擬的」Web主機,一般簡稱「虛擬主機」.
1. 構建基於域名的虛擬主機
本實驗以實現兩個虛擬Web主機www.zou.com和www.pan.com為例,其對應的伺服器IP地址為192.168.1.1.構建過程參考如下:
1>.確定伺服器的主機名、IP地址等參數.
向域名註冊機構申請Web站點的域名,是的所有的用戶在訪問域名www.zou.com、www.accp.com時,指向的IP地址對應為192.168.1.1.
2>.分別準備兩個虛擬站點的網頁文件 說明:此處我們為了稍後的測試分別建立了「/usr/local/apache2/htdocs/zoucom/index.html」和「/usr/local/apache2/htdocs/pancom/index.html」兩個虛擬站點的默認首頁
3>.修改httpd.conf文件,添加虛擬主機配置
編輯httpd.conf文件,使用「Name VirtualHost」配置項指定運行虛擬主機的伺服器IP地址,並為每一個虛擬站點增加一段「<VirtualHost虛擬主機IP地址>… …</VirtualHost>」區域設置,其中至少包括虛擬主機的域名、網頁文檔根目錄的配置行,其他的設置內容可發參考httpd.conf文件中的全局配置.如果虛擬主機數較多,建議為每一個虛擬主機使用獨立的訪問日誌和錯誤日誌文件. 4>.重新啟動httpd服務 5>在客戶機瀏覽器中訪問虛擬Web站點


要確保客戶機能夠正確解析這兩個虛擬主機的域名,並能夠連接到該伺服器,如果在實驗中沒有搭建可用的DNS伺服器,也可通過修該客戶機的hosts文件來完成域名解析——如果是Linux客戶機,則修改「/etc/hosts」文件;如果是windows客戶機,則修改「C:WINDOWSsystem32drivershosts」文件,添加相應域名到IP地址的映射記錄即可.
在客戶端瀏覽器中分別訪問兩個虛擬主機站點www.zou.com、www.pan.com,將會看到不同的網頁內容
瀏覽網站www.zou.com所看到的效果: 瀏覽網站www.pan.com所看到的效果: 2. 構建基於IP地址的虛擬主機
構建基於IP地址的虛擬主機伺服器時,與構建基於域名虛擬主機的過程基本類似.只不過中httpd.conf文件中的配置稍微有些區別:不再需要指明「NameVirtualHost」配置行,每個虛擬主機的「<VirtualHost虛擬主機IP地址>… …</VirtualHost>」區域設置中,也要改為各自域名對應的IP地址.
下面以域名www.zou.com對應的IP地址為1.1.1.1,www.pan.com對應的IP地址為2.2.2.2為例,在httpd.conf文件中的設置形式如下圖:
3. 構建基於埠的虛擬主機
構建基於埠的虛擬主機伺服器時,httpd服務監聽的IP地址、埠號需要與各虛擬主機使用的IP地址、埠號相對應,一般也無需指定「NameVirtualHost」配置行.
下面以訪問80埠時對應站點www.zou.com,訪問8080埠時對應站點www.pan.com為例,在httpd.conf文件中的設置形式如下: 二. 建立系統用戶的個人主頁
Httpd服務自帶的個為主頁功能,可以非常方便地為Linux系統用戶提供Web站點服務.伺服器呂啟用該功能參后,每個系統用戶只需在宿主目錄中的相應位置(默認為public_html子目錄)建立網頁文件,就可以在瀏覽器中訪問自己的個人主頁了.


下面我們以為Linux系統用戶zpp建立個人主頁為例,講解在httpd伺服器中實現個人主頁服務的過程
1. 修改httpd文件,啟用個人主頁功能
添加「UserDir public_html」配置行,並添加「<Directory「/home/*/public_html」>… …</Directory>」目錄區域設置,以便允許客戶機訪問系統用戶的個人網頁目錄. 2. 建立個人主頁測試文件
切換為目標用戶zpp,在宿主目錄中建立public_html文件夾,並添加測試網頁文件. 由於Linux系統對用戶宿主目錄默認設置了較嚴格的訪問許可權,因此還需要為其他用戶增加執行許可權,以便運行Web服務的程序用戶有許可權訪問用戶宿主目錄中的public_html子目錄. 3. 重啟httpd服務 4. 在客戶機瀏覽器中訪問個人主頁 OK!通過本次對編譯安裝Apache伺服器和httpd服務的基本配置,我們已經對這個神秘的東西有所了解,但這還遠遠不夠,我們的目的是讓整個LAMP網站服務平台,健康穩定的運行下去,接下來更精彩!拭目以待吧!


[火星人 ] Linux系列-Red Hat5平台下的LAMP網站服務搭建(一)已經有814次圍觀

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