本文主要是以CentOS6系列为操作系统,安装配置web服务,并实现虚拟用户,https,和基本的用户认证等相关内容。操作系统:CentOS6.5服务器的IP:172.16.10.9httpd的版本:httpd-2.2.15系列SElINUX状态:disabled下面开始安装配置旅程:一、web的安装配置1、安装:yuminstallhttpdmod_ssl-ymod_ssl是实现https协议时所依赖的包2、配置文件的相关说明:配置文件:/etc/httpd/conf/httpd.conf/etc/httpd/conf.d/*.conf服务脚本:/etc/rc.d/init.d/httpd脚本配置文件:/etc/sysconfig/httpd,这里可以定义MPM的类型模块目录:/usr/lib64/httpd/modules/etc/httpd/modules/etc/httpd/modules是/usr/lib64/httpd/modules的链接文件主程序:/usr/sbin/httpd:prefork模式/usr/sbin/httpd.event:event模式/usr/sbin/httpd.worker:worker模式日志文件:/var/log/httpd/access_log:访问日志/var/log/httpd/error_log:错误日志站点文档的根目录:/var/二、httpd的配置文件说明#grepSectionhttpd.conf###Section1:GlobalEnvironment###Section2:'Main'serverconfiguration###Section3:VirtualHosts主要分为三部分:全局配置,主服务器配置,虚拟主机的配置。主服务器和虚拟主机一般不同时使用;默认仅启用了主服务器。在每个部分中有许多指令参数,这些指令参数不区分字符大小写,但其值有可能会区分大小写。三、配置文件选项详细说明1、持久连接通常的参数有:KeepAlive{On|Off}是否开启持久连接功能。默认是Off。以下这2个指令参数只有在KeepAliveOn时才有效KeepAliveRequests100允许的一次持久连接的最大请求数。KeepAliveTimeout2次持久连接时间的间隔验证效果:2、MPM参数ServerStart参数的验证,共有9个相关的进程,其中一个是其他8个的父进程:3、监听的端口指定格式:Listen[IP:]port默认的端口号是80这个端口可以自己指定,一般使用大家熟知的端口,常用的有80和8080。4、DSO动态共享对象在这里可以实现动态库的装载,可以使用httpd-DMODULES或者httpd-M来查看已加载的模块名。示例:使用mod_deflate模块压缩页面来优化传输速度。未使用mod_deflate模块,访问http;//192.168.1.66/messages文件时相应的字节数大小是:316080字节。加载mod_deflate模块,并进行配置vim/etc/httpd/conf/httpd.conf。加载后的验证,加载mod_deflate模块后的大小是41902字节,压缩比还是相当可观的。5、指定站点的根目录DocumentRoot“/var/”这是rpm安装方式的默认的根站点目录。当然这个可以根据自己的需求来设定。6、基于目录和文件的访问控制使用directory指令基于本地文件系统来实现对目录的访问控制。常见的控制指令有:Options:Indexes:Indexes:当访问的路径下无默认的主页面,将所有资源以列表形式呈现给用户。FollowSymlinks:跳跃符号链接AloowOverride:支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能。AuthCofig:用于实现用户认证的目的。Order结合denyfrom、allowfrom一起使用,来基于IP地址设定访问控制例如:这是设置访问白名单的设置,只允许172.16网段的客户端来访问对应的目录。当然from后面的地址是比较灵活的,像:172.16,172.16.0.0,172.16.0.0/16,172.16.0.0/255.255.0.0这种形式的都是允许的。Orderallow,denyAllowfrom172.16.0.0/16当然,上面对目录的控制,也可以使用Locaton指令基于URL来实现。DocumentRoot“/var/”Directory/var/访问控制参数/Directory等价于:Location/admin访问控制参数/Location对于OptionIndexex参数示例,一般此选项作为文件服务器,提供下载使用时使用到此选项,其他情况应慎重使用。7、指定默认访问的主页面默认的使用格式如下:这里也可以自己定义主页面DirectoryIndexindex.htmlindex.html.var8、配置日志功能ErrorLog/path/to/error_log指明错误日志的路径,可以适应相对地址。相对于ServerRoot指令所定义的目录LogLevel{debug|info|notice|warn|error|crit|alert|emerg}指定日志的级别LogFormat指定日志文件的格式CustomLog/path/to/access_logLogFormat_Name指定access_log的路径个和使用的格式%h:客户端地址%l:远程登录名,通常为-%u:认证时输入用户名,没有认证时为-%t:服务器收到用户请求时的时间%s:响应状态码%b:响应报文的长度,单位是字节%{HEADER_NAME}i:记录指定首部对应的值9、路径别名使用指令参数:Alias实现URL路径映射时,访问的路径不在依赖于站点的根目录。10、基于用户访问控制基于用户的认证的方式有基本认证(Basic)和摘要认证(digest)。这里是基于虚拟用户来实现的。实现的方式有:文本文件、数据库、ldap、数据库引擎来提供API接口。以基于文件的形式实现用户访问的控制来示例:1、vim/etc/httpd/conf/httpd.confDirectory/var/选项控制AllowOverrideAuthConfig#实现用户认证AuthTypeBasic#认证方式是BasicAuthNameAdminArea.#提示信息#AuthBasicProviderfile#认证方式的提供者AuthUserFile/etc/httpd/conf/.htpasswd#认证文件的路径Requirevalid-user#登陆用户控制requireuserUSER_NAME/Directory2、提供认证文件由htpasswd命令得到。常用选项:-c:如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用-m:以md5的格式编码存储用户的密码信息-D:删除指定用户例如:htpasswd-c-m/etc/hhtpd/.htpasswdtom3、组认证Directory/var/组文件的路径,自己手动建立RequiregroupGROUP_NAME/Directory组文件格式:组名:user1user2user311、虚拟主机虚拟主机:使用不同访问路径基于端口:通过不同的端口来提供不同的访问站点基于IP:基于不同的ip地址来访问不同的站点基于主机名:相同的IP地址通过不同的主机名来实现访问不同的站点(1)使用虚拟的前提:取消主服务器注释主服务器的站点根路径指定:DocumentRoot(2)定义虚拟主机NameVirtualHostIP:PORT#指定监听的地址和端口VirtualHostIP:PORTServerName#主机名ServerAlias#定义多个主机名,此时ServerName的名称应该是URDocumentRoot#根站定目录ServerAlias#主机别名ErrorLog#错误日志的定义CustomLog#访问日志的定义/VirtualHost配置文件语法检查:httpd-tservicehttpdconfigtest配置完成虚拟主机后,可使用httpd-S显示配置的虚拟主机测试:crulURL12、https协议由于http协议在传输过程中使用的是明文传输。所以就出现了https协议来实现加密的https协议。ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话。https协议:是基于SSL二进制编码,监听于443/tcp。ssl握手要完成的工作:交换协议版本号选择双方都支持的加密方式客户端对服务器端实现身份验正密钥交换客户端验正服务器端证书:有效性检测:证书是否仍然在有效期内CA的可信度检测证书的完整性检测持有者的身份检测配置httpd工作于https:(1)安装mod_ssl模块#yuminstallmod_ssl(2)为服务端生成私钥,并为其提供证书;在服务端(172.16.10.9):#(umask077;opensslgenrsa-out/etc/pki/CA/private/cacert.key2048)#opensslreq-new-x509-key/etc/pki/CA/private/cakey.pem-out/etc/pki/CA/cacert.pem-days1000#touchindex.txt#echo01serial在客户端:#(umask077;opensslgenrsa-out/etc/httpd/httpd.key2048)#opensslreq-new-key/etc/httpd/httpd.key-out/etc/httpd/httpd.csr将httpd.csr传到服务端签名:在服务端:#opensslca-in/root/httpd.csr-out/root/httpd.crt-days1000将签好的证书,httpd.crt传回到客户端,放到/etc/httpd/目录下(3)配置使用https的虚拟主机VirtualHostIP:443SSLCertificateFile#证书路径SSLCertificateKeyFile#证书私钥文件DocumentRoot#虚拟主机的根站点ServerName#虚拟主机的主机名/VirtualHost(4)重新装载配置httpdreload(5)测试#openssls_client-connectIP:PORT-CAfile/path/to/ca_certificate13、status页面httpd内嵌有handler,其中有一个handler用于输出当前httpd服务相关状态信息handler:server-status启用handler要使用SetHandler指令handler:当文件被调用时,apache内部表示形式;一般每种文件类型都有其隐式处理器示例:基于10、11、12、13123456建立httpd服务器(基于编译的方式进行),要求:提供两个基于名称的虚拟主机:a,页面文件目录为/web/vhosts/;错误日志为/var/log/httpd/,访问日志为/var/log/httpd/