APACHE服务
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。
HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
一、重置虚拟机,配置纯净的环境
这里我的ip为172.25.254.1,并且配置好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.28用户访问 (系统在读取文件时,Order后的顺序决定了读取顺序,先读取的内容会被后读取的内容中相同的内容覆盖掉),虚拟机ip为172.25.254.128,可以正常访问
<Directory "/var/www/html">
Order Allow,Deny
Allow from all
Deny from 172.25.254.28
</Directory>
测试可以看到,修改完后,真机不可以正常访问,虚拟机本身可以访问
2、用户方式的访问控制
1)先建立用户的目录,即把你要发布的内容写在此目录的发布文件中,访问者访问时可以看到
2)建立用户的登陆文件
在/etc/httpd里 执行htpasswd -cm 用户目录 用户添加(第一次创建-cm 再次建立-m即可,否则会覆盖你第一次建立用户)
3)编辑主配置文件
<Directory "/var/www/html/westos">
AuthUserFile /etc/httpd/user
AuthName "please input username and password"
AuthType basic
Require valid-user
</Directory>
Authuserfile ##表示登陆文件所在目录
AuthName ##给进来访问的人提示信息
Authtype ##认证类型为基本类型
Require ##指定用户可以登陆,下一行是登陆文件里的所有用户都可以登陆
4)真机进行登陆访问,必须输入在登陆文件里的用户名和密码,才可以登陆
七、apache的虚拟主机
什么是虚拟主机:
虚拟主机(Virtual Host),又称虚拟服务器、主机空间或是网页空间,是一种网络技术,可以让多个主机名称,在一个单一的服务器上运作,而且可以分开支持每个单一的主机名称。虚拟主机可以运行多个网站或服务。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。其技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP、FTP、EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务段位,对外表现为多个服务器,从而充分利用服务器硬件资源。
——Wiki中对虚拟主机的解释。
虚拟主机的配置:
1、在真机(也就是你一会准备进行访问的那台主机)的本地域名解析里加上你准备访问虚拟主机的所有网址
2、接下来在虚拟机里
1)先建立news(和music)的目录,下面配置文件里面要指令此目录, /var/www/virtual/news.lal.com/html/
再编辑内容vim /var/www/virtual/news.lal.com/html/index.html 即打开网页就是查看你写在里面的内容
2)cd /etc/httpd/conf.d/切换到此目录下,准备建立三个文件并编辑其内容
编辑a_default.conf(第一行指定默认发布目录,类似首页;第二行为混合日志文件)
编辑news.lal.conf(类似首页下的子网站,第一行为news的网址;第二行指定news所在发布目录;第三行为混合日志文件)
编辑music.lal.conf(首页下的子网站,第一行为music的网址;第二行指定music所在发布目录;第三行为混合日志文件)
3)完成后重启服务,并依次进行访问查看
八、apache支持的语言
php语言
1、安装php yum install php
2、cd /var/www/html 切换到此目录下,并编写php脚本文件,固定格式
<?php
phpinfo();
?>
3、进行访问查看ip/index.php
cgi语言
1、cd /var/www/html 切换到此目录下,建立cgi目录,在cgi目录下编写cgi脚本内容为动态的显示系统当前时间,完成后赋予执行权限,并./文件查看脚本文件是否编写正确
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
2、在之前建立的a_default 里写入cgi的授权模块(可以安装httpd-manual访问方式ip/manual去网页里打开cgi模块去复制cgi的配置信息)完成后重启服务
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
3、进行访问查看:ip/cgi/index.cgi
九、https
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket
Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
https是用户在通过http访问时数据不会被破解,简单来说就是http的加密。
https的默认访问端口为443
1、部署https:yum install mod_ssl -y :生成443端口以及https服务,并将其加入火墙允许列表,然后重新加载火墙列表,并重启http服务
yum install mod_ssl
yum install crypto-utils.x86_64
2、这时我们https://ip进入后是下图页面
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、点击锁子->第一行右边的箭头->More Information->,查看证书
十、网页重写
目的:输入指定网址强制使用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 重写规则 (/.)
1表示^(/.*)$的值
[redirect=301]临时重写 (=302永久重写)
<Virtualhost *:443>
ServerName "login.westos.com"
DocumentRoot "/var/www/virtual/login.westos.com/html"
CustomLog "logs/login.log" combined
SSLEngine on ##开始https功能
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt #证书
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##密钥
</Virtualhost>
<Directory "/var/www/virtual/login.westos.com/html">
Require all granted
</Directory>
<Virtualhost *:80> ##网页重写实现自动访问https
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</Virtualhost>
4、重启服务,真机只输入网址访问查看,认证后发现可以网址前面强制加入https://