搭建linux apache服务器
一、简介:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等
二、软件包:
httpd-2.2.3-6.e15.i386.rpm 该rpm包是apache的安装包,位置光盘的Server目录。
三、Apache的配置文件:
/etc/httpd/conf/httpd.conf 该文件是apache的主配置文件
/etc/httpd/conf.d/ssl.conf 该文件是apache的SSL功能配置文件
/etc/httpd/conf.d/welcome.conf 该文件是apache安装完毕后默认的主页文件
四、搭建web服务器:
1、服务器环境
服务器的IP地址为172.24.0.4/16,如下图所示:
图1
2、安装apache的rmp软件包
为服务器安装apache的软件包httpd-2.2.3-6.e15.i386.rpm,如下图2所示:
图2
由于apache的包必须依赖libpq.so.4 的函数库以及apr等软件包,所以系统会提示无法安装,如下图3所示:
图3
所以在安装apache的服务包时,需要同时安装apr 、apr-util 、postgresql-libs 软件包,如下图4所示:
图4
3、启动apache服务,并测试
安装完毕之后,设置apache服务开机自动 启动,并手工启动该服务,如下图5所示:
图5
当apache服务启动这后,在客户端就可以打开IE访问apache服务了。如下图8所示:
图6
4、apache的配置文件/etc/httpd/conf/httpd.conf
默认的apache主页文件为:/etc/httpd/conf.d/welcome.conf,如果需要定制个人的主页文件,需要将默认主页文件删除。如下图7所示。
图7
Apache的主配置文件为/etc/httpd/conf/httpd.conf ,在该文件中可以设置网站主目录的位置(如下图8所示)、网站主页名称(如下图9所示)、网页字符集(如下图10所示)等等。
图8
图9
图10
在以上设置的网站主目录中生成主页文件,如下图11所示:
图11
在客户端打开IE浏览器测试如下图12所示:
图12
5、配置虚拟主机
(1) 利用多IP地址的方式实现虚拟主机。首先必须在服务器的网卡上设置多个IP地址,本例中已经设置了172.24.0.4/16、172.24.0.5/16两个IP地址。然后在apache的主配置文件最后一行添加以下内容,如图13所示。图13中所示意思为把172.24.0.4绑定/var/www/html站点,而把172.24.0.5绑定为/var/www/html2站点。所以当客户端访问172.24.0.4时,打开的网站为/var/www/html;当客户端访问172.24.0.5时,打开的网站为/var/www/html2。
图13
(2) 利用多域名(多主机头值)实现虚拟主机。首先在本机仅设置一个IP地址,本例中为:172.24.0.4/16(此IP为默认IP地址)。然后修改apache的主配置文件/etc/httpd/conf/httpd.conf,在最后一行添加以下内容,如图14所示。图14中所示的意思为:将本机的默认IP与域名www.example.com 绑定 /var/www/html网站;将本机的默认IP与域名station4.example.com绑定/var/www/html2网站。注意事项:必须添加NameVirtualHost *:80 行,否则虚拟主机不生效。
图14
为了能让客户端解析域名,在本例中我们修改c:/windows/system32/drivers/etc/hosts文件,在该文件中添加关于域名www.example.com所对应的IP,以及关于域名station4.example.com所对应的IP。如下图15所示:
图15
然后打开客户端的IE浏览器,分别输入station4.example.com与www.example.com的域名进行测试,如下图16、图17所示:
图16 图17
五、关于apache的身份验证:
在某些含有敏感数据的网站,我们需要对该网站做身份验证,有机的控制只有合法用户可以访问,而非法用户不能访问。若要实现该功能,我们必须首先创建一个“合法用户列表”文件,并将“合法用户”的用户名与密码存储在该文件中。方法如下图18所示。说明:其中 "htpasswd -c 文件路径及文件名称 用户名" 该命令是创建“合法用户列表”文件,并将某用户信息加入到该文件中。而"htpasswd 文件路径及文件名称 用户名" 该命令只是将指定用户信息加入到该文件中。
图18
然后,需要在apache的主配置文件/etc/httpd/conf/httpd.conf中加入控制语句,如下图19所示。
图19
图19说明:其中<Directory "目录名"> 是设置需要保护哪个目录中的网页
AuthType Basic 是设置身份验证方法为“基本身份验证”
AuthName "................" 是设置客户端访问时的提示信息是什么
AuthUserFile 合法用户列表文件名 是设置使用哪个文件验证用户信息
Require valid-user 是设置 只要用户名与密码正确的用户都可访问
最后重新启动apache服务(即输入命令service httpd restart ) ,并在客户端测试。本例中如下图20所示:
图20
六、关于apache的加密--实现SSL通迅
对于一些诸如银行、交易等要求安全性特别高的网站,我们可以使用证书实现SSL通迅,进行保护客户端与服务器的通迅过程。如果希望实现apache的SSL通迅,首先需要apache支持SSL的功能。所以需要我们安装mod_ssl的软件包,如下图21所示:
图21
(1) 然后需要在“/etc/pki/tls/certs/”目录中生成公钥与私钥文件,并将私钥文件存储到“/etc/pki/tls/private”目录中,才能实现网站的SSL。但生成公钥、私钥文件的方法很多,在此笔者先来讲述第一种方法。该方法就是使用“make”命令生成 “*.pem”的文件,由于“*.pem”文件中即含有私钥信息,又含有公钥信息,所以生成该文件后,还需要将该文件复制到“/etc/pki/tls/private”目录中。操作如下图22、图23所示:
图22
图23
最后需要在 “/etc/httpd/conf.d/ssl.conf”文件中指定公钥文件名称与私钥文件名称,所以本例中使用vim 编辑 /etc/httpd/conf.d/ssl.conf文件,如下图24所示:
图24
在“/etc/httpd/conf.d/ssl.conf”文件中找到 "DocumentRoot"与"ServerName"行,将该行前的"#"号去掉,并设置需要保护的网站主目录位置,以及设置需要保护的域名。本例中,如下图25所示:
图25
然后在该文件中找到SSLCertficateFile行设置公钥文件的路径及名称;找到SSLCertificateKeyFile行设置私钥文件的路径及名称。本例中如下图26所示:
图26
在客户端测试打开IE浏览器,输入https://域名 访问web服务器,进行测试。本例中如下图27所示:
图27
(2) 生成公钥文件与私钥文件的第二种方法:即使用“make”命令生成“*.key”的文件(私钥文件),但生成该私钥文件时需要设置密码,该密码会影响apache的启动(即在启动apache时必须输入密码),所以生成该私钥文件后,还需要使用“openssl rsa -in *.key -out *.key”命令将该私钥文件进行转换即可解决该问题。本例中如下图28所示:
图28
生成私钥文件(*.key)之后,就可以使用“make”命令生成“*.crt”的公钥文件。本例中如下图29、图30所示:
图29
图30
将私钥文件移动到“/etc/pki/tls/private”目录中,如下图31所示:
图31
编辑SSL的配置文件/etc/httpd/conf.d/ssl.conf,如下图32所示:
图32
在/etc/httpd/conf.d/ssl.conf 文件中 找到 "DocumentRoot" 行与"ServerName " 行,分别设置需要使用SSL保护的网站主目录及域名。本例中如下图33所示:
图33
并找到 "SSLCertificateFile"行设置公钥文件的路径及名称,找到"SSLCertificateKeyFile"行设置私钥文件的路径及名称。本例中如下图34所示:
图34
最后在客户端打开浏览器进行测试。
七、关于iptables防火墙的设置
由于 apache服务使用tcp协议的80端口,所以只要在iptables中开放tcp的80端口即可。本例中方法如下图35所示:
图35
关于apache的SSL功能是使用tcp的443端口,如果需要开放该端口可以输入以下命令:
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
关于apache的其它身份验证方法以及其它使用方法,由于时间关系,在此本人不再嗷述。如果您有不同看法或问题请与我联系。(另:有许多朋友对apache的设置内容已经期待已久,但由于这段时间工作太忙,望大家谅解。工作之余,匆忙之中写本篇日志,如有漏洞或不妥之处,望大家海涵)
流星:caiyuanji (at) 163.com QQ:85104942