开心,博主收获到了第一个评论,谢谢懒小米的认真阅读,以后会继续努力
近日博主学习了有关http服务的搭建,此次来介绍http服务的搭建以及部分相关配置
实验环境:CentOS6
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:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEY Preparing...###########################################[100%] 1:httpd###########################################[100%] [root@centos6~]####成功安装
[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.jpghttp_group_fileimage.htmlsecret bbshttp_user_passwd_fileindex.html [root@centos6~]#ls/etc/httpd/modules/#服务模块文件,实际上是/usr/lib64/httpd/modules的一个软连接,可以ll命令查看:ll/etc/httpd/ mod_actions.somod_cgi.somod_mime.so ........... mod_cgid.somod_mime_magic.so [root@centos6~]#ls/etc/httpd/logs/服务日志文件,实际上是/var/log/httpd的一个软连接,可以ll命令查看:ll/etc/httpd/ access_log#访问日志error_log#错误日志
http服务的控制和启动:
[root@centos6~]#chkconfighttpdon/off#on:http服务开机启动,off:http服务开机不启动 [root@centos6~]#servicehttpd{start/stop/restart/status/configtest/reload} #http服务的控制:start:启动服务,restart:重启服务,stop:停止服务,status:服务状态,configtest:配置语法检查,reload:重载配置文件,服务不用重启
简单小栗子保你大彻大悟:
[root@centos6~]#servicehttpdstart#开启服务 Startinghttpd:httpd:apr_sockaddr_info_get()Failedforcentos6.9magedu.com httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using127.0.0.1forServerName [OK]#OK代表成功开启
接下来你就可以去用浏览器(推荐使用火狐浏览器)去查看站点网页:地址栏输入你虚拟机本机IP即可访问,默认如图界面,是由子配置文件/etc/httpd/conf.d/welcome.conf决定的
[root@centos6~]#cd/var/www/html/#进入根目录 [root@centos6html]#vimindex.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:值,可以理解为某指令的参数
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... ServerTokensOS#负责显示的服务器版本信息的格式,建议改为ServerTokensProd较为安全 ....... Includeconf.d/*.conf#解释了子配置文件的存在,子配置文件在此处生效 ....... [root@centos6conf.d]#servicehttpdreload#重载配置文件 Reloadinghttpd:
附图:来自官方的格式解释以及示例
那么如何查看服务器版本信息呢?
法1:可以开启一台虚拟机充当客户客户端,利用命令curl
[root@centos7~]#curl-I192.168.136.131#选项-I,显示响应报文首部信息 HTTP/1.1200OK Date:Sat,21Oct201706:08:47GMT Server:Apache/2.2.15(CentOS)#服务器版本信息 Last-Modified:Sat,21Oct201702:56:51GMT ETag:"60429-30-55c05bdb9fa40" Accept-Ranges:bytes Content-Length:48 Connection:close Content-Type:text/html;charset=UTF-8#显示字符集,我们也可以修改字符集,后文会介绍
法2:通过浏览器工具查看:
(2)修改监听的IP和port
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... #Listen12.34.56.78:80 Listen80#不写IP,默认监听本机所有IP的端口,可以修改为Listen192.168.136.131:8000指定IP以及端口,可以小小实现访问控制 ....... [root@centos6conf.d]#servicehttpdreload#重载配置文件 Reloadinghttpd:
利用客户端或者浏览器测试:
[root@centos7~]#curl192.168.136.131#默认80端口 curl:(56)Recvfailure:Connectionresetbypeer [root@centos7~]#curl192.168.136.131:8000#指定8000端口 <h1>centos6<h1> <h2>centos6<h2> <h3>centos6<h3>
[root@centos6conf.d]#mkdir/app/site#创建新的根目录 [root@centos6conf.d]#mv/var/www/html/index.html/app/site/#准备页面文件 [root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... DocumentRoot"/var/www/html"#默认根路径,可以修改为DocumentRoot"/app/site"修改根路径,访问时找寻此路径. .......
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... #samepurpose,butitismuchslower. # DirectoryIndexindex.htmlindex.html.var#默认访问站点时访问的主页面,可以修改为DirectoryIndexindex.txtindex.html.var等 .......
(5)设定默认字符集
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... AddDefaultCharsetUTF-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@centos6conf.d]#mkdir/var/www/html/bbs/ [root@centos6conf.d]#echo/var/www/html/bbs>/var/www/html/bbs/index.html [root@centos6conf.d]#mkdir/app/site/bbs [root@centos6conf.d]#echo/app/site/index.html>/app/site/bbs/index.html [root@centos6conf.d]#servicehttpdreload#重载配置文件 Reloadinghttpd:
(7)持久连接Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... KeepAliveOff#默认关闭持久连接,可以修改为on,开启持久连接 ....... MaxKeepAliveRequests100#持久连接的最大连接资源数,连接数到一定值时断开连接 ....... KeepAliveTimeout15#持久连接的最大持久时间,默认单位为秒
持久连接的测试方法:在客户端模拟连接
[root@centos7~]#telnet192.168.136.13180 Trying192.168.136.131... Connectedto192.168.136.131. Escapecharacteris'^]'. GET/index.htmlHTTP/1.1#模拟连接 HOST:192.168.136.131#Web服务器 HTTP/1.1200OK#回复的响应报文 Date:Sat,21Oct201707:47:53GMT Server:Apache/2.2.15(CentOS) Last-Modified:Sat,21Oct201707:23:35GMT 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> Connectionclosedbyforeignhost ##此处不会断开。继续等待其他请求,直到时间到或者资源数到才断开连接
(8)日志设定
日志分为:访问日志和错误日志
错误日志:
[root@centos6conf.d]#vim/etc/httpd/conf/httpd.conf#编辑主配置文件 ....... ErrorLoglogs/error_log#错误日志路径,可以修改默认路径 # #LogLevel:Controlthenumberofmessagesloggedtotheerror_log. #Possiblevaluesinclude:debug,info,notice,warn,error,crit,#alert,emerg. # LogLevelwarn#错误日志的级别,默认为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@centos6conf.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 ....... CustomLoglogs/access_logcombined#日志格式的使用 .......
具体参数定义:
%h客户端IP地址 %l远程用户,启用mod_ident才有效,通常为减号“-”” %u验证(basic,digest)远程用户,非登录访问时,为一个减号“-”” %t服务器收到请求时的时间 %rFirstlineofrequest,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本 %>s响应状态码 %b响应报文的大小,单位是字节;不包括响应报文http首部 %{Referer}i请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的 %{User-Agent}i请求报文中首部“User-Agent”的值;即发出请求的应用程序
以上步骤均已实验成功,(可累死了我了),好了,部分配置先介绍到此,下次再介绍几个重要的配置
对了!差点忘记了检查配置语法命令:
[root@centos6~]#httpd-t#常用命令,CentOS7上http2.4版本同样适用 httpd:apr_sockaddr_info_get()Failedforcentos6.9magedu.com httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using127.0.0.1forServerName SyntaxOK#OK,配置语法正确 [root@centos6~]#servicehttpdconfigtest#适用于CentOS6上的配置语法检查命令 httpd:apr_sockaddr_info_get()Failedforcentos6.9magedu.com httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using127.0.0.1forServerName SyntaxOK#OK,配置语法正确