基於RedHat系統來搭建web服務

    web是服務是當今互聯網運用的最廣泛的服務之一,如何搭建,優化web服務是一個網站性能優劣的前提條件之一,我這裏主要就來講述基於RedHat系統來構建web服務,實現web應用的別名訪問,每目錄控制,認證訪問,虛擬化多web服務。

    這裏我主要是講述基於RedHat的RPM包來實現web服務的應用,並使該服務與php,mysql結合工作。 現在最流行web服務軟件當屬Apache,最有潛力的web服務軟件是Nginx.RedHat上web服務的應用程序名爲httpd。下面我們就來利用yum來安裝web服務,如下圖:

   安裝完成後我們可以用rpm -ql httpd 來查看httpd服務所生成的文件:如下圖:

    

     網頁文件所在位置:

     

    其中存放了我們要展示的網頁文件。

  這是主要的幾個配置文件,下面我們就來分析httpd的主配置文件都做了哪些設定:如下圖:

 注意,這只是服務的根目錄,與我們系統的根目錄沒有關係。當我們在遙瀏覽器瀏覽的時候就是以此目錄爲根目錄的。

     我們知道每一個服務請求都要CPU分配進程各內存空間來運行進程,爲了服務的高效率,所以內核有了進程和線程的區分來提高效率。對於web服務,當一個用戶的請求進來之後我們CPU都會開啓一個進和來提供服務,並維持此服務的連接,來響應用戶的操作請求,一個請求的建立要用到TCP/IP協議中的三次請求和四次斷開,如果我們一直的請求和斷開,這也會很消費CPU的,所以有了長連接,就是當一次請求建立之後在一定限定內該服務可以不再進行多次的請求,斷開連接。可這樣也有不合理的地方,我們想,可如果在一次請求之後就不再作任何操作之後我們的CPU是否還要爲這樣的請求來維護一個連接呢?顯然是不應該的,於是就有了超時時間,可是如果一個先進來請求一直處於活動狀態,致使別的請求一次都無法進行連接請求,這顯然對於服務來說也是不合理的,所以就有了最大連接次數,當超過此連接次數後,服務會自動斷開這樣的連接,如果連接還要繼續就要重新的那家立TCP會話也就是三次請求和四次斷開。

   於是就有了下面的配置文件的限定:

     RedHat系統上的web有兩種模式,1.prefork模式和worker模式。profork模式是啓用每一個請求啓用一個進程來進行響應,且各個請求之間是獨立的空間,請求之間沒有影響;而worker模式是用線程來響應服務請求,線程之間共享內存,這樣可以使訪問同一個網頁頁面的時候直接從緩存中讀取,這樣大大的加快了響應的效率。我們同樣知道,線程是進程所分的子進程,這樣可能會導致當一個線和崩潰的時候導致整下進程的崩潰,影響到別的服務。 下面是對於進程響應和線程響應的服務配置:

 我們知道web服務通常是監聽在80端口,其實這是服務別默認是配置,我們也可以作修改爲別的端口,只不過這樣會導致在別人不知的情況下無法訪問我們的web服務:如下圖:

  配置文件中也定義了默認的網頁默認的存放位置,當有請求的時候會自動到該目錄下找相應的網頁文件:如下圖:

   當我們不作任何配置修改,其實web服務就可以啓動了,網頁頁面是服務默認的測試頁面,我們用servivce httpd start 來啓動服務,輸入http://ip 就可以到這樣的網頁頁面:

 這就說明我們服務啓動已經正常。

