一、重置虚拟机,配置纯净的环境
如下图,这里我的ip为172.25.254.105,并且配置好yum源(apache在linux的镜像文件里有安装包)
二、安装apache并测试其可以正常显示
1、安装apache的服务器 yum install httpd
2、开启http服务,并设置为开机自启动。
3)但是http不在火墙允许列表里,所以我们将其加入火墙允许列表(--permanent表示永久性的 --reload表示重新加载列表)
4)apache的默认发布目录为 /var/www/html
默认发布文件:index.html
我们可以在默认发布文件下写下内容,当其他主机来访问时就可以看到
用真机去访问查看
三、默认发布文件的修改
默认发布文件可以有多个,在配置文件里修改,其按顺序执行,即如果前面的文件不存在,则访问后面的。
我们在默认发布目录下,新建westos文件加入内容,并在配置文件里加入westos置于index.html前。
1)在默认发布目录下新建westos加入内容,如下图
2)编辑主配置文件 vim /etc/httpd/conf/httpd.conf,完成后重启http服务,如下图
3)真机进行访问,发现默认发布内容变成了westos文件里的内容
四、默认发布目录的修改
1、新建一个目录,准备将其设为默认发布目录
2、我们将默认发布目录修改为上面新建的/westos/html,其中Directory模块是赋予新的发布目录的权限,Require all granted表示允许所有用户访问,修改后重启服务,如下图
注意:修改的发布目录必须系统存在,如果不存在需要手动建立,否则访问不到。
3)测试:用真机进行访问查看
修改默认发布目录时,如果selinux是开启状态,需要将其加入安全上下文列表
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
retorecon -RvvF /www/
apache的默认端口为80,我们修改为8080
1、先在主配置文件里修改
2、查看是否修改成功,但此时还是无法访问到,因为火墙的默认端口是80,所以还要将其加入火墙允许列表里,如下图
3、真机进行访问,虚拟机ip:8080访问
五、apache的访问控制
在主配置文件里写入控制模块,用来设置那些用户可以访问,那些不能。具体做法有两种
1、针对主机的访问控制,如下图,Dirctory模块设置权限,Order表示读取顺序,即允许所有人访问,但是不允许172.25.254.105用户访问 (系统在读取文件时,Order后的顺序决定了读取顺序,先读取的内容会被后读取的内容中相同的内容覆盖掉)
测试可以看到,修改完后,真机可以正常访问,虚拟机本身访问不到
2、用户方式的访问控制
1)先建立用户的目录,即把你要发布的内容写在此目录的发布文件中,访问者访问时可以看到
2)建立用户的登陆文件
在/etc/httpd里 执行htpasswd -cm 用户目录 用户添加(第一次创建-cm 再次建立-m即可,否则会覆盖你第一次建立用户)
3)编辑主配置文件
Authuserfile 表示登陆文件所在目录
AuthName 给进来访问的人提示信息
Authtype 认证类型为基本类型
Require 指定用户可以登陆,下一行是登陆文件里的所有用户都可以登陆
4)真机进行登陆访问,必须输入在登陆文件里的用户名和密码,才可以登陆
六、apache的虚拟主机
类似与打开百度主页后,在里面点开贴吧,点开视频等
1、在真机(也就是你一会准备进行访问的那台主机)的本地域名解析里加上你准备访问虚拟主机的所有网址
2、接下来在虚拟机里
1)先建立news(和music)的目录,下面配置文件里面要指令此目录, /var/www/virtual/news.westos.com/html/
再编辑内容vim /var/www/virtual/news.westos.com/html/index.html 即打开网页就是查看你写在里面的内容
2)cd /etc/httpd/conf.d/切换到此目录下,准备建立三个文件并编辑其内容
编辑a_default.conf(第一行指定默认发布目录,类似首页;第二行为混合日志文件)
编辑news.westos.conf(类似首页下的子网站,第一行为news的网址;第二行指定news所在发布目录;第三行为混合日志文件)
编辑music.westos.conf(首页下的子网站,第一行为music的网址;第二行指定music所在发布目录;第三行为混合日志文件)
3)完成后重启服务,并依次进行访问查看
七、apache支持的语言
php语言
1、安装php yum install php
2、cd /var/www/html 切换到此目录下,并编写php脚本文件,固定格式
3、进行访问查看ip/index.php
cgi语言
1、cd /var/www/html 切换到此目录下,建立cgi目录,在cgi目录下编写cgi脚本内容为动态的显示系统当前时间,完成后赋予执行权限,并./文件查看脚本文件是否编写正确
2、在之前建立的a_default 里写入cgi的授权模块(可以安装httpd-manual访问方式ip/manual去网页里打开cgi模块去复制cgi的配置信息)完成后重启服务
3、进行访问查看:ip/cgi/index.cgi
八、https
https是用户在通过http访问时数据不会被破解,简单来说就是http的加密。
httos的默认访问端口为443
1)部署https:yum install mod_ssl -y :生成443端口以及https服务,并将其加入火墙允许列表,然后重新加载火墙列表,并重启http服务
3)下面我们来配置其证书信息:yum install crypto-utils -y :生成产生加密证书的命令
安装完成后即可运行产生证书的命令:genkey 网站名称,运行后会产生如下界面进行生成:
分别为加密的key和加密证书的文件及其位置,选择Next进行下一步
选择key文件的大小,建议选择1024适中
此步为收集密码数据,速度较慢,此时需要在一个新的shell命令行随机输入内容,速度会迅速加快
该步骤为是否向CA机构发送,选择NO,不发送
填写网站的基本信息,依次为国家、省份、所在城市、公司名称,所属部门,网站网址名称
完成后Next即可创建成功
4)https的配置文件会自动在/var/httpd/conf.d/下生成,为ssl.conf文件
vim /etc/httpd/conf.d/ssl.conf,在里面写入生成的key和密码证书文件路径,完成后重启服务
5)用https://ip进行访问查看证书信息(如果查看不了,ctrl+shift+del清除缓存)
九、网页重写
目的:输入指定网址强制使用443https加密
1)在真机本地解析/etc/hosts加入测试网址login.westos.com
2、/var/www/virtual下建立login.westos.com/html目录并编辑目录下/index.com 写入内容
3、在/etc/httpd/conf.d/里建立login.conf文件,编辑
第一部分SSLEngine on 表示认证打开
第二部分允许所有人访问
第三部分RewriteEngine on 打开重写功能
RewriteRule 重写规则 *(/.*)$客户在浏览器地址栏中输入的所有字符
https:// 强制客户加密访问
%{HTTP_HOST}客户求求主机
$1表示^(/.*)$的值
[redirect=301]临时重写 (=302永久重写)
4、重启服务,真机只输入网址访问查看,认证后发现可以网址前面强制加入https://