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。
lLinux学习笔记之apache及论坛的发布
用firewall-cmd --list-all查看是否添加成功
lLinux学习笔记之apache及论坛的发布
3,httpd的帮助手册
httpd的帮助手册在下载服务时并不会自动下载,须手动安装,并只能在浏览器中查看
输入yum install httpd-manual -y命令,下载完成后重启httpd服务,在浏览器中输入IP/manual即可查看
lLinux学习笔记之apache及论坛的发布
若想用中文方式查看,选择zh-cn即可
4,httpd服务的默认端口及修改
httpd服务的默认侦听端口是80。
输入netstat -antulpe | grep httpd命令查看httpd的侦听端口。
lLinux学习笔记之apache及论坛的发布
编辑etc/httpd/conf/httpd.conf配置文件中第42行,将80改为8080,重启服务后修改生效
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
但是此时在浏览器中输入:IP:8080是看不到默认发布页内容的。这是因为防火墙允许通过的httpd服务的端口是
80。 此时,就需要对防火墙进行配置
firwall-cmd --permanet --add-port=8080/tcp 添加8080端口
firewall-cmd --reload 重新加载防火墙配置
此时在浏览器中输入:IP:8080是可以看到默认发布页的内容。
lLinux学习笔记之apache及论坛的发布
重复上面的编辑步骤,将侦听端口改为6666,此时发现,httpd服务重启失败。这是因为防火墙添加了6666端口,但是selinux并不允许httpd服务的6666端口通过。
输入semanage port -a -t http_port_t -p tcp 6666命令,王selinux中添加httpd的6666端口
lLinux学习笔记之apache及论坛的发布
测试,在浏览器中输入ip:6666
lLinux学习笔记之apache及论坛的发布
5,httpd服务的默认发布文件及目录的修改
1)httpd服务的默认发布文件修改

httpd服务的默认发布页为"/var/www/html/index.html",刚开始这个文件是不存在的。
例如在目录"/var/www/html/"下的"index.html"写入下图所示内容。在浏览器中输入IP就可以看见该内容。
lLinux学习笔记之apache及论坛的发布(其中<h1><h1>为字体大小)
lLinux学习笔记之apache及论坛的发布
在文件"/etc/httpd/conf/httpd.conf"中的第164行,可以更改默认发布页,如下图所示,将默认发布页改
为"xin.html"(有先后顺序),如果"xin.html"不存在,就访问"index.html"。之后重启服务
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
vim /var/www/html/we.html 在文件中编辑内容
lLinux学习笔记之apache及论坛的发布
完成后重启服务。在浏览器中输入IP测试
lLinux学习笔记之apache及论坛的发布
2)httpd默认发布目录的修改
httpd服务的默认发布目录是"/var/www/html"。
修改httpd服务的默认发布目录
1)"mkdir /xin/www/html -p"。建立一个目录作为默认发布目录。
lLinux学习笔记之apache及论坛的发布
2)"vim /xin/www/html/xin.html"。在文件"xin.html"中写入下图所示内容
lLinux学习笔记之apache及论坛的发布
3)"vim /etc/httpd/conf/httpd.conf"。在配置文件中编辑如下内容,将119行注释,如下图第120行至第123行所示:
lLinux学习笔记之apache及论坛的发布
4) 输入semanage fcontext -a -t httpd_sys_content_t '/xin(/.*)?'命令修改"/xin"目录中所有内容的安全上下文,并
通过"restorecon -RvvF /xin"刷新生效。(也可以设置selinux为警告或关闭模式)
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
配置完成后重启服务,在浏览器当中输入IP,就可以看见(4)中编辑的文件内容。
lLinux学习笔记之apache及论坛的发布
三:apache的虚拟主机及配置
1)"mkdir /var/www/xin.com/news/html 建立虚拟发布目录
2)vim /var/www/xin.com/news/html/index.html 编辑news.xin.com"的发布页
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
3)进入/etc/httpd/conf.d这个目录,输入vim default.conf命令,编辑默认发布页的文件
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
输入vim news.conf编辑"news.xin.com"的文件
lLinux学习笔记之apache及论坛的发布
重启服务,在测试主机上添加解析,并进行测试
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
在浏览器中测试
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
四,apache内部的访问控制
基于ip的访问控制
1,如果有apache服务的主机,可以在/etc/httpd/conf.d目录下的文件default.conf中进行编辑。编辑内容如下,重启服务后生效。
编辑的内容有两种:
方法1:通过ip控制访问
1)lLinux学习笔记之apache及论坛的发布
"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)lLinux学习笔记之apache及论坛的发布
"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 命令,进入编辑内容如下:
lLinux学习笔记之apache及论坛的发布
news文件的访问控制同理
如果没有apache服务的主机,
通过编辑配置文件"etc/httpd/conf/httpd.conf",可以设置禁止或允许一些用户访问。在120行-124行编辑,编辑内容同上
编辑文件完成后,重启服务
2,测试
对方法1的1)进行测试:在是172.25.254.183主机上访问(172.25.254.183不能访问)
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
连接成功,但是并不能看到文件中的内容
对方法2的2)进行测试:在不是172.25.254.183主机上访问(只有172.25.254.183可以访问)
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
同样,连接成功,但是并不能看到文件中的内容
对方法二测试:
添加用户名并设置密码
lLinux学习笔记之apache及论坛的发布
在浏览器中输入ip
lLinux学习笔记之apache及论坛的发布
显示输入用户名和密码,输入正确的用户名和密码之后,可以看到文件中的内容
五:apache支持的语言
1.html语言(一般以".html"结尾),apache默认支持该语言。
2.php语言(一般以".php结尾")。
要使apache支持php语言,步骤如下:
1)首先安装php
lLinux学习笔记之apache及论坛的发布
2)"vim /var/www/html/index.php",编写index.php文件
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
3)重启服务,并在浏览器输入IP/index.php进行测试
lLinux学习笔记之apache及论坛的发布
3.cgi语言(通用网管接口,处理表单,比如说注册时的表单)(一般以".cgi"结尾),其实是一种perl语言,apache也是默认支持此语言的。
在默认发布目录(/var/www/cgi-bin)下:
1)"vim index.cgi",编写index.cgi脚本文件(该脚本文件的来源:apache的帮助手册),该文件的名字任意给定。
lLinux学习笔记之apache及论坛的发布
lLinux学习笔记之apache及论坛的发布
2)"chmod +x index.cgi",给改脚本文件添加可执行的权限
lLinux学习笔记之apache及论坛的发布

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

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

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