一.簡介
Apache是世界使用排名第一的Web伺服器軟體。它可以運作在幾乎所有廣泛使用的計算機平台上,由于其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。Apache HTTP伺服器是一個子產品化的伺服器,源于NCSAhttpd伺服器.Apache的特點是簡單、速度快、性能穩定,并可做代理伺服器來使用。
Apache httpd Web伺服器特性
1.事先建立程序
2.子產品多元化,各種功能子產品的添加
3.可以支援SSL技術
4.支援多種方式的虛拟主機配置
虛拟主機常用配置主要分為:
基于IP的虛拟主機
基于端口的虛拟主機
基于域名的虛拟主機
5.支援多種方式的HTTP認證
6.支援URL重寫;等多種特性
二.httpd安裝方式
主要安裝方式分為兩種:一種為rpm包安裝;另一種為源碼包安裝
安裝httpd軟體包時,請現将SELinux處于permssive或disabled,否則可能某些服務無法啟動
修改SELinux配置檔案/etc/selinux/config,修改“SELINUX=permssive”
httpd軟體包安裝:yum -y install httpd (yum的搭建不多說了,可以檢視本部落格yum源的搭建)
三.Httpd端口,目錄介紹
httpd預設端口為tcp/80端口;ssl 協定端口為443/tcp端口
httpd工作的預設根目錄為/etc/httpd
http的配置檔案目錄為/etc/httpd/conf
httpd主配置檔案為httpd.conf檔案
以 /etc/httpd/conf.d/*.conf結尾的配置檔案均為httpd.conf的主配置檔案的組成部分
Apache Httpd子產品化目錄為/etc/httpd/modules
Apache Httpd日志目錄為/etc/httpd/logs -->/var/log/httpd 指向/var/log/httpd目錄檔案
日志檔案分為:通路日志access_log;錯誤日志err_log 兩種
Apache Httpd網頁目錄為/var/www目錄
/var/www目錄下分為html目錄和cgi-bin目錄:html目錄為靜态網頁目錄如html語言開發的;
cgi-bin目錄為動态網頁目錄如asp,php,jsp,Java等開發的網站程式。
CGI簡介:
Common Gateway Interface,簡稱CGI。在實體上是一段程式,運作在伺服器上,提供同用戶端HTML頁面的接口。cgi是外部應用程式(CGI程式)與Web伺服器之間通信的接口,CGI規範允許Web伺服器執行外部程式,并将它們的輸出發送給Web浏覽器,CGI将Web的一組簡單的靜态超媒體文檔變成一個完整的新的互動式媒體。
四.httpd主配置檔案/etc/httpd/conf/httpd.conf 詳解
### Section 1: Global Environment 全局配置
ServerRoot "/etc/httpd" httpd伺服器根目錄
PidFile run/httpd.pid httpd服務程序pid,儲存在httpd.pid檔案中
KeepAlive Off 是否啟用長連結【on or off】使用長連接配接可以有效的提高性能
MaxKeepAliveRequests 100 在啟用長連接配接後使用者最多一次請求的資源數,0表示無限制請求
KeepAliveTimeout 15 長連接配接的斷開時常
# prefork MPM 多處理子產品
mpm_winnt windows下多線程處理機制;
prefork Linux下預先生成程序處理機制,一個請求用一個程序進行響應;
worker多個線程處理,一個請求一個線程響應;
event一個程序處理多個請求
可以使用httpd -l指令檢視目前Linux所支援那些mpm處理子產品
httpd伺服器預設使用worker處理子產品,如果更改其他處理子產品可修改httpd啟動腳本來實作,httpd啟動腳本配置檔案為/etc/sysconfig/httpd,修改配置檔案中#HTTPD=/usr/sbin/httpd.worker
<IfModule prefork.c>
StartServers 8 伺服器啟動時啟動8個空閑程序
MinSpareServers 5 最少空閑5個程序接受使用者請求
MaxSpareServers 20 最大空閑程序
ServerLimit 256 為MaxClients指定最大上限,修改時目前伺服器必須關閉伺服器kill所有程序,在重新啟動
MaxClients 256 最大用戶端數,最多隻允許256個用戶端同時請求,不能超過Serverlimit限定數
MaxRequestsPerChild 4000 一個程序最多響應4000次的使用者請求
</IfModule>
<IfModule worker.c>
StartServers 4 伺服器啟動時啟動4個程序
MaxClients 300 最大用戶端數,最多隻允許300個用戶端同時請求
MinSpareThreads 25 最小空閑線程
MaxSpareThreads 75 最大空閑線程
ThreadsPerChild 25 每 一個程序生成25個線程
MaxRequestsPerChild 0 不做限定的使用者請求
#Listen 12.34.56.78:80
Listen 80 Httpd伺服器預設監聽端口80,可以同時監聽多個端口
Listen 8080 或 127.0.0.1:8080
### Section 2: 'Main' server configuration server主配置
DocumentRoot "/var/www/html" 網站文檔根目錄,可直接修改目錄路徑
如要修改預設www文檔根目錄,必須要定義<Directory />Apache服務和功能是否被允許和通路
也可修改相應的配置檔案中<Directory "/var/www/html"> 中的目錄即可。
自定義<Directory />,格式如下
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Options選項參數
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
Options Indexes FollowSymLinks
Indexes 索引網站目錄,在網站安全中Indexes不可啟用
None 不支援任何選項
FollowSymLinks 允許符号連結所指向的源檔案
Includes 允許執行服務端包含SSI
ExecCGI 允許運作
MultiViews 多視圖模式,耗費資源
ALL 支援所有選項
AllowOverride參數
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
AllowOverride None 允許覆寫伺服器控制通路清單
AuthConfig 使用者認證,提供使用者帳号密碼提供登入
Order:用于定義基于主機的通路功能的Ip,網絡位址或主機定義通路控制
列子:如有一網站不想被192.168.100.1 和192.168.100.4 兩個Ip位址通路如何配置Order?
AllowOverride None
Order deny,allow
Deny from 192.168.100.1 192.168.100.4
httpd -t 檢測配置檔案文法是否正确
純文字浏覽器 elinks 127.0.0.1
elinks -dump 127.0.0.1 打開網站後直接退出
elinks -source 127.0.0.1 顯示網站源碼
列子:基于使用者認證,本地有baishouqijia 、白手起家、zhang,3個使用者在通路網站時必須輸入帳号密碼進行通路,否則無法通路,該如何做?配置檔案如下
建立htpasswd中的使用者帳号密碼
[root@localhost httpd]# htpasswd -c -m /etc/httpd/htpasswd baishouqijia
[root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd 白手起家
[root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd zhang
[root@localhost httpd]# httpd -t
[root@localhost httpd]# /etc/init.d/httpd restart
[root@localhost httpd]#
-m選項md5加密方式
-c選項建立htpasswd檔案,建立第一個使用者時使用,第二個使用者則無效加-c,否則重新建立htpasswd檔案并替換第一次添加使用者時所建立的檔案
測試:
開始登入提示輸入帳号密碼
<a href="http://s3.51cto.com/wyfs02/M00/71/1E/wKiom1XGI7uzUHR8AAG9p9YukHY116.jpg" target="_blank"></a>
輸入帳号密碼後
<a href="http://s3.51cto.com/wyfs02/M00/71/1E/wKiom1XGI7ySIrlFAADKv3RgUzw002.jpg" target="_blank"></a>
删除使用者 htpasswd -D
DirectoryIndex index.html index.html.var 首頁索引檔案,如果一個網站程式中都包含,自左往右開始索引
ErrorLog logs/error_log 錯誤日志目錄
LogLevel warn 日志級别
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
%h 用戶端位址
%l 遠端主機登入名稱
%u 登入網站時登入的使用者名稱
%t 日志産生的時間
%r 請求封包的第一行
%>s 最後一次的請求的狀态碼
%b 響應封包的大小
%{Referer}i 網站來源
%{User-Agent}i 用戶端浏覽器的類型
Alias /icons/ "/var/www/icons/" 路徑别名
列子:在/mnt/www/bbs下建立index.html 并使用别名/bbs通路
<a href="http://s3.51cto.com/wyfs02/M02/71/1A/wKioL1XGOOyTY7hSAADBPKTRYLE704.jpg" target="_blank"></a>
四、建立添加虛拟主機
<code> </code><code>[root@localhost conf]</code><code># vim /etc/httpd/conf/httpd.conf</code>
<code>### Section 2: 'Main' server configuration</code>
<code>#DocumentRoot "/var/www/html" 注釋掉</code>
<code>### Section 3: Virtual Hosts 添加以下部分</code>
<code>NameVirtualHost *:80</code>
<code><V<VirtualHost *:80></code>
<code> </code><code>ServerName www.a.net</code>
<code> </code><code>DocumentRoot </code><code>"/var/www/html/a.net"</code>
<code><</code><code>/VirtualHost</code><code>></code>
<code><VirtualHost *:80></code>
<code> </code><code>ServerName www.b.com</code>
<code> </code><code>DocumentRoot </code><code>"/var/www/html/b.com"</code>
“51cto十周年部落格活動”正在進行,你也來參加吧~
本文轉自 zhangguangyi 51CTO部落格,原文連結:http://blog.51cto.com/bosszhang/1683080