CentOS6中http服務搭建以及部分配置(1)

開心,博主收穫到了第一個評論,謝謝懶小米的認真閱讀,之後會繼續努力html

近日博主學習了有關http服務的搭建,這次來介紹http服務的搭建以及部分相關配置vim

實驗環境:CentOS6centos

CentOS6中默認http版本爲2.2瀏覽器

http服務的安裝以及啓動什麼的安全

[root@centos6 ~]# rpm -ivh /misc/cd/Packages/httpd-2.2.15-59.el6.centos.x86_64.rpm     ##rpm安裝方式:從光盤中安裝,確保了http的穩定性
warning: /misc/cd/Packages/httpd-2.2.15-59.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:httpd                  ########################################### [100%]
[root@centos6 ~]# ###成功安裝

安裝後生成的文件:bash

[root@centos6 ~]# ls /etc/rc.d/init.d/httpd     #服務腳本文件,啓動服務就是啓動它
/etc/rc.d/init.d/httpd
[root@centos6 ~]# ls /etc/sysconfig/httpd     #服務腳本文件的配置文件,能夠修改http服務的工做模式
/etc/sysconfig/httpd
[root@centos6 ~]# ls /etc/httpd/conf/httpd.conf     #服務的主配置文件,能夠進行服務配置,通常不在主配置文件進行修改
/etc/httpd/conf/httpd.conf
[root@centos6 ~]# ls /etc/httpd/conf.d/*.conf     #服務的子配置文件,一般在這裏來進行服務的配置,不修改主配置文件,便於修改以及排錯,注意!!!必須是以.conf結尾才爲配置文件
/etc/httpd/conf.d/welcome.conf
[root@centos6 ~]# ls /var/www/html/     #站點網頁頁面的根目錄,默認的客戶端訪問站點目錄
a.jpg  http_group_file        p_w_picpath.html  secret
bbs    http_user_passwd_file  index.html
[root@centos6 ~]# ls /etc/httpd/modules/     #服務模塊文件,其實是/usr/lib64/httpd/modules的一個軟鏈接,能夠ll命令查看:ll /etc/httpd/
mod_actions.so          mod_cgi.so           mod_mime.so
...........
mod_cgid.so             mod_mime_magic.so
[root@centos6 ~]# ls /etc/httpd/logs/     服務日誌文件,其實是/var/log/httpd的一個軟鏈接,能夠ll命令查看:ll /etc/httpd/
access_log #訪問日誌      error_log #錯誤日誌

http服務的控制和啓動:
服務器

[root@centos6 ~]# chkconfig httpd on/off     #on:http服務開機啓動,off:http服務開機不啓動
[root@centos6 ~]# service httpd {start/stop/restart/status/configtest/reload}   
#http服務的控制:start:啓動服務,restart:重啓服務,stop:中止服務,status:服務狀態,configtest:配置語法檢查,reload:重載配置文件,服務不用重啓

簡單小栗子保你大徹大悟:app

[root@centos6 ~]# service httpd start     #開啓服務
Starting httpd: httpd: apr_sockaddr_info_get() failed for centos6.9magedu.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]     #OK表明成功開啓

接下來你就能夠去用瀏覽器(推薦使用火狐瀏覽器)去查看站點網頁:地址欄輸入你虛擬機本機IP便可訪問,默認如圖界面,是由子配置文件/etc/httpd/conf.d/welcome.conf決定的dom

9a3382c89820baf9415cfdfdf102fe59.jpg-wh_

咱們進入站點頁面根目錄作點事情:curl

[root@centos6 ~]# cd /var/www/html/     #進入根目錄
[root@centos6 html]# vim index.html     #編輯一個名爲index.html文件,內容以下:
<h1>centos6<h1>
<h2>centos6<h2>
<h3>centos6<h3>

刷新瀏覽器頁面,是否是很熟悉那個界面呢(http服務支持html格式文件),懂了什麼是http服務了吧,哈哈哈

好了,老鼠拉木杴——大頭在後面,安裝很簡單,主要仍是配置滴

http服務經常使用配置

