Apache服务(Apache HTTP Server),是Apache软件基金会的一个开放源码的网页服务器。
Apache官方网站:http://www.apache.org/
Centos6 和Centos7两个自带版本
Centos 6:2.2
Centos 7:2.4
下面说一下Linux下Apache的安装
安装方式:
–> rpm安装
–> 编译安装
–> yum安装
需要安装4个包:httpd、httpd-devel、httpd-manual、httpd-tools
Centos6:
一、程序环境
1、配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
2、服务脚本:
/etc/rc.d/init.d/httpd
配置文件:/etc/sysconfig/httpd
3、主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
4、日志文件目录::
/var/log/httpd
->access_log: 访问日志
error_log:错误日志
5、站点文档目录:
/var/www/html
6、模块文件路径:
/usr/lib64/httpd/modules
7、配置文件的组成:
~]# grep “Section” /etc/httpd/conf/httpd.conf
### Section 1: Global Environment
### Section 2: ‘Main’ server configuration
### Section 3: Virtual Hosts
8、配置格式:
directive value
directive:不区分字符大小写
value:为路径时,取决于文件系统
二、服务搭建及相应配置
1、开启Apache服务
先编辑一下配置文件/etc/httpd/conf/httpd.conf,在ServerName 那一行加上localhost:80 否则在启动服务的时候会报错
启动httpd服务
2、关闭SELinux、iptables防火墙
把/etc/selinux/conf 配置文件中的SELINUX修改为disabled。保存退出后重启虚拟机!
重启虚拟机后查看SELinux状态,已经关闭
关闭iptables防火墙
3、重启httpd服务,打开浏览器,测试访问
4、修改监听的端口和IP,测试访问
新加一行 Listen 10.33.2.254:8080 使其监听当前主机的8080端口
5、持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成。
如何断开?
数量限制:100
时间限制:可配置(一般不要配置太长时间,10秒左右即可)副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到响应
折中方案:使用较短的持久连接时间
测试:
可以本地测试
telnet HOST PORT
GET /URL HTTP/1.1
Host:HOSTNAME or IP
PS:在输入Host之后敲两次回车,会显示出来我们要访问的文档,看一下文档末尾信息:
会显示连接断开,这是因为配置文件中设置的持久连接是关闭状态的。把持续连接由off–>on,重新加载服务后在测试一下:
可以看到连接并没有断开,还是持续着的
等待15秒,超时断开持续连接状态:KeepAlive On | off
最大请求数:MaxKeepAliveRequest #
超时时间(s):KeepAliveTimeout #
6、切换默认访问URL
在浏览器中输入主机IP默认访问的URL是/var/www/html,可以通过修改配置文件修改默认访问URL,即DocumentRoot。下面做一下实验,先把DocumentRoot改成/www/rsq,但是Directory不变,看看实验结果是什么
把/www/rsq/index.html 重命名为:test.html,再访问一下看会发生什么。
会发现又回到欢迎界面了,那我们把配置文件中的Directory目录改成/www/rsq/,看看会发生什么。
会发现变成了Index界面,可以下载一些文件,再把配置文件中的Directory下options选项中的Indexes删除掉,看看会发生什么。PS:在options选项中,除了Indexes外还有一个选项FollowSymLinks,这个的选项含义是允许跟踪符号链接文件,当/www/rsq/目录下有链接文件时还可以访问到次文件,若是把这个删除,那链接文件就不能访问到了
Directory中“基于来源地址”实现访问控制:
(1) Options
所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews None, AllIndexes: 索引;
FollowSymlinks:允许跟踪符号链接文件;
SymLinksifOwnerMatch:若符号链接的属主和本地链接文件属主一样才可以访问
MultiViews:是否允许多视图(2) 基于来源地址的访问控制机制
Order:检查次序
Order allow,deny 做白名单,默认deny
Order deny,allow 做黑名单,默认allow
Allow from
Deny from来源地址:
IP/NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
7、路径别名:
DocumentRoot “/www/rsq”
要访问:http://10.33.2.254/download/bash-4.4.2-3.el6.x86_64.rpm
会访问:--> /www/rsq/download/bash-4.4.2-3.el6.x86_64.rpm
别名:Alias /URL/ "/PATH/TO/SOMEDIR/"
定义“Alias /bbs/ "/Doc/htdocs"
要访问:http://10.33.2.254/bbs/index.html
会访问:--> /Doc/htdocs/bbs/
8、设定默认字符集
AddDefaultCharset UTF-8
列举几种类型:GBK, GB2312, GB18030
9、基于用户的访问控制
认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码;
认证:
Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源;
认证类型:
basic:明文
digest:消息摘要安全域:
需要用户认证后方能访问的路径;
应该通过名称对其进行标识,并用于告知用户认证的原因;用户的账号和密码存储于何处?
虚拟账号:仅用于访问某服务时用到的认证标识;
存储:
文本文件
SQL数据库
ldap
nis
说一下basic认证:
1、定义安全区域
例子:
< Directory “”>
Options Indexes FollowSymLinks #选项
AllowOverride None #是否允许覆盖
AuthType Basic #认证类型
AuthName “Adiministator Private” #认证名字
AuthUserFile “/etc/httpd/conf.d/.htpasswd” #认证文件
Require valid-user #允许所有用户登录;允许某些用户访问或某些组访问都在这里设置
< /Directory >
需要在/www/rsq/目录下创建admin文件夹,然后测试。
PS:以下的实验由于换了一台PC,所以虚拟机IP发生变化,不过不影响实验,在此声明新IP:192.168.56.136
测试
提示要输入用户名和密码,下面开始创建用户名和密码:2、提供账号和密码存储(文本文件)
使用htpasswd命令进行管理
htpasswd [options] passwordfile username
-c: 自动创建passwordfile,因此,仅应该在添加第一个用户时使用;
-m: md5加密用户密码;
-s: sha1加密用户密码;
-D: 删除指定用户
PS:创建了两个用户,分别为RSQ1、RSQ2,在创建第二个用户的时候不加 ‘-c’ 选项测试:
——成功登陆——
PS:成功登陆后访问的依然是文件类型的,可以在admin文件中创建一个index.html的文件,添加点内容,这样显示的就会是网页格式了,在配置文件中可以定义主页面的格式!3、实现基于组进行认证
只需要把配置文件略做改动,然后创建相应目录即可
< Directory “/www/htdocs/admin”>
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName “Administator private”
AuthUserFile “/etc/httpd/conf.d/.htpasswd”
AuthGroupFile “/etc/httpd/conf.d/.htgroup”
Require group Users
< /Directory >
为了有对比,这里再创建一个Tom用户
在/etc/httpd/conf.d/目录下创建一个 ‘.htgroup’ 隐藏文件,并添加以下内容:
修改配置文件为如下:
重新加载服务,访问测试
10、虚拟主机
有三种实现方案:
—>基于ip:
为每个虚拟主机准备至少一个ip地址;实践中很少使用
—>基于port:
为每个虚拟主机准备至少一个专用port;实践中也很少使用
—>基于hostname:
为每个虚拟主机准备至少一个专用hostname;实践中经常使用PS:可混合使用上述三种方式中任意方式;一般虚拟主机莫与中心主机混用,所以,要使用虚拟主机,先禁用中心主机(注释DocumentRoot)
每个虚拟主机都有专用配置:
< VirtualHost “IP:PORT”>
SeverName
DocumentRoot “”
< /VirtualHost>
也可定义如下内容,但是最主要的两项还是上面的两项
ServerAlias: 虚拟主机的别名;
ErrorLog:错误日志
CustomLog:访问日志
还可以使用Directory封装,做访问控制
< Directory “”>
< /Directory >1、基于IP
先把配置文件中的DocumentRoot注释,然后在配置文件最后添加我们新添加的内容,然后创建相应的目录即可。
保存退出后新添加ip:192.168.56.137/24
然后创建相应的DocumentRoot目录,多创建几个sample,后续实验会用到。在doc目录下分别创建index.html,内容分别为sample1.rsq.com、sample2.rsq.com,以便测试对比。
可以用httpd -t 或 service httpd configtest 检查配置文件中语法是否有误,无误后重启服务
测试2、基于Port
在配置文件中添加一些内容
既然修改了端口,那相应的就应该修改监听端口
然后在/vhost/sample3/doc/目录下创建index.html,内容为sample3.rsq.com。就不附图了。
修改了端口,重启服务
测试3、基于Hostname
先去掉配置文件中NameVirtualHost的注释,并修改
然后修改虚拟主机配置
三个虚拟主机,对应的ServerName不同,重载,开始测试。在测试的时候可以换一台虚拟机,添加解析内容到/etc/hosts 文件中,否则浏览器解析不了我们要访问的主机名。
保存退出,开始测试
PS:局域网内的机器只要修改一下hosts文件,都可以访问得到
11、status页面
在访问主机的时候,在后边加上server-status可以查看本机服务器的状态页面,如下:。
只需要把配置文件900多行位置的注释去掉,并允许本地网段访问即可,Allow From 192.168.56
PS:在设置虚拟主机的时候为其提供https服务,使得用户可以通过https安全的访问此web站点,这个就需要用到openssl证书认证了,可以看看我写的另一篇文章OpenSSL
有几个关于Apache的命令,给大家分享一下
curl
lynx
********End********
转载至https://blog.csdn.net/mr_rsq/article/details/71055677