開心,博主收穫到了第一個評論,謝謝懶小米的認真閱讀,之後會繼續努力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
咱們進入站點頁面根目錄作點事情: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:
附圖:來自官方的格式解釋以及示例
那麼如何查看服務器版本信息呢?
法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:經過瀏覽器工具查看:
(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>
(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 .......
附圖:來自官網日誌級別
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,配置語法正確