天天看點

2020-09-28【技能展示】

Web網站服務

  • 【技能展示】
    • 【Apache簡介】
      • 【安裝httpd伺服器——編譯安裝】
        • 【 httpd伺服器的基本配置】
          • 【全局配置項】
            • 【區域配置項】

【技能展示】

【技能展示】
           

1.學會編譯安裝httpd伺服器

2.熟悉httpd服務的部署過程及常見配置

3.學會建構AWStats日志分析系統

【Apache簡介】

【Apache簡介】

【Apache起源】

1.源于 A Patchy Server,著名的開源Web服務軟體

2.1995年時,釋出Apache服務程式的1.0版本

3.由Apache軟體基金會(ASF)負責維護

4.最新的名稱為 “Apache HTTP Server”

5.官方站點:http://httpd.apache.org/

【主要特點】

1.開放源代碼、跨平台應用

2.支援多種網頁程式設計語言

3.子產品化設計 、運作穩定、良好的安全性

【軟體版本】

1.1.X

*目前最高版本是1.3,運作穩定

  • 向下相容性較好,但缺乏一些較新的功能

2.2.X

  • 目前主要包括2.0和2.2兩個版本

    *具有更多的功能特性

    *與1.X相比,配置管理風格存在較大差異

【編譯安裝的優點】

1.具有較大的自由度,功能可定制

2.可及時獲得最新的軟體版本

3.普遍适用于大多數Linux版本,便于移植使用

【獲得Apache伺服器的源碼包 】

1.參考位址:http://httpd.apache.org/download.cgi

【安裝httpd伺服器——編譯安裝】

【安裝httpd伺服器——編譯安裝】
           

1.準備工作

解除安裝httpd及相關依賴包

[[email protected] ~]# rpm -e httpd --nodeps

[[email protected] ~]# yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre

2.源碼編譯及安裝

解包

