Apache

来源:互联网 发布:淘宝网棉拖鞋批发 编辑:程序博客网 时间:2024/06/07 01:43

本次实验操作主机ip为;172.25.254.93

一,apache简介:
apache是企业常用的web服务,用来提供http://(超文本传输协议),详情可以查看百度百科。

二,apache的安装:
[root@apache ~]# yum install -y httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd
[root@apache ~]# yum install -y http-manual #关于apache的首页信息
[root@apache ~]# rpm -ql httpd #查看安装软件的生成文件
[root@apache ~]# cd /etc/httpd/conf.d/
[root@apache conf.d]# ls
autoindex.conf manual.conf README userdir.conf welcome.conf
[root@apache conf.d]# vim manual.conf

测试:
在浏览器访问:172.25.254.93可以访问apache的主页
访问172.25.254.93/manual可以访问apache的首页
注意:安装apache时出现以下问题的解决方法:
这里写图片描述
解决方法:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
名词解释:什么是GPG?

三,apache的简单配置:

1,修改apache的默认端口:
ss -antlpe | grep httpd #查看apache开放的端口
vim /etc/httpd/conf.d/httpd.conf
42 Listen 80 #apache默认监听的端口
在此处修改端口后需要重启apache服务器即可生效,再次在浏览器访问时需要在URL后加上自己指定的端口再访问。
测试:
在浏览器访问:172.25.254.93可以访问apache的主页
访问172.25.254.93/manual可以访问apache的首页

2,apache的基础信息:
apache的主配置目录:/etc/httpd/conf
主配置文件:/etc/httpd/cong/httpd.conf
子配置目录:/etc/httpd/conf.d
子配置文件:/etchttpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认上下文:httpd_sys_content_t
1 程序默认用户:apache
apache日志:/etc/httpd/logs

3,修改apache的默认发布文件:
默认发布文件的修改(就是访问apache时默认访问的文件)
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.html test.html #优先访问index.html

4,修改默认发布目录:

测试:
在浏览器访问:172,25,254,93,查看效果
如果访问不到,可以查看日志,出现以下情况:
root@apache conf]# cat /etc/httpd/logs/error_log
[Fri Nov 17 21:34:30.750495 2017] [core:error] [pid 2892] (13)Permission denied: [client 172.25.254.92:50966] AH00035: access to /index.html denied (filesystem path ‘/www/html/index.html’) because search permissions are missing on a component of the path
[root@apache conf]# cat /var/log/messages #看出是安全上下文的问题
[root@apache conf]# semanage fcontext -a -t httpd_sys_content_t ‘/www(/.*)?’ #修改指定发布目录的安全上下文
[root@apache conf]# restorecon -RvvF /www/html
再次测试:在浏览器访问:172.25.254.93可以访问到/www/html/index.html文件中的内容。

5,修改apache的默认发布文件:
vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html #默认访问的是index.html

注意:apache默认可以访问三种语言的脚本文件(html,php,cgi),此处所写的访问文件的顺序就是浏览器访问的顺序,可以有多个文件

6,apache的虚拟主机的配置(即配置一个网站可以发布多个站点):
建立虚拟主机的发布目录:
[root@apache ~]# mkdir -p /var/www/virtual/www.test1.com/html
[root@apache ~]# mkdir -p /var/www/virtual/www.test2.com/html
建立发布文件:
[root@apache ~]# vim /var/www/virtual/www.test1.com/html/index.html
[root@apache ~]# vim /var/www/virtual/www.test2.com/html/index.html

[root@apache ~]# cd /etc/httpd/conf.d/
[root@apache conf.d]# vim defult.conf
默认主机的配置:

DocumentRoot “/var/www/html” #默认发布目录
CustomLog “logs/www.default.log” combined #默认日志存放,combined表示四种日志整合放在同一处。绝对路径为:/etc/httpd/logs/……
这里写图片描述
systemctl restart httpd #重启apache
测试:
在测试主机(任意主机都可以)的解析文件值中添加解析:
vim /etc/hosts
172.25.254.93 www.test1.com www.test2.com www.default.com

即可以完成apache虚拟主机的配置。

7,apache的内部访问控制:
1)针对于主机的访问控制:
这里写图片描述
[root@apache conf.d]# mkdir /var/www/html/test
[root@apache conf.d]# vim /var/www/html/test/index.html
test’page

