一.簡介php
Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。Apache HTTP服務器是一個模塊化的服務器,源於NCSAhttpd服務器.Apache的特色是簡單、速度快、性能穩定,並可作代理服務器來使用。html
Apache官網:http://apache.org/linux
Apache Httpd網站:http://httpd.apache.org/apache
Apache httpd Web服務器特性vim
1.事先建立進程windows
2.模塊多元化,各類功能模塊的添加瀏覽器
3.能夠支持SSL技術安全
4.支持多種方式的虛擬主機配置bash
虛擬主機經常使用配置主要分爲:服務器
基於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 不作限定的用戶請求
</IfModule>
#Listen 12.34.56.78:80
Listen 80 Httpd服務器默認監聽端口80,能夠同時監聽多個端口
Listen 8080 或 127.0.0.1:8080
### Section 2: 'Main' server configuration server主配置
ServerAdmin root@localhost 服務器管理員
ServerName www.example.com:80 服務器Name
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文件並替換第一次添加用戶時所建立的文件
測試:
開始登陸提示輸入賬號密碼
輸入賬號密碼後
刪除用戶 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訪問
測試:
4、建立添加虛擬主機
[root@localhost conf]# vim /etc/httpd/conf/httpd.conf ### Section 2: 'Main' server configuration #DocumentRoot "/var/www/html" 註釋掉 ### Section 3: Virtual Hosts 添加如下部分 NameVirtualHost *:80 <V<VirtualHost *:80> ServerName www.a.net DocumentRoot "/var/www/html/a.net" </VirtualHost> <VirtualHost *:80> ServerName www.b.com DocumentRoot "/var/www/html/b.com" </VirtualHost>
「51cto十週年博客活動」正在進行,你也來參加吧~