Apache2.2学习笔记全集
一、基本介绍
待补充...
二、Apache默认配置文件解释
# 定义apache运行的目录,即程序所在的位置
ServerRoot "/usr/local/apache2"
# 定义Apache服务监听的端口
Listen 80
# 启动Apache时加载的模块
LoadModule php5_module modules/libphp5.so
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon
</IfModule>
</IfModule>
# 管理员邮箱的地址
ServerAdmin you@example.com
# Apache监督的ip/域名:端口号
ServerName 127.0.0.1:80
# html文件(即项目文件)存放的路径
DocumentRoot "/usr/local/apache2/htdocs"
# 对根目录的限制
<Directory />
# 禁止显示Apache目录列表
Options FollowSymLinks
# 禁止用户对目录配置文件(.htaccess)重载
AllowOverride None
# 配置allow和deny的顺序,默认只有最后一个关键字起作用
Order deny,allow
# 拒绝所有访问
Deny from all
</Directory>
<Directory "/usr/local/apache2/htdocs">
# 禁止显示htdoc下的文件列表,如果htdoc下面没有可以发达的文件,会显示静止访问根
Options FollowSymLinks
# 跟下没有index.html等页面,会显示跟下的文件名
#Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule dir_module>
# 首页文件 可以写多个
DirectoryIndex index.html index.php
</IfModule> #阻止.htaccess 和 .htpasswd等重要文件被web用户查看
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
# 错误日志的路径
ErrorLog "logs/error_log"
# 错误日志的级别
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
# 访问日志存放路径
CustomLog "logs/access_log" common
</IfModule>
# cgi的配置
#<IfModule alias_module>
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
#</IfModule>
#<IfModule cgid_module>
#</IfModule>
#<Directory "/usr/local/apache2/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>
DefaultType text/plain
# 允许传送时使用以下几种压缩方式
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
三、Apache三种工作模式
关键词:MPM (Multi-Processing Module)多进程处理模块
Linux下,使用/usr/local/apache2/bin/httpd -V查看当前Apache的工作模式,默认的工作模式是prefork
1.Prefork MPM 多进程
从字面意思看(pre),这是一种预派生的工作模式,在Apache启动的时候就生成几个进程然后等待连接,这样就可以减少频繁创建和销毁进程的开销,每一个进程下只有一个线程。
优点:适合于没有线程安全库,需要避免线程兼容性问题的系统
缺点:每一个进程相都会消耗大量资源,不擅长处理高并发的场景。
启动apache后,查看Apache进程,一个主进程派生了5个子进程。
init(1)─┬─auditd(1126)───{auditd}(1127)
├─crond(1383)
├─httpd(1439)─┬─httpd(1784)
│ ├─httpd(1785)
│ ├─httpd(1786)
│ ├─httpd(1787)
│ └─httpd(1788)
......
2.Worker MPM 多进程+多线程
进程与线程混合,Apache通过线程俩处理请求,每个子进程拥有固定数量的线程。服务器根据请求的数量调整进程的数量。
3.Event MPM 多进程+多线程+epoll(异步非阻塞)
Apache的keep-alive可以保持服务端与客户端的连接,如果客户端没有请求,线程就是挂在哪里等待,这就导致了线程的资源浪费。
在Event模式下,有一个专门的线程来管理keep-alive类型的线程。将请求传递给服务线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻塞。
Event MPM在遇到某些不兼容的模块时,会失效,将会回退到worker模式,一个工作线程处理一个请求。
mpm配置文件解释
文件路径:/usr/local/apache2/conf/extra/httpd-mpm.conf
<IfModule !mpm_netware_module>
PidFile "logs/httpd.pid"
</IfModule> <IfModule !mpm_winnt_module>
<IfModule !mpm_netware_module>
LockFile "logs/accept.lock"
</IfModule>
</IfModule> <IfModule mpm_prefork_module>
StartServers 5 # 服务器启动时建立的子进程的数量,默认是5
MinSpareServers 5 # 空闲子进程的最小数量,默认5;如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程
MaxSpareServers 10 空闲子进程的最大数量,默认10;如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程会杀死多余的子进程。
MaxClients 150 #同时处理客户端请求的数量
MaxRequestsPerChild 0 #每个子进程在其生命周期内允许最大的请求数量,如果请求总数已经达到这个数值,子进程将会结束,如果设置为0,子进程将永远不会结束。
</IfModule> <IfModule mpm_worker_module>
StartServers 2 # 服务器启动时建立的子进程数量,在workers模式下默认是2.
MaxClients 150 # 限定服务器同一时间内客户端最大接入的请求数量.
MinSpareThreads 25 # 空闲子进程的最小数量,默认25
MaxSpareThreads 75 # 空闲子进程的最大数量,默认75
ThreadsPerChild 25 # 每个子进程产生的线程数量,默认是25
MaxRequestsPerChild 0 # 每个子进程在其生命周期内允许最大的请求数量,如果请求总数已经达到这个数值,子进程将会结束,如果设置为0,子进程将永远不会结束,建议值:建议值:1分钟pv(访问量)/MaxClients。设置为非0的好处:1.可以防止程序中可能存在的内存泄漏无限进行下去,从而耗尽内存。2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
</IfModule> # BeOS 多媒体操作系统使用的模块
<IfModule mpm_beos_module>
StartThreads 10
MaxClients 50
MaxRequestsPerThread 10000
</IfModule> # Netware网络操作系统使用的模块
<IfModule mpm_netware_module>
ThreadStackSize 65536
StartThreads 250
MinSpareThreads 25
MaxSpareThreads 250
MaxThreads 1000
MaxRequestsPerChild 0
MaxMemFree 100
</IfModule> # OS/2操作系统使用的模块
<IfModule mpm_mpmt_os2_module>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0
</IfModule> # Windows操作系统使用的模块
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxRequestsPerChild 0
</IfModule>
关于MPM配置的建议值(来自百度)
#mpm_perfork模块
<IfModule mpm_prefork_module>
StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 5 #推荐设置:与StartServers保持一致
MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120
MaxClients 150 #推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000
(此外,还需额外设置ServerLimit参数,该参数最好与MaxClients的值保持一致。)
</IfModule> #mpm_worker模块
<IfModule mpm_worker_module>
StartServers 2 #推荐设置:小=默认 中=3~5 大=5~10
MaxClients 150 #推荐设置:小=500 中=500~1500 大型=1500~3000
MinSpareThreads 25 #推荐设置:小=默认 中=50~100 大=100~200
MaxSpareThreads 75 #推荐设置:小=默认 中=80~160 大=200~400 ThreadsPerChild 25 #推荐设置:小=默认 中=50~100 大型=100~200
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~50000(
此外,如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。)
</IfModule>
四、编译新的模块
apachepath/bin/apxs -c -i -a apache_source_path/modules/mappers/mod_name.c
选项说明:
-c 执行编译操作
-i 安装操作,安装一个或多个动态共享对象到服务器的modules目录
-a 自动增加一个LoadModule行到httpd.conf文件,以激活此模块,若此行存在则启用之
五、基于不同FQDN的虚拟主机的配置
[root@localhost apache2]# tail - conf/httpd.conf
Include conf/extra/httpd-default.conf
Include conf/extra/bbs.conf
Include conf/extra/wordpress.conf [root@localhost apache2]# cat conf/extra/bbs.conf
<VirtualHost *:>
ServerAdmin root@localhost
DocumentRoot "/usr/local/apache2/htdocs/bbs"
ServerName www.gaopengbbs.com
ServerAlias www.gaopengbbs.com
ErrorLog "logs/www.bbs.com-error_log"
CustomLog "logs/www.bbs.com-access_log" common
<Directory "/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost> [root@localhost apache2]# cat conf/extra/wordpress.conf
<VirtualHost *:>
ServerAdmin root@localhost
DocumentRoot "/usr/local/apache2/htdocs/wordpress"
ServerName www.gaopengwordpress.com
ServerAlias www.gaopengwordpress.com
ErrorLog "logs/www.wordpress.com-error_log"
CustomLog "logs/www.wordpress.com-access_log" common
<Directory "/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Apache2.2学习笔记全集的更多相关文章
- X-Cart 学习笔记(一)了解和安装X-Cart
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 一.了解 ...
- PHP 开发 APP 接口 学习笔记与总结 - Redis 缓存
Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/valu ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面 ...
- sqli-labs学习笔记 DAY1
DAY 1 准备工作 安装phpstudy 安装配置sqli-labs 学习笔记 SQL语句的注释:–, # +在URL经过编码后会编码为空格 SQL语句的查询语句:SELECT column_nam ...
- 我的Android进阶之旅------>Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- docker容器的学习笔记
目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...
- 数据库MySQL学习笔记高级篇
数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...
随机推荐
- vue 字符串长度控制显示的字数超出显示省略号
1. html <p class="index__Feature-list-itemlist-title newline"> {{item.name| ellipsis ...
- C#高级编程42章 MVC
42.1 ASP.NET MVC 路由机制 网络介绍链接 按照传统,在很多Web框架中(如经典的ASP.JSP.PHP.ASP.NET等之类的框架),URL代表的是磁盘上的物理文件.例如,当看到请求h ...
- centos 6.5 切换用户
root --> user,无需密码 su username user --> root,需要 root 密码 su root root 可省略
- Factory Methods
The static factory method pattern is a way to encapsulate object creation. Without a factory method, ...
- leetcode-167周赛-1293-网格中的最短路径
题目描述: 自己的提交:广度优先 O(mn*min(k,m+n)) class Solution: def shortestPath(self, grid, k: int) -> int: vi ...
- boost intrusive
1. the advantages of intrusive container (1) Intrusive containers don't allocate memory dynamically. ...
- Tomcat 中get请求中含有中文字符时乱码的处理
Tomcat 中get请求中含有中文字符时乱码的处理
- 4412 Linux设备总线
总线_设备_驱动注册流程详解 注册流程图 • 设备一般都需要先注册,才能注册驱动– 现在越来越多的热拔插设备,反过来了.先注册驱动,设备来了再注册 设备 • 本节使用的命令– 查看总线的命令#ls / ...
- Radical and array
Radical and array 时间限制: 1 Sec 内存限制: 128 MB提交: 46 解决: 27[提交][状态] 题目描述 Radical has an array , he wan ...
- buuctf | [强网杯 2019]随便注
1' and '0,1' and '1 : 单引号闭合 1' order by 3--+ : 猜字段 1' union select 1,database()# :开始注入,发现正则过滤 1' an ...