目录
3、modules目录中:放置的Apache中的模块。这样更加灵活。
1、安装完成的位置
/usr/local/Apache/bin 常用的命令
/usr/local/Apache/modules 模块
/usr/local/Apache/conf 配置文件的目录
/usr/local/Apache/htdocs 网站的根目录
2、bin目录中
httpd:apache的启动程序
apachectl:是Apache服务器自带的脚本工具,用于管理控制Apache后台程序。
apachectl start|stop|restart
start 开启,他会先检查你的配置文件有没有错误。
stop:停止
restart:重启httpd,也会检查配置文件。
3、modules目录中:放置的Apache中的模块。这样更加灵活。
模块的类型:
1、核心模块,无法被模块化的东西,基础的模块。不能被删除。
2、标准模块,由Apache基金会发布和维护的模块。这些模块可以自由的删除和加载。
3、第三方模块,由普通的用户编写,这些模块不作为Apache的官方发布。
4、conf目录中:
-rw-r--r--. 1 root root 18201 5月 3 17:36 httpd.conf apache的配置文件。定义了apache的基本配置以及对其他模块的引用。
-rw-r--r--. 1 root root 53011 5月 3 14:47 mime.types 所有的mime类型
extra目录:所有Apache标准模块的、第三方模块的配置文件。
5、httpd.conf的配置
配置文件分为三部分:
1、主服务器部分:用一些核心模块提供的指令来定义服务器的功能和参数,在整个Apache配置中都有作用。
2、容器部分:都以<容器名>开始</容器名>结束的样式来对指令进行封装。
3、服务器扩展部分:
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 载入某个模块
#Include conf/extra/httpd-mpm.conf 引入一个配置文件。
1、主服务器部分:
ServerName:定义Apache的默认主机名,用于辨别自己的主机名和端口号。通常后面是主机名或IP地址。
注意:该选项默认时候不开启。因为默认的时候我们是将网站放在公网上面。使用DNS服务作为解析。可以自动判断主机名或IP地址
ServerRoot:用来指明Apache所在的安装目录
DocumentRoot:网站的根目录。也就是Apache所受到的URL请求的时候的/
注意:要修改网站的根目录也要修改容器部分的
<Directory "/usr/local/Apache/www"> 因为这里是这个目录的权限。
Listen:监听的端口号,默认是80端口,端口范围可以是0~65535
ErrorDocument:当出错的时候会给出一个HTTP的状态码,该选项用于定义对应状态码想要的页面/提示信息。
#ErrorDocument 404 "nichousha?"
2、容器部分
<IfModule setenvif_module>,作用域模块,先判断模块是否载入,然后决定是否进行处理。只有判断结果为真的时候才会执行容器内部的命令。
<IfModule unixd_module>
User,Group:用于定义运行Apache服务器的账号和工作组。用来定义用户请求时创建的子进程的账号与工作组。
注意:Apache的权限是root,这个是Apache的主进程,这个进程不响应任何请求,只是负责建立子进程来响应请求。
httpd root
httpd daemon
4308 daemon 20 0 314m 19m 2484 S 0.3 0.5 0:00.38 httpd
<Directory />:让所封装的指令在指定的目录以及他的子目录中起作用。
<Files ".ht*"> :让所封装的指令在指定的文件起作用
<Location >:指定的URL起作用
3、目录索引
由mod_dir这个模块:
DirectoryIndex:指定的索引文件
DirectoryIndex 1.html 2.php
mod_autoIndex模块:
配置文件在:extra/httpd-autoindex.conf
IndexOptions FancyIndexing HTMLTable VersionSort
FancyIndexing:启用复杂索引。
HTMLTable:以HTML表格方式显示。
VersionSort:版本排序。
FolderFirst:目录靠前显示。
_________________________________________
AddIconByType :指定的后缀名的描述
AddDescription "GZIP compressed tar archive" .tgz
AddIcon:添加指定后缀文件的图片标识
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
格式:AddIcon 图片名 后缀名
DefaultIcon:如果AddIcon中没有这个后缀那么默认使用的图片标识。
IndexIgnore:隐藏指定的文件。
4、虚拟主机
LoadModule vhost_alias_module modules/mod_vhost_alias.so 提供虚拟主机服务,在一台主机上运行或维护多个web站点。
Include conf/extra/httpd-vhosts.conf 引入配置文件
实验1:基于主机名的虚拟主机:
计算机相互访问只能靠IP地址来进行访问,但是IP不容易记,人类对字母比较敏感。所以使用域名。
域名:先找本地的hosts文件(这个文件里面包含着你自己设置的指向),如果请求的域名在这个文件中没有的话那么请求DNS服务器
电信:202.175.3.8 202.175.3.3
1、设置hosts文件
windows:C:\Windows\System32\drivers\etc\hosts
Linux:/etc/hosts
192.168.10.44 www.baidu.com
2、设置虚拟机
<VirtualHost 192.168.10.44:80>
ServerName mp3.google.com
DocumentRoot "/usr/local/Apache/www/mp3.google.com"
</VirtualHost>
<VirtualHost 192.168.10.44:80>
ServerName av.google.com
DocumentRoot "/usr/local/Apache/www/av.google.com"
</VirtualHost>
3、如果让本机IP像以前那样正常访问可以在虚拟机设置最前面加上
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/www"
</VirtualHost>
默认的时候使用第一个的虚拟机配置
注意:
1、这样可以节省IP地址但是需要自己设置DNS
2、确认模块和配置文件是否正确打开、载入
3、如果遇到403错误,通常是一下3点:
1、访问权限。
2、seLInux或防火墙
3、配置文件错误。
实验2:基于IP地址不同端口的虚拟主机
步骤:
1、默认是监听80端口,再添加一个端口
Listen 8080 添加新的一行
2、添加虚拟主机部分
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/www/80"
</VirtualHost>
<VirtualHost 192.168.10.44:8080>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/www/8080"
</VirtualHost>
实验3:基于相同的端口不同的IP设置虚拟主机
步骤:
1、给一张网卡设置多个IP地址
只有一张网卡,默认为eth0,如果要在同一张网卡上配置需要使用虚拟网卡eht0:(0~255)成为虚拟网络接口,是建立在eth0网络接口上。
[root@Centos www]# ifconfig eth0:0 192.168.10.45 netmask 255.255.255.0 up
这种方法只是临时生效。
如果要永久生效:
[root@Centos www]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
更改ifconf-eth0:0中的
IPADDR=192.168.10.45
DEVICE=eth0:0
NETMASK=255.255.255.0
删除UUID="0eef8388-859f-4728-94e0-b4af87b4e884"
注意:如果重新启动网卡后不生效,查看是否开启了NetworkManager这个服务。如果是开启状态就关闭
2、重新启动网络服务
service network restart
3、增加虚拟机
<VirtualHost 192.168.10.44:80>
serverName 192.168.10.44
DocumentRoot "/usr/local/Apache/www/44"
</VirtualHost>
<VirtualHost 192.168.10.45:80>
serverName 192.168.10.45
DocumentRoot "/usr/local/Apache/www/45"
</VirtualHost>
5、 身份认证。
authz_host模块:提交简单的、基本的访问控制
order:设置默认访问的状态。Allow和deny指令的生效顺序
Allow:指定哪些客户允许进行访问
Deny:指定哪些用户会被拒绝
注意:
1、allow和deny中的第一个参数都是from,可以在from后面加上要允许或禁止的主机。
allow from 192.168.140.250
deny from all 所有的都不能访问
正确
order deny,allow
deny from all
allow from 127.0.0.1
错误
order allow,deny
deny from all
allow from 127.0.0.1
注意:
order决定的“最后”规则非常重要,决定谁生效。
一般来说:分两种:
1、拒绝所有,逐个允许(自己网站不想让别人随便访问。但是想让几个人访问)
2、允许所有,逐个拒绝(我已经知道有几个人调皮了)
6、用户认证模块
交互性差,通常用在一些不让别人注册的网站。
步骤:
1、在根目录下创建要进行控制的目录
[root@Centos www]# mkdir buRangFangWen
2、在配置文件中加入控制
<Directory "/usr/local/Apache/www/buRangFangWen">
AuthType Basic #密码验证方式
AuthName "hehe lai wan ya" #提示信息
AuthBasicProvider file #账号密码从哪里来
AuthUserFIle "/usr/local/Apache/passwd" #账号密码的文件在哪里
Require user lgzhyan #允许访问的用户
</Directory>
3、创建密码验证文件,并且添加第一个新用户
htpasswd -c 密码文件名 第一个新用户
htpasswd -c /usr/local/Apache/passwd wangdefa
4、再次添加用户
htpasswd 密码文件名 用户名
[root@Centos www]# htpasswd /usr/local/Apache/passwd dalige
注意:
1、删除用户使用htpasswd -D 密码文件名 用户名
2、如果要修改用户密码,只能将该用户删除掉然后重新添加。
5、重新启动Apache服务器
注意:
1、如果不进行验证直接点击取消的话将会返回401状态码
2、这个里面的账号和系统中的账号没有一毛钱关系。
htpasswd
7、别名重定向
让apache以为在网站根目录下有某个目录。但是实际上访问的是其他目录
mod_alias模块:可以完成简单的别名重定向
可以使用Alias
语法:alias URL地址 真是的文件或目录路径
直接在
<IfModule alias_module>
Alias /haha /usr/local/Apache/houhou
</ifModule>
现在能够找到,但是不能访问,这个时候必须加上权限。
<Directory /usr/local/Apache/caoliu>
Options indexes 开启索引
Order deny,allow 是允许还是拒绝
Allow from all 允许所有的
Require all granted 允许所有的访问
</Directory>