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 //檢視相應的埠是否已開啟