测试:在客户端浏览器访问:172.25.254.93/test
2)针对用户的访问控制:
htpasswd -cm /etc/httpd/userpass admin
htpasswd -m /etc/httpc/userpass admin1 #第二次不需要-c

注意:htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件
[root@apache conf.d]# cat /etc/httpd/userpass
admin:apr1DYfE0ATzKpHWOy44CBjEWuPdtNDBU1 admin1:apr1KN0sd95wJqEH/ZlGba4YXCjWHgcE20
vim /etc/httpd/conf.d/default.conf
这里写图片描述
8,apache支持的语言:
apache默认支持三种语言:html,php,cgi
验证支持php语言:
这里写图片描述
测试:
在浏览器:172.25.254.93/index.php,可以看见php的主页信息
验证支持cgi:
vim /var/www/html/index.cgi

此处可以先做测试,确保在浏览器可以访问到动态的cgi文件:
chmod +x /var/www/html/cgi/index.cgi
/var/www/html/cgi/index.cgi #执行脚本确保文件正确

这里写图片描述
重启apache!
在浏览器访问:172.25.254.93/cgi/index.cgi
可以看见动态页面
如果想以此种方式测试:172.25.254.93/cgi
需要在apache的默认发布文件配置处添加:index.cgi,即添加默认可以访问cgi文件

如果在测试中出现问题无法访问到,可能是安全上下文的问题:
semanage fcontext -a -t httpd_sys_script_exec_t ‘/var/www/html/cgi(/.*)?’
restorecon -RvvF /var/www/html/cgi

9,apache访问证书的生成(https)
证书介绍
SSL安全证书可以自己生成,也可以通过第三方的CA(Certification Authority)认证中心付费申请颁发。
SSL安全证书包括:
1. CA证书,也叫根证书或中间级证书。单向认证的https,CA证书是可选的。主要目的是使证书构成一个证书链,以达到浏览器信任证书的目的。如果使用了CA证书,服务器证书和客户证书都使用CA证书来签名。如果不安装CA证书,浏览器默认认为是不安全的。
2. 服务器证书。必选。通过服务器私钥,生成证书请求文件CSR,再通过CA证书签名生成服务器证书。
3. 客户证书。可选。如果有客户证书,就是双向认证的HTTPS,否则就是单向认证的HTTPS。生成步骤和服务器证书类似。

上面几种证书都可以自己生成。商业上,一般自己提供服务器或客户证书端的私钥和证书请求CSR,向第三方机构付费申请得到通过CA证书签名的服务器证书和客户证书。

CSR是Cerificate Signing Request的英文缩写,即证书请求文件,在多方之间在互联网上安全分享数据的公钥基础架构PKI系统中,CSR文件必须在申请和购买SSL证书之前创建。也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请 者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
生成证书过程:
[root@apache conf.d]# yum install -y mod-ssl
[root@localhost conf.d]# yum install -y crpto-utils
[root@localhost conf.d]# genkey
生成证书的过程:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
结束后可以看见:
这里写图片描述
证书和钥匙已经生成,此处采用的是对称加密,所以公私钥是一样的。
[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf
100 SSLCertificateFile /etc/pki/tls/certs/www.crt
107 SSLCertificateKeyFile /etc/pki/tls/private/www.key
指定生成的证书和key的位置
测试:在浏览器访问:https://172.25.254.91
这里写图片描述
可以查看到自己生成的证书:
这里写图片描述
如何删除证书??

10,如何设定指定页面使用https访问?
[root@localhost ~]# mkdir -p /var/www/html/virtual/www.login.com/html

这里写图片描述

[root@localhost ~]# vim /etc/httpd/conf.d/login.conf #即指定/var/www/html/www.login.com/html目录下的文件需要证书访问
这里写图片描述
~
11,设定特定目录下的文件由http自动跳转到https访问,这里需要rewrite模块,即重定向:
[root@localhost ~]# vim /etc/httpd/conf.d/login.conf

这里写图片描述

解释:
^(/.*) #客户在浏览器地址栏中输入的所有字符 https:// #强制客户加密访问 %{HTTP_HOST} #客户请求主机(ip或者域名) 1#1表示^(/.*)的值
[redirect=301] #设定临时重定向,302表示永久重定向
测试效果:
这里写图片描述
自动跳转:
这里写图片描述

原创粉丝点击