[[email protected] ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/httpd-2.4.25/

配置

[[email protected] httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

–prefix:指定将httpd服務程式安裝到哪個目錄,如/usr/local/httpd。

–enable-so:啟用動态加載子產品支援,使httpd具備進一步擴充功能的能力。

–enable-rewrite:啟用網頁位址重寫功能,用于網站優化及目錄遷移維護。

–enable-charset-lite:啟動字元集支援,以便支援使用各種字元集編碼的網頁。

–enable-cgi:啟用CGI腳本程式支援,便于擴充網站的應用通路能力。

Httpd的安裝目錄是由前面的—prefix指定的路徑,

預設安裝在/usr/local/apache2目錄下

編譯及安裝

[[email protected] httpd-2.4.25]# make

[[email protected] httpd-2.4.25]# make install

3.确認安裝結果

[[email protected] ~]# ls /usr/local/httpd/

bin cgi-bin error icons lib man modules

build conf htdocs include logs manual

主要目錄和檔案:

服務目錄:/usr/local/httpd/

主配置檔案:/usr/local/httpd/conf/httpd.conf

網頁目錄:/usr/local/httpd/htdocs/

服務腳本:/usr/local/httpd/bin/apachectl

執行程式:/usr/local/httpd/bin/httpd

通路日志: /usr/local/httpd/log/access_log

錯誤日志: /usr/local/httpd/log/error_log

子產品目錄:/usr/local/httpd/modules

4.優化執行路徑

[[email protected] ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/

[[email protected] ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl

lrwxrwxrwx 1 root root 30 04-06 13:08 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl

lrwxrwxrwx 1 root root 26 04-06 13:08 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd

[[email protected] ~]# httpd -v

5.添加httpd系統服務

*以便通過chkconfig進行管理

[[email protected] ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

[[email protected] ~]# vi /etc/init.d/httpd

編輯和添加

#!/bin/bash

#chkconfig: 35 85 15

description: Startup script for the Apache HTTP Server

注釋:chkconfig識别配置

chkconfig— 服務識别參數,在運作級别3,5中啟動。服務啟動和關閉順序分别為85、15.

description----服務描述資訊

[[email protected] ~]# chkconfig --add httpd

[[email protected] ~]# chkconfig --list httpd

httpd 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉

[[email protected] ~]# ll /etc/rc.d/rc3.d

【 httpd伺服器的基本配置】

(一)Web站點部署過程

1.确定網站名稱、IP位址

若要向internet中釋出一個web站點,需要申請一個合法的網際網路公網ip位址,并向dns服務提供商注冊一個完整的網站名稱。

[[email protected] ~]# cat /etc/sysconfig/network

#Created by anaconda

NETWORKING=yes

HOSTNAME=www.bdqn.com

[[email protected] ~]# cat /etc/hostname

www.bdqn.com

[[email protected] ~]# reboot

2.配置并啟動httpd服務

[[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf

200 #ServerName www.example.com:80
201 ServerName www.bdqn.com
           

[[email protected] ~]# /usr/local/httpd/bin/apachectl -t

Syntax OK

[[email protected] ~]# /etc/init.d/httpd start

[[email protected] ~]# netstat -anput | grep httpd

3.部署網頁文檔

[[email protected] ~]# cat /usr/local/httpd/htdocs/index.html

< html >< body >< h1 > It works! < /h1 > < /body > < /html >

4.在客戶機中通路Web站點

5.檢視Web站點的通路情況

檢視通路日志

[[email protected] ~]# tail /usr/local/httpd/logs/access_log

192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] “GET / HTTP/1.1” 200 44

192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] “GET /favicon.ico HTTP/1.1” 404 209

記錄客戶機的ip位址、通路伺服器的日期和時間、請求的網頁對象等

檢視錯誤日志(排查伺服器運作故障)

[[email protected] ~]# tail /usr/local/httpd/logs/error_log

記錄了發生錯誤的日期和時間、錯誤事件類型、錯誤事件的内容描述

若要對web站點進行更加具體、更加強大的配置,需要做進一步配置。

[[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf

【全局配置項】

ServerRoot “/usr/local/httpd”

Listen 80

User daemon

Group daemon

ServerAdmin [email protected]

ServerName www.benet.com

DocumentRoot “/usr/local/httpd/htdocs”

DirectoryIndex index.html index.php

ErrorLog logs/error_log

LogLevel warn

CustomLog logs/access_log common

PidFile logs/httpd.pid

CharsetDefault UTF-8

Include conf/extra/httpd-default.conf

常用的全局配置參數
           

如果配置檔案中指定目錄或檔案位置不使用絕對路徑,則認為在伺服器根目錄下(apache安裝目錄/usr/local/httpd)

ServerRoot:伺服器根目錄。要與DocumentRoot區分開

ServerAdmin:管理者郵箱

User:運作服務的使用者身份

Group:運作服務的組身份

ServerName:網站伺服器的FQDN(主機名+域名)

DocumentRoot:網頁文檔的根目錄

Listen:監聽的IP位址、端口号

PidFile:儲存httpd程序PID号的檔案

DirectoryIndex:預設的索引頁檔案

ErrorLog:錯誤日志檔案的位置

CustomLog:通路日志檔案的位置

LogLevel:記錄日志的級别,預設為warn以上級别

AddDefaultCharset:設定站點中的網頁預設使用的字元集編碼

Timeout:網絡連接配接逾時,預設為300秒

KeepAlive:是否保持連接配接,可選On或Off

MaxKeepAliveRequests:每次連接配接最多請求檔案數

KeepAliveTimeout:保持連接配接狀态時的逾時時間

Include:需要包含進來的其他配置檔案

【區域配置項】

使用一對組合标記,限定了配置項的作用範圍

定義‘/’目錄區域的開始

Options FollowSymLinks 控制選項,允許使用符号連接配接

AllowOverride none 不允許隐含控制檔案中的覆寫位置

Require all denied 禁止任何人通路此區域

定義/’目錄區域的結束

Options FollowSymLinks 控制選項,允許使用符号連接配接

就是允許你的網頁檔案夾下的連結檔案連結到首頁目錄以外的檔案。舉例來說,如果你把首頁目錄設定為/var/www/html,那麼你的網頁程式最多隻能通路到/var/www/html目錄,上層目錄是不可見的。但是你可以通過連結把檔案連結到/var/www/html目錄以外的檔案以通路該檔案,如果FollowSymLinks被設定的話

從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override

Apache Options Indexes FollowSymLinks詳解

禁止顯示Apache目錄清單-Indexes FollowSymLinks

如何修改目錄的配置以禁止顯示 Apache 目錄清單。

預設情況下如果你在浏覽器輸入位址:

http://localhost:8080/

如果你的檔案根目錄裡有 index.html,浏覽器就會顯示 index.html的内容,如果沒有 index.html,浏覽器就會顯示檔案根目錄的目錄清單,目錄清單包括檔案根目錄下的檔案和子目錄。

同樣你輸入一個虛拟目錄的位址:

http://localhost:8080/b/

如果該虛拟目錄下沒有 index.html,浏覽器也會顯示該虛拟目錄的目錄結構,列出該虛拟目錄下的檔案和子目錄。

如何禁止 Apache 顯示目錄清單呢?

要禁止 Apache 顯示目錄結構清單,隻需将 Option 中的 Indexes 去掉即可。

比如我們看看一個目錄的目錄配置:

<Directory “D:/Apa/blabla”>

Options Indexes FollowSymLinks #---------->Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

你隻需要将上面代碼中的 Indexes 去掉,就可以禁止 Apache 顯示該目錄結構。使用者就不會看到該目錄下的檔案和子目錄清單了。

Indexes 的作用就是當該目錄下沒有 index.html 檔案時,就顯示目錄結構,去掉 Indexes,Apache 就不會顯示該目錄的清單了。

第二種方法

解決辦法:

1、編輯httpd.conf檔案

vi ./conf/httpd.conf

找到如下内容:

?BR> <Directory “C:/Program Files/Apache2.2/htdocs”>

#

# 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

#

# 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

#

# Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

……

在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。

即: Options -Indexes FollowSymLinks

【備注:在Indexes前,加 + 代表允許目錄浏覽;加 – 代表禁止目錄浏覽。】

這樣的話就屬于整個Apache禁止目錄浏覽了。

如果是在虛拟主機中,隻要增加如下資訊就行:

<Directory “D:test”>

Options -Indexes FollowSymLinks

AllowOverride None

Order deny,allow

Allow from all

這樣的話就禁止在test工程下進行目錄浏覽。

備注: 切記莫把“Allow from all”改成 “Deny from all”,否則,整個網站都不能被打開。

還有一種方法:

可以在根目錄的 .htaccess 檔案中輸入

<Files *>

Options -Indexes

就可以阻止Apache 将目錄結構清單出來。

AllowOverride從字面上解釋是允許覆寫的意思,即Apache允許另一配置檔案覆寫現有配置檔案。

我們通常利用Apache的rewrite子產品對URL進行重寫,rewrite規則會寫在 .htaccess 檔案裡。但要使 apache 能夠正常的讀取.htaccess 檔案的内容,就必須對.htaccess 所在目錄進行配置。

從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override,即:

< Directory />

AllowOverride None

< /Directory>

在 AllowOverride 設定為 None 時, .htaccess 檔案将被完全忽略。當此指令設定為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。

而對于 URL rewrite 來說,至少需要把目錄設定為:

< Directory /myblogroot/>

AllowOverride FileInfo

< /Directory>

以下是AllowOverride的詳細參數:

AuthConfig

允許使用與認證授權相關的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。

FileInfo

允許使用控制文檔類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文檔中繼資料的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。

Indexes

允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。

Limit

允許使用控制主機通路的指令(Allow, Deny, Order)。

Options[=Option,…]

允許使用控制指定目錄功能的指令(Options和XBitHack)。可以在等号後面附加一個逗号分隔的(無空格的)Options選項清單,用來控制允許Options指令使用哪些選項。