Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
    Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。一: apache的基础信息

**主配置目录:/etc/httpd/conf

主配置文件:/etc/httpd/conf/httpd.conf

子配置目录:/etc/httpd/conf.d

子配置文件:/etc/httpd/conf.d/*.conf

以上这些配置文件的名字可以通过"rpm -qc httpd"查看

默认侦听端口:80

默认发布页:/var/www/html/index.html

默认发布目录:/var/www/html

默认安全上下文:httpd_sys_content_t

程序开启默认用户:apache**

二:apache的配置 1,安装及设置开机自启动 yum install -y httpd 安装 systemctl start hpptd 启动 systemctl enable httpd 设置开机自动启动 2,添加防火墙信任 1)命令方式 firewall-cmd --permanet --add-service=http firewall-cmd --permanet --add-service=https firewall-cmd --reload 重新加载,使配置生效 2)图形方式 输入firewall-config命令,进入防火墙配置的图形化界面,进行配置 配置过程:Configuration选择为permanent;在Zones的区域选择public;在Services的区域选择http,https;Options选择Reload Firewalld。 用firewall-cmd --list-all查看是否添加成功 3,httpd的帮助手册 httpd的帮助手册在下载服务时并不会自动下载,须手动安装,并只能在浏览器中查看 输入yum install httpd-manual -y命令,下载完成后重启httpd服务,在浏览器中输入IP/manual即可查看 若想用中文方式查看,选择zh-cn即可 4,httpd服务的默认端口及修改 httpd服务的默认侦听端口是80。 输入netstat -antulpe | grep httpd命令查看httpd的侦听端口。 编辑etc/httpd/conf/httpd.conf配置文件中第42行,将80改为8080,重启服务后修改生效 但是此时在浏览器中输入:IP:8080是看不到默认发布页内容的。这是因为防火墙允许通过的httpd服务的端口是 80。 此时,就需要对防火墙进行配置 firwall-cmd --permanet --add-port=8080/tcp 添加8080端口 firewall-cmd --reload 重新加载防火墙配置 此时在浏览器中输入:IP:8080是可以看到默认发布页的内容。 重复上面的编辑步骤,将侦听端口改为6666,此时发现,httpd服务重启失败。这是因为防火墙添加了6666端口,但是selinux并不允许httpd服务的6666端口通过。 输入semanage port -a -t http_port_t -p tcp 6666命令,王selinux中添加httpd的6666端口 测试,在浏览器中输入ip:6666 5,httpd服务的默认发布文件及目录的修改 1)httpd服务的默认发布文件修改 httpd服务的默认发布页为"/var/www/html/index.html",刚开始这个文件是不存在的。 例如在目录"/var/www/html/"下的"index.html"写入下图所示内容。在浏览器中输入IP就可以看见该内容。 (其中<h1><h1>为字体大小) 在文件"/etc/httpd/conf/httpd.conf"中的第164行,可以更改默认发布页,如下图所示,将默认发布页改 为"xin.html"(有先后顺序),如果"xin.html"不存在,就访问"index.html"。之后重启服务 vim /var/www/html/we.html 在文件中编辑内容 完成后重启服务。在浏览器中输入IP测试 2)httpd默认发布目录的修改 httpd服务的默认发布目录是"/var/www/html"。 修改httpd服务的默认发布目录 1)"mkdir /xin/www/html -p"。建立一个目录作为默认发布目录。 2)"vim /xin/www/html/xin.html"。在文件"xin.html"中写入下图所示内容 3)"vim /etc/httpd/conf/httpd.conf"。在配置文件中编辑如下内容,将119行注释,如下图第120行至第123行所示: 4) 输入semanage fcontext -a -t httpd_sys_content_t '/xin(/.*)?'命令修改"/xin"目录中所有内容的安全上下文,并 通过"restorecon -RvvF /xin"刷新生效。(也可以设置selinux为警告或关闭模式) 配置完成后重启服务,在浏览器当中输入IP,就可以看见(4)中编辑的文件内容。 三:apache的虚拟主机及配置 1)"mkdir /var/www/xin.com/news/html 建立虚拟发布目录 2)vim /var/www/xin.com/news/html/index.html 编辑news.xin.com"的发布页 3)进入/etc/httpd/conf.d这个目录,输入vim default.conf命令,编辑默认发布页的文件 输入vim news.conf编辑"news.xin.com"的文件 重启服务,在测试主机上添加解析,并进行测试 在浏览器中测试 四,apache内部的访问控制 基于ip的访问控制 1,如果有apache服务的主机,可以在/etc/httpd/conf.d目录下的文件default.conf中进行编辑。编辑内容如下,重启服务后生效。 编辑的内容有两种: 方法1:通过ip控制访问 1) "Order Allow,Deny"表示开启允许或者禁止访问功能,且哪个在前哪个先生效,此处"Allow"先生效。"Allow from all"表示允许所有用户访问。"Deny from 172.25.254.183"表示禁止IP为"172.25.254.183"的用户访问。根据上述前后顺序,则IP 为"172.25.254.183"的用户不可以访问。news.conf,music.conf文件的访问控制同理。 2) "Order Deny,Allow",此处"Deny"先生效。"Deny from all"表示禁止所有用户访问。"Allow from 172.25.254.183"表示允许IP为"172.25.254.183"的用户访问。根据上述前后顺序,则只有IP 为"172.25.254.183"的用户可以访问。 方法二:通过认证用户名密码进行控制 输入vim /etc/httpd/conf.d/default.conf 命令,进入编辑内容如下: news文件的访问控制同理 如果没有apache服务的主机, 通过编辑配置文件"etc/httpd/conf/httpd.conf",可以设置禁止或允许一些用户访问。在120行-124行编辑,编辑内容同上 编辑文件完成后,重启服务 2,测试 对方法1的1)进行测试:在是172.25.254.183主机上访问(172.25.254.183不能访问) 连接成功,但是并不能看到文件中的内容 对方法2的2)进行测试:在不是172.25.254.183主机上访问(只有172.25.254.183可以访问) 同样,连接成功,但是并不能看到文件中的内容 对方法二测试: 添加用户名并设置密码 在浏览器中输入ip 显示输入用户名和密码,输入正确的用户名和密码之后,可以看到文件中的内容 五:apache支持的语言 1.html语言(一般以".html"结尾),apache默认支持该语言。 2.php语言(一般以".php结尾")。 要使apache支持php语言,步骤如下: 1)首先安装php 2)"vim /var/www/html/index.php",编写index.php文件 3)重启服务,并在浏览器输入IP/index.php进行测试 3.cgi语言(通用网管接口,处理表单,比如说注册时的表单)(一般以".cgi"结尾),其实是一种perl语言,apache也是默认支持此语言的。 在默认发布目录(/var/www/cgi-bin)下: 1)"vim index.cgi",编写index.cgi脚本文件(该脚本文件的来源:apache的帮助手册),该文件的名字任意给定。 2)"chmod +x index.cgi",给改脚本文件添加可执行的权限

3)重启服务,输入IP/cgi-bin/index.cgi进行测试 在非默认发布目录下: (1)"mkdir /var/www/html/cgi -p",建立/var/www/html/cgi目录 (2)在"/var/www/html/cgi"目录里 "vim index.cgi",编辑cgi的脚本文件

(3)"chmod +x index.cgi",给脚本文件增加可执行的权限 (4)"semanage fcontext -a -t httpd_sys_script_exec_t /var/www/html/cgi(/.*)?",修改/var/www/html/cgi目录本身,及其内部内容的安全上下文 此时重启服务进行测试,发现,显示出来的不是该脚本文件运行出来的结果,而是该脚本文件本身,这是因为,网页不认识这些脚本文件,所以需要编辑配置文件, 5)编辑配置文件: 如果配置了apache的虚拟主机 在"/etc/httpd/conf.d"目录下的default.conf文件的中,编辑如下内容 如果没有apache服务的虚拟主机,在etc/httpd/conf/httpd.conf文件中进行编辑,在120-123行进行编辑,编辑内容如下 6)编辑完成,重启服务后在浏览器中输入ip/cgi/index.cgi进行测试 注意:如果发布文件不在默认发布目录中,需要修改安全上下文或者将xelinux设置为警告模式或关闭 4.python语言(python脚本语言需要网络服务器网关接口即WSGI) 1)"yum search wsgi","yum install mod_wsgi"。安装支持wsgi的软件 2)"vim /var/www/cgi-bin/webapp.wsgi"。编辑脚本文件 3)"chmod +x /webapp.wsgi"。给该脚本文件增加可执行的权限, 因为该目录不是python语言的默认发布目录,所以要编辑配置文件,添加信任,并修改安全上下文或将selinux设置为警告模式或者关闭selinux。

4)在"/etc/httpd/conf.d"目录下编辑"webapp.conf"文件 重启服务,在客户主机上编写本地解析文件,在浏览器,输入webapp.xin.com进行测试。 六,apache的加密访问(https) https是http的安全版,常用于密码登陆等页面,实现客户端和服务端之间的数据的加密传输。https的配置步骤如下所示: 1)"yum install mod_ssl.x86_64 -y"。下载加密模块ssl。 2)"yum install crypto-utils.x86_64 -y"。安装认证证书和key的生成软件。 3)设置防火墙策略允许https(前面的实验,已经做过这一步),https的默认端口为443(通过/etc/httpd/conf.d/ssl.conf查看) 4)输入命令genkey www.xin.com,为www.xin.com生成证书和key,其生成为图形界面,步骤如下图所示。 进入界面,提示证书和key的存放位置,点击next。 进入选择加密长度界面。选定后点击next。 进入文件检查界面 完成后进入key生成界面,需要在另外一个shell上随便输入一些东西,可加速key生成 完成后进入如下界面,点击no,因为yes是需要钱的,是官方认证,如果是企业需要,则点击yes 完成后进入如下界面,直接点击next 完成后进入如下界面,输入认证证书的信息。完成后点击next。 5)"vim /etc/httpd/conf.d/ssl.conf"。编辑配置文件,配置内容如下,输入生成的证书和key所在的文件位置。如图第100行和第107行所示:
6)加密页的配置已经完成,重启服务后生效。在浏览器中输入https:172.25.254.183测试, 点击Confirm Security Exception,查看网页信息 点击View查看证书信息 点击锁的样式,查看证书信息 查看该认证证书,和之前设置证书时输入的一样 七,设定https虚拟主机并设定网页重写 上述配置完成后在访问网页时需要输入"https",显然这是不合理的,需要在访问域名时直接跳转至https页面。还需要做如下配置: 1)"mkdir /var/www/xin.com/login/html -p"。建立一个虚拟发布目录。 2)"vim /var/www/xin.com/login/html/index.html"。配置虚拟发布页,内容如下图所示。 3)"vim /etc/httpd/conf.d/login.conf"。配置虚拟发布页的文件。内容如下,如图所示: 其中第2行,第6行和第7行摘自(/etc/httpd/conf.d/ssl.conf文件) 第14,15行摘自apache的帮助手册 其中":443"表示将端口改为443。"SSLEngine on"表示加密开启,在后面输入证书和key的位置。"RewriteEngine on"表示,重写功能开启。"RewriteRule ^(/.)$ https://%{HTTP_HOST}$1 [redirect=301]"表示重写规则,"^(/.)$"是客户端上输入的字符,"%{HTTP_HOST}"表示客户请求主机,"$1"表示在这里代表"^(/.)$","redirect=301",表示重定向等级是永久重定向,如果是302表示临时重定向。 4)重启服务生效后,测试时,在客户主机的"/etc/hosts"本地解析文件中加入"login.xin.com",在浏览器中输入"login.xin.com"测试

可以看出,网页自https://login.126.com 获取认证证书后即可看到页面内容。