一、Apache Web服务器入门简介
Apache HTTP Server是一个多模块化的服务器,经过多次修改,成为目前世界使用排名第一的Web服务器软件。可以运行在几乎所有广泛使用的计算机平台上。
Apache服务器的特点是使用简单,速度快,性能稳定,可以作为负载均衡及代理服务器来使用
1.Prefork MPM 工作原理
Apache Web服务器又三种处理模块:Prefork MPM、Worker MPM、Event MPM。
使用多个进程,每个进程只有一个线程,每个进程在某个确定的时间只能维持一个连接,优点是稳定,但内存开销较高
2.Worker MPM 工作原理
使用多个进程,每个进程包含多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合大并发,高流量的Web服务器。
Worker MPM缺点是一个线程崩溃,整个进程就会连同其任何线程一起挂掉
3.Apache Web服务器安装
从Apache官方站点下载目前稳定版本httpd-2.2.24版本
http://archive.apache.org/dist/httpd/httpd-2.2.24.tar.bz2
4.Apache Web服务器安装步骤详解
#解压源码包
[root@huyouba1 ~]# tar xvf httpd-2.2.24.tar.bz2
#进入解压目录
[root@huyouba1 ~]# cd httpd-2.2.24/
#安装apr相关移植库模块
[root@huyouba1 httpd-2.2.24]# yum -y install apr apr-devel apr-util apr-util-devel
#预编译Apache,启用rewrite规则、启用动态加载库
[root@huyouba1 httpd-2.2.24]# ./configure --prefix=/usr/local/apache/ --enable-rewrite --enable-so
#编译
[root@huyouba1 httpd-2.2.24]# make
#安装
[root@huyouba1 httpd-2.2.24]# make install
Apache2.2.24安装完毕
修改apache监听IP,启动Apache服务,关闭selinux、firewalld防火墙
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
41 Listen 192.168.100.100:80
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl start
[root@huyouba1 ~]# setenforce 0
[root@huyouba1 ~]# systemctl stop firewalld
查看Apache服务进程,通过客户端浏览器访问http://192.168.100.100/
5.Apache虚拟主机企业应用
企业真实环境中,一台Web服务器发布单个网站非常浪费资源,所以一台Web服务器上会发布多个网站,少则3~5个,多则2~30个网站。在一台服务器上发布多网站,也称之为部署多个虚拟主机,Web虚拟主机配置方法有以下三种
- 基于单IP多个端口
- 基于多IP地址一个端口
- 基于单IP一个端口不同域名
其中基于同一端口不同域名的方式在企业中得到广泛应用,以下为基于一个端口不同域名,在一台Apache Web服务器上部署多个网站
(1)创建虚拟主机配置文件httpd-vhosts.conf,该文件默认已存在,需去掉httpd.conf配置文件中的#号即可
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
396 Include conf/extra/httpd-vhosts.conf
(2)修改配置文件/usr/local/apache/conf/extra/httpd-vhosts.conf中代码
[root@huyouba1 ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@huyouba11.xyz
DocumentRoot "/usr/local/apache/htdocs/huyouba11"
ServerName www.huyouba11.xyz
ServerAlias www.huyouba11.xyz
ErrorLog "logs/huyouba11.xyz-error_log"
CustomLog "logs/huyouba11.xyz-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@huyouba12.xyz
DocumentRoot "/usr/local/apache/htdocs/huyouba12"
ServerName www.huyouba12.xyz
ServerAlias www.huyouba12.xyz
ErrorLog "logs/huyouba12.xyz-error_log"
CustomLog "logs/huyouba12.xyz-access_log" common
</VirtualHost>
http-vhosts.conf参数详解
- NameVirtualHost *:80:开启虚拟主机,并且监听本地所有网卡接口的80端口
- <VirtualHost *:80>:虚拟主机配置起始
- ServerAdmin support@linuxli.com:管理员邮箱
- DocumentRoot “/usr/local/apache2/htdocs/linuxli1”:虚拟主机发布目录
- ServerName www.linuxli1.com:虚拟主机完整域名
- ErrorLog “logs/www.linuxli1.com-error_log”:错误日志路径及文件名
- CustomLog “logs/www.linuxli1.com-access_log” common:访问日志路径及文件名
- </VirtualHost>:虚拟主机配置结束
(3)创建www.huyouba11.xyz及www.huyouba12.xyz发布目录,重启Apache服务,并分别创建index.html页面
[root@huyouba1 ~]# mkdir -p /usr/local/apache/htdocs/{huyouba11,huyouba12}/
[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart
[root@huyouba1 ~]# echo "<h1>www.huyouba11.xyz Pages</h1>"`>/usr/local/apache/htdocs/huyouba11/index.html
[root@huyouba1 ~]# echo "<h1>www.huyouba12.xyz Pages</h1>"`>/usr/local/apache/htdocs/huyouba12/index.html
(4)windows 客户端设置hosts映射,将www.huyouba11.xyz、www.huyouba12.xyz与192.168.100.100 IP进行映射绑定,绑定方法是在“C:\Windows\System32\drivers\etc”文件夹中,使用记事本编辑hosts文件,加入以下代码
192.168.100.100 www.huyouba11.xyz
192.168.100.100 www.huyouba12.xyz
(5)浏览器访问www.huyouba11.xyz,www.huyouba12.xyz
至此Apache基于多域名虚拟主机配置完毕,如果还需添加虚拟主机,直接复制其中一个虚拟主机配置、修改Web发布目录即可
6.Apache常用目录学习
apache可以基于源码安装,YUM安装,不同的安装方法,所属的路径不同,以下为Apache常用路径的功能用途
- /usr/lib64/httpd/modules:Apache模块存放位置
- /var/www/html/:YUM安装Apache网站发布目录
- /var/www/error/:服务器设置错误信息,浏览器显示
- /var/www/icons/:Apache小图标文件存放目录
- /var/www/cgi-bin/:可执行的CGI程序存放目录
- /var/log/httpd/:Apache日志目录
- /usr/sbin/apachectl:Apache启动脚本
- /usr/sbin/httpd:Apache二进制执行文件
- /usr/bin/htpasswd:设置Apache目录密码访问
- /usr/local/apache/bin/:Apahce命令目录
- /usr/local/apahce/build/:Apahce构建编译目录
- /usr/local/apache/htdocs/:源码安装Apache网站发布目录
- /usr/local/apache/cgi-bin/:可执行的CGI程序存放目录
- /usr/local/apache/include:Apahce 引用配置文件目录
- /usr/local/apache/logs/:Apache日志目录
- /usr/local/apache/man:Apacheb帮助文档目录
- /usr/local/apache/manual:Apache手册
- /usr/local/apache/modules:Apache模块路径
7.Apache配置文件详解
Apache的配置文件是/usr/local/apache/conf/httpd.conf
- ServerTokens OS:显示服务器的版本和操作系统内核版本
- ServerRoot “/usr/local/apache2/”:Apache主配置目录
- PidFile run /http.pid:PidFile进程文件
- Timeout 60:不论接收或发送,当持续连接等待超过 60秒则该次连接就中断
- KeepAlive Off:关闭持续性的连接
- MaxKeepAliveRequests 100:当KeepAlive设置为On的时候,该数值可以决定此次连接能够传输的最大传输数量
- KeepAliveTimeout 65:当KeepAlive设置为On的时候,该连接在最后一次传输后等待延迟的秒数
- < IfModule prefork.c >:PreforkMPM引擎配置段
- StartServer 8:默认启动Apache工作进程数
- MinSpareServers 5:最小空闲进程数
- MaxSpareServers 20:最大空闲进程数
- ServerLimit 4096:Apache服务器最多进程数
- MaxClients 4096:每秒支持的最大客户端并发
- MaxRequestsPerChild 4000:每个进程能处理的最大请求数
- </IfModule>:定义模块,模块标签
- < IfModule worker.c > :Worker MPM引擎配置段.
- StartServer 8:默认启动Apache工作进程数
- MaxClients 4000:每秒支持的最大客户端并发
- MinSpareThreads 25:最小空闲线程数
- MaxSpareThreads 75:最大空闲线程数
- ThreadsPerChild 75:每个进程启动的线程数
- MaxRequestsPerChild 0:每个进程能处理的最大请求数,0表示无限制。
- </IfModule>:定义模块,模块标签
- LoadModule mod_version.so:静态加载Apache相关模块
- ServerAdmin support@linuxli.com:管理员邮箱,网站异常,错误信息会发送至该邮箱
- DocumentRoot “/usr/local/apache2//htdocs”Apache网站默认发布目录
- <Directory “/data/webapps/www1”>:设置/data/webapps/www1目录权限
- AllowOverride All:加载发布目录中的.htaccess文件
- Options-Indexes FollowSymLinks:禁止发布目录以目录方式被浏览
- Order allow,deny:访问顺序,先检查允许设置,没有允许的设置则全部拒绝
- Allow from all:允许所有客户端访问
- </Directory>:定义目录,目录标签
- AllowOverride:设置为None时,目录中.htaccess文件被完全忽略,当指令设置为All时,.htaccess文件生效
- Options-Indexes FollowSymLinks:禁止浏览目录,去掉“-”,表示浏览目录,常用于下载站点
- Order allow,deny:默认情况下禁止所有客户机访问
- Order deny,allow:默认情况下允许所有客户机访问
- Allow from all:允许所有客户机访问