既然介紹配置,首先咱們來了解下主配置文件的組成以及配置格式:

在主配置文件中,分爲三類配置:

### Section 1: Global Environment:全局環境的配置

### Section 2: 'Main' server configuration:主服務的配置

### Section 3: Virtual Hosts:虛擬主機相關的配置

配置格式:directive value

directive:指令,不區分大小寫

value:值,能夠理解爲某指令的參數

(1)修改顯示的服務器版本信息的格式

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
ServerTokens OS     #負責顯示的服務器版本信息的格式,建議改成 ServerTokens Prod 較爲安全
.......
Include conf.d/*.conf     #解釋了子配置文件的存在,子配置文件在此處生效
.......
[root@centos6 conf.d]# service httpd reload     #重載配置文件                  
Reloading httpd:

附圖:來自官方的格式解釋以及示例

7c7d423d527335032d8f914659ce784f.jpg-wh_

那麼如何查看服務器版本信息呢?

法1:能夠開啓一臺虛擬機充當客戶客戶端,利用命令curl

[root@centos7 ~]#curl -I 192.168.136.131     #選項-I,顯示響應報文首部信息
HTTP/1.1 200 OK
Date: Sat, 21 Oct 2017 06:08:47 GMT
Server: Apache/2.2.15 (CentOS)     #服務器版本信息
Last-Modified: Sat, 21 Oct 2017 02:56:51 GMT
ETag: "60429-30-55c05bdb9fa40"
Accept-Ranges: bytes
Content-Length: 48
Connection: close
Content-Type: text/html; charset=UTF-8     #顯示字符集,咱們也能夠修改字符集,後文會介紹

法2:經過瀏覽器工具查看:

2de82c5c8b274b1d7be9d024f8cf567f.jpg-wh_

(2)修改監聽的IP和port

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
#Listen 12.34.56.78:80
Listen 80     #不寫IP,默認監聽本機全部IP的端口,能夠修改成 Listen 192.168.136.131:8000 指定IP以及端口,能夠小小實現訪問控制
.......
[root@centos6 conf.d]# service httpd reload     #重載配置文件                  
Reloading httpd:

利用客戶端或者瀏覽器測試:

[root@centos7 ~]#curl 192.168.136.131     #默認80端口
curl: (56) Recv failure: Connection reset by peer
[root@centos7 ~]#curl 192.168.136.131:8000     #指定8000端口
<h1>centos6<h1>
<h2>centos6<h2>
<h3>centos6<h3>

42934ccaba0a4df5ad3026bef647312e.jpg-wh_

(3)定義站點頁面根路徑:

[root@centos6 conf.d]# mkdir /app/site     #建立新的根目錄
[root@centos6 conf.d]# mv /var/www/html/index.html /app/site/     #準備頁面文件
[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
DocumentRoot "/var/www/html"     #默認根路徑,能夠修改成 DocumentRoot "/app/site" 修改根路徑,訪問時找尋此路徑.
.......

(4)定義站點主頁面:

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var     #默認訪問站點時訪問的主頁面,能夠修改成 DirectoryIndex index.txt index.html.var 等
.......

(5)設定默認字符集

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
AddDefaultCharset UTF-8     #默認UTF-8字符集,能夠修改字符集
.......

(6)定義路徑別名

[root@centos6 ~]# vim /etc/httpd/conf.d/mozart.conf     #建立子配置文件,以.conf結尾
alias "/bbs/" "/app/site/bbs/"     #定義別名,格式爲:alias "URL" "/PATH/" 注意!!!URL爲默認根目錄下的子目錄,等同於路徑 /var/www/html/bbs/ 但不可寫爲路徑,PATH爲路徑
[root@centos6 conf.d]# mkdir /var/www/html/bbs/
[root@centos6 conf.d]# echo /var/www/html/bbs > /var/www/html/bbs/index.html
[root@centos6 conf.d]# mkdir /app/site/bbs
[root@centos6 conf.d]# echo /app/site/index.html > /app/site/bbs/index.html
[root@centos6 conf.d]# service httpd reload     #重載配置文件
Reloading httpd:

(7)持久鏈接 Persistent Connection:鏈接創建,每一個資源獲取完成後不會斷開鏈接,而是繼續等待其它的請求完成,默認關閉持久鏈接

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
KeepAlive Off     #默認關閉持久鏈接,能夠修改成 on ,開啓持久鏈接
.......
MaxKeepAliveRequests 100     #持久鏈接的最大鏈接資源數,鏈接數到必定值時斷開鏈接
.......
KeepAliveTimeout 15     #持久鏈接的最大持久時間,默認單位爲秒

持久鏈接的測試方法:在客戶端模擬鏈接

[root@centos7 ~]#telnet 192.168.136.131 80
Trying 192.168.136.131...
Connected to 192.168.136.131.
Escape character is '^]'.
GET /index.html HTTP/1.1     #模擬鏈接
HOST:192.168.136.131     #Web服務器

HTTP/1.1 200 OK     #回覆的響應報文
Date: Sat, 21 Oct 2017 07:47:53 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sat, 21 Oct 2017 07:23:35 GMT
ETag: "60429-30-55c0977a92555"
Accept-Ranges: bytes
Content-Length: 48
Connection: close
Content-Type: text/html; charset=UTF-8

<h1>centos6<h1>
<h2>centos6<h2>
<h3>centos6<h3>
Connection closed by foreign host
##此處不會斷開。繼續等待其餘請求,直到時間到或者資源數到才斷開鏈接

(8)日誌設定

日誌分爲:訪問日誌和錯誤日誌

錯誤日誌:

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
ErrorLog logs/error_log     #錯誤日誌路徑,能夠修改默認路徑

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn     #錯誤日誌的級別,默認爲warn
.......

附圖:來自官網日誌級別

74ae4ab845c7c4bb3ac96bcc4c1efda3.jpg-wh_

emerg 緊急 - 系統沒法使用。 "Child cannot open lock file. Exiting"  

alert 必須當即採起措施。 "getpwuid: couldn't determine user name from uid"  

crit 致命狀況。 "socket: Failed to get a socket, exiting child"  

error 錯誤狀況。 "Premature end of script headers"  

warn 警告狀況。 "child process 1234 did not exit, sending another SIGHUP"  

notice 通常重要狀況。 "httpd: caught SIGBUS, attempting to dump core in ..."  

info 普通訊息。 "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."  

debug 出錯級別信息 "Opening config file ..."  

定義日誌格式:

[root@centos6 conf.d]# vim /etc/httpd/conf/httpd.conf     #編輯主配置文件
.......
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined     #定義日誌格式,經常使用定義:LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined
.......
CustomLog logs/access_log combined     #日誌格式的使用
.......

具體參數定義:

%h 客戶端IP地址
%l 遠程用戶, 啓用mod_ident 纔有效,一般爲減號「-」 」
%u 驗證(basic ,digest )遠程用戶, 非登陸訪問時,爲一個減號「-」 」
%t 服務器收到請求時的時間
%r First line of request,即表示請求報文的首行;記錄了這次請求的「方法」,「URL」 以及協議版本
%>s 響應狀態碼
%b 響應報文的大小,單位是字節;不包括響應報文http 首部
%{Referer}i 請求報文中首部「referer」 的值;即從哪一個頁面中的超連接跳轉至當前頁面的
%{User-Agent}i 請求報文中首部「User-Agent」 的值;即發出請求的應用程序

以上步驟均已實驗成功,(可累死了我了),好了,部分配置先介紹到此,下次再介紹幾個重要的配置

對了!差點忘記了檢查配置語法命令:

[root@centos6 ~]# httpd -t     #經常使用命令,CentOS7上http2.4版本一樣適用
httpd: apr_sockaddr_info_get() failed for centos6.9magedu.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK     #OK,配置語法正確
[root@centos6 ~]# service httpd configtest     #適用於CentOS6上的配置語法檢查命令
httpd: apr_sockaddr_info_get() failed for centos6.9magedu.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK     #OK,配置語法正確
相關文章
相關標籤/搜索