目前几乎所有的linux所有的发行版都捆绑了Apache,配置Apache服务,需要用到httpd包.可以使用下面命令,查看是否安装此包...
[root@station195 ~]# rpm -q httpdpackage httpd is not installed 本地配置有yum源,直接使用此命令安装...[root@station195 ~]# yum install httpd主配置文件:/etc/httpd/conf/httpd.conf网页目录:/var/www/html服务脚本:/etc/rc.d/init.d/httpd执行程序:/usr/sbin/htpd访问日志:/var/log/httpd/access_log错误日志:/var/log/httpd/error_log http.conf配置文件主要由全局环境,主服务器配置和虚拟主机3个部分组成,配置语句可以放在文件中的任何地方,但为了增强文件的可读性,最好将配置语句放在相应的位置.所有选项指令均不区分大小写..Apache默认会在本机所有可用IP地址上的TCP 80端口监听客户端的请求.可以使用多个Listen语句,以便在多个地址和端口上监听请求.在做基于端口的虚拟主机的时候会用到... serverRoot "/etc/httpd" apache服务的根...Errorlog 路径 -->定义错误日志文件..customlog 路径 -->定义访问日志文件..serverAdmin EMAIL -->定义管理员的邮箱..servername IP -->定义主机名称,如果服务器有域名,则填写其域名,如果没有则写其IP...Timeout 连接超时..keepalive 一次连接,多次请求,此选项默认是off可以置为on.maxkeepaliveRequests 100 当下载资源超过100个时断开重新连一次.keepalivetimeout 两次请求之间间隔不能超过15秒.DocumentRoot -->定义网页存放的位置.Allowoverride None 基于身份的验证...options Indexes Multiviews --> Indexes 索引..允许目录浏览,当访问不到页面时,会看到目录中的文件和子目录列表. MultiViews 允许内容协商的多重视图.. All 包含了除MultiViews之外的所有特性,如果没有options语句,默认为All ExecCGI 允许在该目录下执行CGI脚本.. FollowSymLinks 可以在该目录中使用符号链接. Includes 允许服务器端包含的功能. IncludesNoExec 允许服务器端包含功能,但禁止使用CGI脚本. DirectoryIndex 这儿定义默认主页.. loglevel 日志级别. 细心的用户可能会发现虽然在主目录设置了Indexes权限,且主目录中并不存在默认文档,但访问时并不会出现目录列表,而只出现Apache的测试面.解决这个问题的方法是将位于/etc/httpd/conf.d目录下的welcome.conf文件删除重启Apache即可. AddDefaultCharset 编码 -->定义服务器返回给客户机的默认字符集..默认是西欧(UTF-8),让其支持中文使用GB2312最关键的一点Order allow,deny,没有写的规则默认是deny,如果allow中定义的和deny中定义的规则冲突,以默认deny为佳... 试验一: 我们去做个试验...建一个用户sandy,密码为redhat.允许发布个人站点.且试验过程中开启selinux.[root@station195 conf]# vim httpd.conf # UserDir disable UserDir public_html<Directory /home/*/public_html> allowoverride none options Indexes order allow,deny allow from all</Directory>[root@station195 ~]# cd /home/sandy;mkdir public_html;cd public_html[root@station195 ~]# vim index.htmlwelcome sandy...[root@station195 home]# chmod o+x sandy/[root@station195 sandy]# ls -Zld public_html/ -->查看public_html的标签.drwxr-xr-x root root root:object_r:user_home_t public_html/[root@station195 sandy]# chcon -R -t httpd_sys_content_t public_html/ -->修改此目录标签.[root@station195 ~]# service httpd restart[root@station195 ~]# chkconfig httpd on 下面我们进行测试,在浏览器中输入http://192.168.0.195/~sandy就可以访问到网页了.....每次访问时都要加个"~"符号,很烦人,我们可以去做个别名...[root@station195 conf]# vim httpd.confAlias /sandy/ "/home/sandy/public_html/"[root@station195 ~]# service httpd restart -->每次修改过配置文件都要重新启动服务器... 下面我们再次测试...在浏览器中输入http://192.168.0.195/sandy/就可以访问到站点了... 试验二: 基于密码验证....[root@station195 conf]# vim httpd.conf<Directory /home/*/public_html> allowoverride Authconfig options Indexes order allow,deny allow from all</Directory>[root@station195 ~]#cd /home/sandy/public_html;vim .htaccessAuthName "my secret garden"AuthType basicAuthUserFile /etc/httpd/conf/.htpasswdRequire user natasha -->允许natasha用户访问.[root@station195 ~]# htpasswd -cm /etc/httpd/conf/.htpasswd natasha -->创建natasha用户给其密码为redhat.记住在第一次创建用户的时候使用-cm选项,第二次创建用户时使用-m就可以了,因为第一次创建时已经把.htpasswd文件创建好了...[root@station195 ~]# service httpd restart -->重新启动服务,这一步一定不要忘了. 下面去进行测试.在浏览器中输入http://192.168.0.195/sandy/会出现一个输入用户名和密码的方框,我们输入natasha,密码redhat,然后就可以访问到sandy的个人站点了....so easy ! 试验三: 虚拟主机.虚拟主机目前有三种:一种是基于端口的,一种基于IP的,还有一种基于主机头的...最常用的就是基于主机头的..基于IP的,会耗费大量资金,基于端口的访问起了非常的不方便...下面我们去建一个站点www.example.com[root@station195 ~]# cd /etc/httpd/conf;vim httpd.conf#DocumentRoot "/var/www/html" -->这一步很重要,首先注释掉主机头...NameVirtualHost *:80 -->打开监听的80端口.<virtualhost *:80> serveradminwww.example.com DocumentRoot /var/www/www Errorlog /var/log/httpd/www/err.log customlog /var/log/httpd/www/custom.log combined</virtualhost>[root@station195 httpd]# cd /var/log/httpd;mkdir www[root@station195 www]# cd /var/www/;mkdir www;cd www[root@station195 www]# vim index.htmlthis is main web![root@station195 ~]# vim /etc/resolv.conf192.168.0.195 www.example.com由于我本地妹做DNS服务器.为达到试验效果.测试机器上在hosts文件中也得写入这么一句才行...[root@station195 ~]# service httpd restart下面进行测试....在客户机浏览器http://www.example.com测试结果是成功的...大家可以模仿着做试试... 基于https的配置...先看CA证书的配置...[root@station195 ~]# cd /etc/pki/CA[root@station195 CA]# openssl genrsa 1024 > private/cakey.pem[root@station195 CA]# vim /etc/pki/tls/openssl.cnf 将[CA_default]后dir =../../CA改为dir = /etc/pki/CA[root@station195 CA]# mkdir ./newcerts[root@station195 CA]# touch ./{serial,index.txt}[root@station195 CA]# echo "00" > ./serial[root@station195 CA]# chmod 600 private/cakey.pem[root@station195 CA]# chmod 600 cacert.pem 下面进行ssh的配置.可以去了解证书的配置..[root@station195 ~]# yum -y install mod_ssl[root@station195 ~]#cd /etc/httpd/;mkdir ssl;cd ssl[root@station195 ssl]#mkdir private[root@station195 ssl]#openssl genrsa 1024 > private/httpd.key[root@station195 ssl]#openssl req -new -key private/httpd.key -out httpd.csr [root@station195 ssl]#openssl ca -in httpd.csr -out httpd.crt -days 3600[root@station195 ssl]#vim ../conf.d/ssl.conf<virtualhost 192.168.0.195:443>servername www.example.comdocumentroot /var/www/wwwSSLEngine onSSLcertificateFile /etc/httpd/ssl/httpd.crtSSLcertificatekeyFile /etc/httpd/ssl/private/httpd.keySSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW</virtualhost>[root@station195 ssl]# chmod 600 httpd.crt
[root@station195 ssl]# chmod 600 private/httpd.key
[root@station195 ssl]# service httpd restart 下面进行测试在客户端浏览器中输入https://www.example.com测试访问时成功的...这些我都严格测试过的,有一点大家注意,ssl.conf文件中在虚拟主机部分可以定义日志文件,但日志文件要和httpd.conf文件中的路径和名字一样,否则报错.我开始遇到这个问题,最后解决了.像SSLEgine SSLcertificateFile SSLcertificatekeyFile这些都得必须定义.大家可以模仿着试试. .