目标:
。学习Apache HTTP服务器的主要特性
。能够配置Apache中重要的参数
。学习每目录的配置
。学习如何在Apache中使用CGI
。认识关键的模块
。理解代理web服务器
Apache概述:
。进程控制:
。在需要时唤醒进程
。按需调整进程数量
。动态装载模块:
。在运行时间扩展而无需重新编译
。虚拟主机:
。多个web站点可以共享相同的web服务器
服务配置文件:HTTPD
。类型:SystemV管理的服务器
。包:httpd,httpd-devel,httpd-manual
。进程:/usr/sbin/httpd
。脚本:/etc/init.d/httpd
。端口:80(http),443(https)
。配置:/etc/httpd/*,/var/www/*
。与之相关的:system-config-httpd,mod_ssl
Apache配置
。主服务配置保存在in
/etc/httpd/conf/httpd.conf
。控制web服务的参数,常规虚拟主机和访问
。定义文件名和文件类型
。模块配置文件保存在/etc/httpd/conf.d/*
。DocumentRoot定义为/var/www/html/
/etc/httpd 是serverroot
Apache文件夹结构:
/etc/httpd/conf/httpd.conf //主配置文件,include也就是会包含*.conf文件
/etc/httpd/conf.d/*.conf //存放各式各样的.conf结尾,是主配置文件的扩充
Apache服务器配置
。最少和最大的备用服务器进程
。日志文件配置
。主机名查询
。模块
。虚拟主机
。用户和组
/etc/httpd/conf/httpd.conf //###三个#标记出全局配置
1.global(全局配置)
serverroot “/etc/httpd”
PidFile run/httpd.pid //pidfile当开启这个http服务的时候,就会生成/run/httpd.pid的程序,防止程序多次启动
Timeout 120 //如果120s没有响应会认为断线
KeepAlive off 饱和,服务器端和客户端是永久建立连接的关系。
MaxKeepAliveRequests 100 //服务器保存多少活跃的用户
KeepAliveTimeout 15 // 当一个客户端15s没和服务器交互的时候就把客户端踢出去
Listen 80 //默认端口80,可以修改。保存之后可以再vim界面重启
重启方法,进入命令行模式:!/etc/init.d/httpd restart即可进行重启
LoadModule装载的模块,可以添加#进行注释。每个模块就会消耗内存。
Include conf.d/*.conf //serverroot相对路径下的conf配置
User apache
Group apache
由于是apache用户,所以需要给/var/www设置成apache用户可以完全访问的权限
prefork和worker模式区别
prefork模式:有一个父进程,然后每个用户连接进来就会有一个进程提供服务,效率更高,消耗更大的内存。256个用户就需要256个进程提供服务。
worker模式:一个进程会产生很多线程,一个线程服务一个用户。多线程多进程。可能只需要启动两个进程就能满足256个用户,每个进程128
prefork模式调用的是编程的fork函数实现
worker模式使用c语言的new threading函数来实现。不安全。依赖于非常安全的处理器。
prefork怎么进行设置的:
默认redhat使用prefork模式。一开始的时候回预先启用一部分进程处于空闲状态。处于idle状态。
startservers 8 //启动的时候启用8个进程
MaxClients 256 //默认最大支持256个并发进程。当第257个用户访问的时候会提示请等待等
MaxRequestsPreChild 4000 //有一个主控进程调用程序的,当一个进程每提供4000用户访问后超过4000的时候
会更换一次进程。(终止老进程,开启新进程)
MinSpareServers 5 //最小备用进程。如果启动服务的时候,会开始8个进程。如果并发连接达到了4个的时候,这个时候每个一秒就会
开启一个新进程。留下5个空闲的备用进程,总是保留5个进程。不超过256个
MaxSpareServers 20 //最大备用进程。如同时有30个人连接进来,然后同时下线。仅停掉10个进程,预留20个空闲进程。
ServerLimit
Worker模式设置:
StartServers 2 //启用两个进程
MaxClients 150 //并发两个线程,基于cpu处理,没有4000轮换机制
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
通过httpd -h
#httpd -l //查看当前使用什么模式的
默认是prefork模式
修改为worker模式配置:
#vim /etc/sysconfig/httpd中
去掉#HTTPD=/usr/sbin/httpd.worker模式注释
重启服务就可以生效。
worker模式需要一个很好的cpu来处理
2.main(主服务配置)
ServerAdmin 管理员邮箱,网站故障给该邮箱发送信息。
ServerName //绑定域名操作。
DocumentRoot //访问网页的时候去哪个文件夹访问。存在相对路径和绝对路径的关系
如访问http://test.com/index.html 位于index.html前面的“/”就是指定的documentroot路径
Apache名称空间配置
。为用户页面指定一个目录:UserDir public_html
。MIME类型的配置:
AddType application/x-httpd-php.html
AddType text/html.htm
。定义目录夹首页文件:
DirectoryIndex index.html default.htm //讲究先后顺序,如果放多个*.html,会按照顺序查找
3.virtual(虚拟主机配置),与2二选一存在
Apache语法应用工具 .service httpd configtest .apachectl configtest .httpd -t .检查http.conf和ssl.conf
RPM包安装的:
#/etc/init.d/httpd
正常的/etc/init.d/httpd configtest //检查配置文件,会报文件语法错误之类的信息
源代码安装的访视会有apachectl -h查看
#apachectl -t //检查语法,类似于configtest
#httpd -h //查看httpd帮助
#httpd.worker -h //查看httpd.worker的用法
DocumentRoot网站根位置
配置存放在/var/www/html,所有路径都是基于该路径来访问
可以使用软连接访视配置。但是不建议。
可以在配置文件中操作:
<Directory "/var/www/html">
必须删除Options Indexes FollowSymLinks中的FollowSymLinks不跟踪软链接
那怎么解决访问其他路径的内容呢?
只需要给任何想控制的文件夹设置权限后以别名的形式作为一级文件夹就可以
复制<Directory "/var/www/html">修改这个里面的/var/www/html路径,然后定义别名,搜索Alias

将options Indexes修改为Opitons none //让访问网站目录不显示文件。
修改前内容:
修改后内容:
这样访问开放的目录之后如下图所示:
Apache访问的配置
。Apache提供目录和文件级别的基于主机的访问控制
。指定主机时可以包含点分制,网络/掩码,和点分主机名和域名
。通过“Order”语句提供控制的次序
在Main配置中找到
<Directory /var/www/html>
选项
Order allow,deny //默认从前往后读链表。但是缺省的以最后为主,这个配置就是deny;当修改为deny,allow的时候就会允许所有的ip访问。
Allow from all //all相当于0.0.0.0/0的网络,即都允许访问,all可以配置为ip地址,即允许特定ip查看。
</Directory>结尾
设置访问目录权限

参考如上设置,添加一个Directory来设置权限。让父目录没办法访问,子目录可以访问。
如果父目录禁止访问,没有配置子目录的话。子目录会继承父文件夹权限。
Apache名称空间配置
。为用户页面指定一个目录:
UserDir public_html
。MIME类型的配置
AddType application/x-httpd-php.phtml
AddType text/html.htm
。定义目录夹首页文件
DirectoryIndex index.html default.htm
如访问http://192.168.1.128/~student/ //如果需要访问student用户下的mysqpace文件,但是不访问student。需要进行如下操作
默认配置:

修改后:
使用vim编辑器替换开始是“#”为空格
继续修改public_html为myspace,如下图
还需要对myspace文件赋予http进程用户访问。如访问myspace,将该用户目录权限修改为711
之后就可以访问该用户下面的文件。
以上可以使用在特殊场景,如网络上购买的空间。
Limit限制文件访问