1. 程式人生 > >Linux web服務的基本配置(httpd)

Linux web服務的基本配置(httpd)

Linux web服務的基本配置

參考

環境:

​ Red hat 6.5

​ apache/2.2.15

安裝GNOME檢視桌面系統會預設安裝httpd服務(依賴關係)

[httpd]

俗稱apache,是最流行的Web伺服器端軟體。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。

httpd其實是一種高度模組化設計的、通常由核心和各種模組所組成

查詢安裝:

rpm -q httpd

安裝apache

yum install httpd

檢視版本

[root@conling
桌面]# httpd -v Server version: Apache/2.2.15 (Unix) Server built: Aug 2 2013 08:02:15

httpd的常用的功能特性:

支援路徑別名:alias
支援使用者認證:基本認證和摘要認證authentication
支援虛擬主機:virtual host 在一個物理主機上提供多個站點
支援負載均衡:是反向代理的一個子特性
支援使用者站點:當前使用者都可以在自己的家目錄下建立自己的站點
支援CGI:Common Gateway Interface 通用閘道器介面

目錄結構

服務指令碼:/etc/rc.d/init.d/httpd
指令碼配置檔案路徑:/etc/sysconfig/httpd
執行目錄:/etc/httpd
配置檔案:
  主配置:/etc/httpd/conf/httpd.conf
  擴充套件配置:/etc/httpd/conf.d/*.conf
監聽的Socket: tcp的80, 443是https/tcp的監聽埠
在核心中使用小於1023的埠的只有管理員
文件根目錄:/var/www/html
CGI目錄:/var/www/cgi-bin/

主配置檔案結構

全域性配置:對主伺服器或虛擬主機都有效,且有些功能是伺服器自身工作屬性;

主伺服器配置:主站屬性

虛擬伺服器:虛擬主機及屬性定義

測試配置和檢視的命令

service httpd configtest #測試配置檔案有沒有語法錯誤

httpd -t #同上

httpd -l #當前伺服器所使用的模型及開啟模組

httpd -D DUMP_MODULES #當前伺服器支援的模組

service httpd reload #重新載入配置檔案

service httpd restart #重啟httpd服務

注意:修改配置檔案後要重新載入配置檔案,修改伺服器監聽埠後要重啟服務

主配置檔案的基本配置

配置httpd的工作屬性時,指令不區分大小寫,但有約定俗成的習慣:

單詞的首字母大寫;指令的值很有可能區分大小寫;有些指令可以重複使用多次;

Listen [IP:]PORT    //配置監聽的埠,IP為可選項,不寫則監聽所有介面的埠。
                    例如:Listen 172.16.3.1:80 ,多個站點時需要監聽多個介面。

指定網站的主目錄

DocumentRoot "/var/www/html" 
Options         //配置頁面檔案的訪問屬性
Indexes #是否允許索引頁面檔案,建議關閉
FollowSymLinks #是否跟隨軟連線檔案
SymLinksifOwnerMatch #跟隨符號連結,只允許訪問執行apache的使用者有屬主許可權的檔案
ExecCGI: #是否允許執行CGI指令碼;

基於客戶端的訪問控制

系統預設允許所有人訪問
Order #定義allow和deny那個為預設法則;寫在後面的為預設法則:寫在前面的指令沒有顯示定義的即受後面的指令控制:
Order allow,deny
Allow from all #所有人可以訪問

例:配置允許172.16.0.0/16訪問,但不允許172.16.3.1訪問
Order allow,deny
Deny from 172.16.3.1 #禁用一個IP訪問
Allow from 172.16.0.0/16 #允許一個網段訪問

userdir個人站點

# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled #註釋此項
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html #開啟此項
//在相應的使用者家目錄中建立檔案public_html 即可實現訪問。
重新載入配置檔案後用:http://HOST/~username/
例如:http://172.16.3.1/~centos/

定義預設主頁

DirectoryIndex index.PHP index.jsp index.html

日誌功能

日誌有兩類:訪問日誌(格式自定義)、錯誤日誌

錯誤日誌:

ErrorLog "/path/to/error_log_file"

訪問日誌:

CustomLog "/path/to/custom_log_file" logformat

日誌格式:{combined|common|agent}

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 #響應報文的大小

%{Foobar}i #顯示從發那個站點跳轉過來

%{User-Agent}i #使用者代理

基於使用者訪問控制

當你的網站或者站點的某個路徑只想讓你授權的使用者訪問時,就可以使用基於使用者的訪問控制

這裡使用htpasswd命令建立使用者帳號檔案

htpasswd

-c #第一次使用-c建立新檔案,不是第一次不要使用此選項

-m #使用者密碼使用MD5加密後存放

-s #使用者密碼使用SHA加密後存放

-p #使用者密碼不加密

-d #禁用一個賬戶

-e #啟用一個賬戶

例如:

# htpasswd -c -m /etc/httpd/conf/.htpass tom

命令 選項 生成的使用者檔案路徑及檔名 使用者名稱

# htpasswd -m /etc/httpd/conf/.htpass jerry

# 再次新增使用者時就不要使用-c選項了,否則會覆蓋之前內容先生成

(1)建立使用者帳號檔案

\# htpasswd -c -m /etc/httpd/conf/.htpass tom

(2)修改主配置檔案(直接在主站新增使用者認證功能)

\# vi /etc/httpd/conf/httpd.con

DocumentRoot "/www/html" #此時網站根目錄就是/www/html

Optins Indexes

AllowOverride AuthConfig

AuthName "Oaly for employees." #登入提示資訊,可自定義

AuthType Basic #認證方式

AuthUserFile /etc/httpd/conf/.htpass #使用者帳號檔案

Require valid-user #允許的使用者

Require 指定可以訪問的使用者,可以指定單個使用者,直接寫使用者名稱就可以了,使用者名稱可以寫多個用空格分開,也可以指定所有使用者就用 valid-user

對某個目錄進行使用者訪問控制
這裡寫圖片描述

虛擬主機

第一種方式,在主配置檔案的末尾,有虛擬主機的模板

<VirtualHost *:8080>
    DocumentRoot /var/www/blog
    DirectoryIndex index.html
</VirtualHost>
Listen 8080
//新增以上內容  意為啟用監聽8080埠,且該埠的網站目錄為/var/www/blog,預設文件為index.html.
//該方式為通過指定埠的形式來訪問不同的站點。

第二種方式,在同一臺伺服器上建立不同的主機名的虛擬主機。

(1)註釋主伺服器,新增虛擬主機
# DocumentRoot "/www/html" #註釋主伺服器
NameVirtualHost 172.16.3.1:80 #開啟虛擬主機
DocumentRoot /www/web1 #虛擬主機的網站根目錄
ServerName web1.lyd.com #主機名
DocumentRoot /www/web2
ServerName web2.lyd.com
(2)給虛擬主機提供測試檔案
mkdir /www/web{1,2}
echo web1.lyd.com > /www/web1/index.html
echo web2.lyd.com > /www/web2/index.html
(3)配置完後用 httpd -t 測試配置檔案有沒有錯誤
(4)重啟服務 service httpd restart
(5)驗證,修改驗證客戶端的hosts檔案,
windows客戶端
開始-->執行-->輸入"c:\windows\system32\drivers\etc\hosts"用記事本開啟並新增以下行
172.16.3.1web1.lyd.com
172.16.3.1web2.lyd.com

配置防火牆

    #修改防火牆配置: 
    # vi + /etc/sysconfig/iptables
    #新增配置項 
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    #重啟防火牆 
    # service iptables restart

檢查埠狀態

netstat -tln    //檢視相應的埠是否已開啟