1. 程式人生 > 實用技巧 >Apache搭建WEB網站

Apache搭建WEB網站

目標:

。學習Apache HTTP伺服器的主要特性

。能夠配置Apache中重要的引數

。學習每目錄的配置

。學習如何在Apache中使用CGI

。認識關鍵的模組

。理解代理web伺服器

Apache概述:

。程序控制:
    。在需要時喚醒程序
    。按需調整程序數量
。動態裝載模組:
    。在執行時間擴充套件而無需重新編譯
。虛擬主機:
    。多個web站點可以共享相同的web伺服器
服務配置檔案:HTTPD
。型別:SystemV管理的伺服器
。包:httpd,httpd-devel,httpd-manual
。程序:/usr/sbin/httpd
。指令碼:/etc/init.d/httpd
。埠:80(http),443(https)
。配置:/etc/httpd/*,/var/www/*
。與之相關的:system-config-httpd,mod_ssl
Apache配置
。主服務配置儲存在in
/etc/httpd/conf/httpd.conf
    。控制web服務的引數,常規虛擬主機和訪問
    。定義檔名和檔案型別
。模組配置檔案儲存在/etc/httpd/conf.d/*
。DocumentRoot定義為/var/www/html/
/etc/httpd 是serverroot
Apache資料夾結構:
/etc/httpd/conf/httpd.conf  //主配置檔案,include也就是會包含*.conf檔案
/etc/httpd/conf.d/*.conf  //存放各式各樣的.conf結尾,是主配置檔案的擴充
Apache伺服器配置
。最少和最大的備用伺服器程序
。日誌檔案配置
。主機名查詢
。模組
。虛擬主機
。使用者和組
/etc/httpd/conf/httpd.conf  //###三個#標記出全域性配置
1.global(全域性配置)
  serverroot “/etc/httpd”
  PidFile   run/httpd.pid //pidfile當開啟這個http服務的時候,就會生成/run/httpd.pid的程式,防止程式多次啟動
  Timeout  120 //如果120s沒有響應會認為斷線
  KeepAlive off 飽和,伺服器端和客戶端是永久建立連線的關係。
  MaxKeepAliveRequests  100  //伺服器儲存多少活躍的使用者
  KeepAliveTimeout 15  // 當一個客戶端15s沒和伺服器互動的時候就把客戶端踢出去
  Listen 80  //預設埠80,可以修改。儲存之後可以再vim介面重啟
    重啟方法,進入命令列模式:!/etc/init.d/httpd restart即可進行重啟
  LoadModule裝載的模組,可以新增#進行註釋。每個模組就會消耗記憶體。
  Include conf.d/*.conf  //serverroot相對路徑下的conf配置
  User apache
  Group apache
  由於是apache使用者,所以需要給/var/www設定成apache使用者可以完全訪問的許可權
  
  prefork和worker模式區別
  prefork模式:有一個父程序,然後每個使用者連線進來就會有一個程序提供服務,效率更高,消耗更大的記憶體。256個使用者就需要256個程序提供服務。
  worker模式:一個程序會產生很多執行緒,一個執行緒服務一個使用者。多執行緒多程序。可能只需要啟動兩個程序就能滿足256個使用者,每個程序128
  prefork模式呼叫的是程式設計的fork函式實現
  worker模式使用c語言的new threading函式來實現。不安全。依賴於非常安全的處理器。
  
  prefork怎麼進行設定的:
  預設redhat使用prefork模式。一開始的時候回預先啟用一部分程序處於空閒狀態。處於idle狀態。
  startservers 8  //啟動的時候啟用8個程序
  MaxClients  256  //預設最大支援256個併發程序。當第257個使用者訪問的時候會提示請等待等
  MaxRequestsPreChild  4000  //有一個主控程序呼叫程式的,當一個程序每提供4000使用者訪問後超過4000的時候
    會更換一次程序。(終止老程序,開啟新程序)
  MinSpareServers  5  //最小備用程序。如果啟動服務的時候,會開始8個程序。如果併發連線達到了4個的時候,這個時候每個一秒就會
    開啟一個新程序。留下5個空閒的備用程序,總是保留5個程序。不超過256個
  MaxSpareServers  20  //最大備用程序。如同時有30個人連線進來,然後同時下線。僅停掉10個程序,預留20個空閒程序。
  ServerLimit 
  
  Worker模式設定:
  StartServers  2  //啟用兩個程序
  MaxClients  150  //併發兩個執行緒,基於cpu處理,沒有4000輪換機制
  MinSpareThreads  25
  MaxSpareThreads  75
  ThreadsPerChild  25
  MaxRequestsPerChild  0
  
  通過httpd -h
  #httpd -l  //檢視當前使用什麼模式的
  預設是prefork模式
  修改為worker模式配置:
  #vim /etc/sysconfig/httpd中
  去掉#HTTPD=/usr/sbin/httpd.worker模式註釋
  重啟服務就可以生效。
  worker模式需要一個很好的cpu來處理 

2.main(主服務配置)
  ServerAdmin  管理員郵箱,網站故障給該郵箱傳送資訊。 
  ServerName  //繫結域名操作。
  DocumentRoot  //訪問網頁的時候去哪個資料夾訪問。存在相對路徑和絕對路徑的關係
    如訪問http://test.com/index.html 位於index.html前面的“/”就是指定的documentroot路徑
  
  Apache名稱空間配置
  。為使用者頁面指定一個目錄:UserDir public_html
  。MIME型別的配置:
    AddType application/x-httpd-php.html
    AddType text/html.htm
  。定義目錄夾首頁檔案:
    DirectoryIndex index.html default.htm  //講究先後順序,如果放多個*.html,會按照順序查詢
  
3.virtual(虛擬主機配置),與2二選一存在

Apache語法應用工具
.service httpd configtest
.apachectl configtest
.httpd -t
.檢查http.conf和ssl.conf
RPM包安裝的:
#/etc/init.d/httpd
正常的/etc/init.d/httpd configtest  //檢查配置檔案,會報檔案語法錯誤之類的資訊
原始碼安裝的訪視會有apachectl -h檢視
  #apachectl -t  //檢查語法,類似於configtest
#httpd -h   //檢視httpd幫助
#httpd.worker -h  //檢視httpd.worker的用法

DocumentRoot網站根位置
配置存放在/var/www/html,所有路徑都是基於該路徑來訪問
可以使用軟連線訪視配置。但是不建議。
可以在配置檔案中操作:
<Directory "/var/www/html">
必須刪除Options Indexes FollowSymLinks中的FollowSymLinks不跟蹤軟連結
那怎麼解決訪問其他路徑的內容呢?
只需要給任何想控制的資料夾設定許可權後以別名的形式作為一級資料夾就可以
複製<Directory "/var/www/html">修改這個裡面的/var/www/html路徑,然後定義別名,搜尋Alias

將options Indexes修改為Opitons none //讓訪問網站目錄不顯示檔案。

修改前內容:

修改後內容:

這樣訪問開放的目錄之後如下圖所示:

Apache訪問的配置
。Apache提供目錄和檔案級別的基於主機的訪問控制
。指定主機時可以包含點分制,網路/掩碼,和點分主機名和域名
。通過“Order”語句提供控制的次序

在Main配置中找到
<Directory /var/www/html>
  選項
  Order allow,deny  //預設從前往後讀連結串列。但是預設的以最後為主,這個配置就是deny;當修改為deny,allow的時候就會允許所有的ip訪問。
  Allow from all   //all相當於0.0.0.0/0的網路,即都允許訪問,all可以配置為ip地址,即允許特定ip檢視。
</Directory>結尾
設定訪問目錄許可權


參考如上設定,新增一個Directory來設定許可權。讓父目錄沒辦法訪問,子目錄可以訪問。

如果父目錄禁止訪問,沒有配置子目錄的話。子目錄會繼承父資料夾許可權。

Apache名稱空間配置
。為使用者頁面指定一個目錄:
    UserDir public_html
。MIME型別的配置
    AddType application/x-httpd-php.phtml
    AddType text/html.htm
。定義目錄夾首頁檔案
    DirectoryIndex index.html default.htm

如訪問http://192.168.1.128/~student/  //如果需要訪問student使用者下的mysqpace檔案,但是不訪問student。需要進行如下操作
預設配置:


修改後:

使用vim編輯器替換開始是“#”為空格

繼續修改public_html為myspace,如下圖

還需要對myspace檔案賦予http程序使用者訪問。如訪問myspace,將該使用者目錄許可權修改為711

之後就可以訪問該使用者下面的檔案。

以上可以使用在特殊場景,如網路上購買的空間。

Limit限制檔案訪問