下面我們來說明,如何顯示我們自定義的網頁文件,上面通過我分析配置文件我們已經知道網頁文件保存在/var/www/html/中,是以index.html的文件。我們做這樣的操作就可以顯示我們想要的網頁了:其中的"<h1>……</h1>"是一種固定格式,用來定義生效其包含在內的數據的屬性,這裏定義的是文字的大小屬性。

   然後打開瀏覽器就可以看到我們定義的網頁了,如下圖:

 

    這就是基本的定義網頁文件。

     *下面我們來定義別名的控制;

    我們剛纔提到服務的網頁文件在/var/www/html/ 目錄中,這是服務默認的,但我們可以定義別名來使處於不同目錄路徑下的網頁文件被訪問到,但要注意的是要關閉selinux,因爲在RedHat系統上,默認是不允許這樣做的。 操作如下圖: 其中要注意的是我們定義的目錄別命中“/”的使用。

      

  並在/web/xiaowei/目錄中做以下操作:

      echo "<h1>xiaowei</h1>" > /web/xiaowei/index.html

   然後訪問就可以得到下面的結果:

 這樣就建立了別名訪問。

   * 下面我們來操作基於每目錄的控制訪問:如下圖:

   我們可以在這裏進行訪問控制,這裏定義的是允許所有,比如,當我們想只允許172.168.121.1訪問的時候我們可以把其中的 allow from all 改爲 allow from 172.16.121.1 .默認是拒絕所有,而只允許該ip的主機 。

   * 然後我們來說明基於認證的訪問控制:

     我們在配置文件中的合適們置做如下操作:

 這就是對/var/www/html/ 目錄的訪問控制,其中的AuthUserFile項是我們自己生成的用戶及密碼的存放位置,只有在此目錄中的用記才能訪問/var/www/html/目錄下的網頁文件。至於用記及密碼,httpd服務爲我們提供了一個很方便的生成器,#htpasswd -c(清空) -m(md5加密) /etc/httpd/conf/.htpasswd 用戶名          然後確認兩次就可以了。

 那麼,我們下次再訪問/var/www/html/ 下的網頁文件的時就需要密碼認證了,如下圖:

  *下面我們來講述基於一個ip,利用虛擬端口來提供多web服務的設置,衆所周知,ipv4地址的緊缺已是一個不爭的話題,可當我們想建立多個web服務的時候,我們要支申請多個僅有的ip地址嗎?顯然,這也是不現實。可我們如何來保證一個ip提供多個web服務呢?這就用到了基於一個ip虛擬ip服務, 不過我們要行取消配置文件中默認的服務根目錄文件 <Directory "/var/www/html">,並開啓NameVirtualHost *:80選項:

做如下圖的配置:

  完成之後要關閉selinux進行訪問,建立/web/vhosts/www{a,b,c}三個目錄,並分別寫入aaa,bbb,ccc來作驗證:                                              並在windows 的dns配置加入172.16.121.1 www.a.com;   172.16.121.1 www.b.com; 172.16.121.1 www.c.com ,作DNS解析使用。然後訪問就會有如下的訪問結果:

 

 這就是基於虛擬主機根據服務名來提供的多web服務。

 

     我們知道除了html格式的網頁文件外還有php格式 的文件,而我們的web服務如何來提供這樣的服務頁面呢?其實也很簡單,在RedHat的系統上基於RPM安裝包的的web服務,php是以模塊的方式做進內核當中的。我們只需要裝載這樣的模塊就可以實現提供php格式的網頁的瀏覽:我們這裏用php53來安裝:   

    #yum -y install php53

 並把/var/www/html/index.html改爲/var/www/html/index.php 編輯index.php文件,作如下編輯:

      

 這是php的測試頁面。默認格式 。

 然後我們再訪問http://172.16.121.1的web服務就會出現下面的網頁。

 

 這就說明我們的php已經和httpd結何工作了。

    下面我們就來使php和mysql結合工作來爲httpd服務提供數據查詢:

用yum安裝包 mysql、php53-mysql 和mysql-server 這裏我就不多說了,和前面安裝的包一樣。

  這樣重啓服務就可以讓,httpd,php,mysql結何工作了,效果如下:

  

如果出現這樣的畫面,我們的httpd已經和 mysql結合工作了。

     這樣,我們就完成了基於RPM包安裝的httpd服務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章