投稿说明 bitsCN.com > 编程/数据库 > PHP >
APACHE安装笔记
标签:Apache
摘要:
- WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;
- APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;
修改 HARD_SERVER_LIMIT:
vi /path/to/apache_src/src/include/httpd.h
#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”
apache编译:
/path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max --enable-module=most
- 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;
PHP安装:
/path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need
mod_resin安装:
/path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs
Mod_gzip安装:
/path/to/apache/bin/apxs -i -a -c mod_gzip.c
工具:cronolog安装:http://www.cronolog.org
- 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
按照以上的方法,系统管理员和应用管理员的职责可以清楚的分开,互相独立。
系统安装:系统管理员的职责就是安装系统=>安装好一台可以适应任何情况的APACHE,然后COLON,
应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
系统升级:系统管理员:升级系统/升级APACHE
应用升级:系统管理员:升级应用模块
具体的说明:
WEB应用的容量规划
APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式:
apache_max_process_with_good_perfermance <(total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5
为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统崩溃。此外,同样的服务:2G内存的机器的apache_max_process一般只设置到1G内存的1.7倍,因为APACHE本身会因为管理更多的进程而产生性能下降。
例子1:
一个apache + mod_php的服务器:一个apache进程一般需要4M内存
因此在一个1G内存的机器上:apache_max_process_with_good_perfermance <(1g / 4m) * 2 = 500
apache_max_process = 500 * 1.5 = 750
所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。
例子2:
一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存
在一个2G内存的机器上: apache_max_process_with_good_perfermance <(2g / 2m ) * 2 = 2000
因此:apache_max_process = 2000 * 1.5 = 3000
以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。
APACHE安装过程
服务器个数的硬上限HARD_SERVER_LIMIT的修改:
在FREEBSD和LINUX等UNIX操作系统下APACHE缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#elif defined(NETWARE)
#define HARD_SERVER_LIMIT 2048
#else
#define HARD_SERVER_LIMIT 2560 <===将原来的HARD_SERVER_LIMIT 256 后面加个“0”
#endif
#endif
解释:
APACHE缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且APACHE的软上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高APACHE的HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(APACHE的软上限的规划请看后面)。
APACHE的编译:通用的编译选项能使安装过程标准化
./configure --prefix=/another_driver/apache/ --shared-module=max --enable-module=most
解释:
--prefix=/another_driver/apache/: 一个系统使用寿命最低的一般就是硬盘,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,备份和恢复。
--shared-module=max:使用动态加载方式会带来5%的性能下降,但和带来的好处相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化
--enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在apache的缺省常用模块中
如果不想build so, 也可以这样:
./configure
"--with-layout=Apache"
"--prefix=/path/to/apache"
"--disable-module=access"
"--disable-module=actions"
"--disable-module=autoindex"
"--disable-module=env"
"--disable-module=imap"
"--disable-module=negotiation"
"--disable-module=setenvif"
"--disable-module=status"
"--disable-module=userdir"
"--disable-module=cgi"
"--disable-module=include"
"--disable-module=auth"
"--disable-module=asis"
但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是APACHE本身升级都必须把所有SOURCE加在一起重新编译。
apache的缺省配置文件一般比较大:我们可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。
grep -v "#" httpd.conf.default >httpd.conf
需要修改的通用项目有以下几个:
#服务端口,缺省是8080,建议将整个APACHE配置调整好后再将服务端口改到正式服务的端口
Port 8080 => 80
#服务器名:缺省没有
ServerName name.example.com
#最大服务进程数:根据服务容量预测设置
MaxClients 256 => 800
#缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以
StartServers 5 => 200
不要修改:
以前有建议说修改:
MinSpareServers 5 => 100
MaxSpareServers 10 => 200
但从我的经验看来:缺省值已经是非常优化的了,而且让APACHE自己调整进程个数还是比较好的。
特别修改:
在solaris或一些比较容易出现内存泄露的应用上:
MaxRequestsPerChild 0 =>3000
应用模块和工具的安装配置:
由于使用动态加载的模式,所以可以方便的通过调整配置来定制APACHE:不常用模块全部清除
一般说来,可以不需要的模块包括:
#LoadModule env_module libexec/mod_env.so
#LoadModule negotiation_module libexec/mod_negotiation.so
#LoadModule status_module libexec/mod_status.so
#server side include已经过时了
#LoadModule includes_module libexec/mod_include.so
#不需要将没有缺省index文件的目录下所有文件列出
#LoadModule autoindex_module libexec/mod_autoindex.so
#尽量不使用CGI:一直是APACHE安全问题最多的地方
#LoadModule cgi_module libexec/mod_cgi.so
#LoadModule asis_module libexec/mod_asis.so
#LoadModule imap_module libexec/mod_imap.so
#LoadModule action_module libexec/mod_actions.so
#不使用安全校验可以大大提高访问速度
#LoadModule access_module libexec/mod_access.so
#LoadModule auth_module libexec/mod_auth.so
#LoadModule setenvif_module libexec/mod_setenvif.so
最好保留的有:
#用于定制log格式
LoadModule config_log_module libexec/mod_log_config.so
#用于增加文件应用的关联
LoadModule mime_module libexec/mod_mime.so
#用于缺省index文件:index.php等
LoadModule dir_module libexec/mod_dir.so
可用可不用的有:
#比如:需要在~/username/下调试php可以将
LoadModule userdir_module libexec/mod_userdir.so
#比如:需要将以前的URL进行转向或者需要使用CGI script-alias
LoadModule alias_module libexec/mod_alias.so
常用的模块:
最常用的可能就是php和JAVA WEB应用的wrapper,此外,从性能上讲:mod_gzip可以减少40%左右的流量,从而减少机器用于传输的负载,而mod_expires可以减少10%左右的重复请求,让重复的用户请求CACHE在本地,根本不向服务器发出请求。
PHP的安装:
/path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need
需要修改的配置:
AddType application/x-httpd-php .php .php3 .any_file_in_php
resin的安装设置:
/path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs
一般将具体的resin设置放在另外一个文件中:
CauchoConfigFile /path/to/apache/conf/resin.conf
mod_expires的安装配置:
ExpiresActive on
#所有的.gif文件1个月以后过期
ExpiresByType image/gif "access plus 1 month"
#所有的文件缺省1天以后过期
ExpiresDefault "now plus 1 day"
mod_gzip的安装:
/path/to/apache/bin/apxs -i -a -c mod_gzip.c
mod_gzip和PHP在一起的配置
mod_gzip_on Yes
mod_gzip_minimum_file_size 1000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file .htm$
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .php3$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
#不要让mod_gzip和php的session使用同一个临时目录:php_session需要通过php.ini设置session.save_path = /tmp/php_sess
mod_gzip_temp_dir /tmp/mod_gzip
mod_gzip_dechunk Yes
mod_gzip_keep_workfiles No
mod_gzip和mod_php的配合:不要让mod_gzip和mod_php使用同一个临时目录;
mod_gzip和RESIN配合:要让mod_gzip在mod_caucho后LOAD,否则mod_gzip不起作用
...othr modules
AddModule mod_so.c
AddModule mod_caucho.c
#notice: mod_gzip must load after mod_caucho
AddModule mod_gzip.c
AddModule mod_expires.c
...
mod_gzip_on Yes
mod_gzip_dechunk yes
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 3000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file .html$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
mod_gzip_item_include handler 'caucho-request'
日志轮循工具cronolog的安装和设置:cronolog可以非常整齐的将日志按天轮循存储
缺省编译安装到/usr/local/bin/下,只需要将配置改成:
CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/%w/access_log" combined
日志将按天截断并存放在以weekday为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日
升级维护:
由于使用标准化的DSO模式安装APACHE,APACHE的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在
CONFIGURATIONS..
里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:
#AddModule mod_gzip.c
就屏蔽了mod_gzip,其他模块不首任何影响。
安装和维护过程:
- 系统安装:系统管理员的职责就是安装系统和一个可以适应任何情况的APACHE,然后COLON。
- 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
- 系统升级:系统管理员:升级系统/升级APACHE
- 应用升级:应用管理员:升级应用模块
- 系统备份/恢复:如果APACHE不在缺省的系统盘上,只需要将APACHE目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,直接将APACHE所在物理盘恢复就行了。
系统管理员:APACHE的最简化安装
OS + APACHE(httpd core only)
应用管理员:应用模块定制
+so
+php
+so
+caucho
+ssl
适用应用:
纯静态页面服务:
image.example.com
www.example.com
bbs.example.com
mall.example.com
参考文档:
Apache
http://httpd.apache.org/
mod_gzip
http://www.remotecommunications.com/apache/mod_gzip/
Cronolog
http://www.cronolog.org/
mod_expires
http://httpd.apache.org/docs/mod/mod_expires.html
推荐阅读
-
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ...
[详细]
-
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
-
本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ...
[详细]
-
本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ...
[详细]
-
在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ...
[详细]
-
本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ...
[详细]
-
本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ...
[详细]
-
网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ...
[详细]
-
本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ...
[详细]
-
2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ...
[详细]
-
本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ...
[详细]
-
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
-
本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ...
[详细]
-
Tags | 热门标签
RankList | 热门文章
-
1统计学有多无聊?谷歌统计学家带你证明
-
2VLAN 与三层交换
-
3JAVA注解的使用
-
4de.tudarmstadt.ukp.clarin.webanno.model.SourceDocument.getState()方法的使用及代码示例
-
5对象接口
-
630岁大龄程序员被公司HR嫌弃,随时有被清退的可能...
-
7418. 屏幕可显示句子的数量
-
8《赠魏国宪穆公主挽歌词二首》翻译 原文赏析诗人唐权德舆
-
9使用STM32CubeMX生成Keil工程并完成流水灯
-
10MySQL的启动选项和系统变量的用法
-
11Postfix 故障解决一例
-
12JavaScript数组及其常用方法(push、pop、shift···)
-
13ppt测试什么软件,PDF转PPT软件哪个好测试
-
14jquery的lt选择器里的一些坑
-
15C# List用法 List介绍
- WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式;
- APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;
修改 HARD_SERVER_LIMIT:
vi /path/to/apache_src/src/include/httpd.h
#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”
apache编译:
/path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max --enable-module=most - 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;
PHP安装:
/path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need
mod_resin安装:
/path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs
Mod_gzip安装:
/path/to/apache/bin/apxs -i -a -c mod_gzip.c
工具:cronolog安装:http://www.cronolog.org - 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
按照以上的方法,系统管理员和应用管理员的职责可以清楚的分开,互相独立。
系统安装:系统管理员的职责就是安装系统=>安装好一台可以适应任何情况的APACHE,然后COLON,
应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
系统升级:系统管理员:升级系统/升级APACHE
应用升级:系统管理员:升级应用模块
具体的说明:
WEB应用的容量规划
APACHE主要是一个内存消耗型的服务应用,我个人总结的经验公式:
apache_max_process_with_good_perfermance <(total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5
为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统崩溃。此外,同样的服务:2G内存的机器的apache_max_process一般只设置到1G内存的1.7倍,因为APACHE本身会因为管理更多的进程而产生性能下降。
例子1:
一个apache + mod_php的服务器:一个apache进程一般需要4M内存
因此在一个1G内存的机器上:apache_max_process_with_good_perfermance <(1g / 4m) * 2 = 500
apache_max_process = 500 * 1.5 = 750
所以规划你的应用让服务尽量跑在500个APACHE以下,并设置APACHE的软上限在800个。
例子2:
一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存
在一个2G内存的机器上: apache_max_process_with_good_perfermance <(2g / 2m ) * 2 = 2000
因此:apache_max_process = 2000 * 1.5 = 3000
以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。
APACHE安装过程
服务器个数的硬上限HARD_SERVER_LIMIT的修改:
在FREEBSD和LINUX等UNIX操作系统下APACHE缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#elif defined(NETWARE)
#define HARD_SERVER_LIMIT 2048
#else
#define HARD_SERVER_LIMIT 2560 <===将原来的HARD_SERVER_LIMIT 256 后面加个“0”
#endif
#endif
解释:
APACHE缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且APACHE的软上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高APACHE的HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(APACHE的软上限的规划请看后面)。
APACHE的编译:通用的编译选项能使安装过程标准化
./configure --prefix=/another_driver/apache/ --shared-module=max --enable-module=most
解释:
--prefix=/another_driver/apache/: 一个系统使用寿命最低的一般就是硬盘,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,备份和恢复。
--shared-module=max:使用动态加载方式会带来5%的性能下降,但和带来的好处相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化
--enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在apache的缺省常用模块中
如果不想build so, 也可以这样:
./configure
"--with-layout=Apache"
"--prefix=/path/to/apache"
"--disable-module=access"
"--disable-module=actions"
"--disable-module=autoindex"
"--disable-module=env"
"--disable-module=imap"
"--disable-module=negotiation"
"--disable-module=setenvif"
"--disable-module=status"
"--disable-module=userdir"
"--disable-module=cgi"
"--disable-module=include"
"--disable-module=auth"
"--disable-module=asis"
但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是APACHE本身升级都必须把所有SOURCE加在一起重新编译。
apache的缺省配置文件一般比较大:我们可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。
grep -v "#" httpd.conf.default >httpd.conf
需要修改的通用项目有以下几个:
#服务端口,缺省是8080,建议将整个APACHE配置调整好后再将服务端口改到正式服务的端口
Port 8080 => 80
#服务器名:缺省没有
ServerName name.example.com
#最大服务进程数:根据服务容量预测设置
MaxClients 256 => 800
#缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以
StartServers 5 => 200
不要修改:
以前有建议说修改:
MinSpareServers 5 => 100
MaxSpareServers 10 => 200
但从我的经验看来:缺省值已经是非常优化的了,而且让APACHE自己调整进程个数还是比较好的。
特别修改:
在solaris或一些比较容易出现内存泄露的应用上:
MaxRequestsPerChild 0 =>3000
应用模块和工具的安装配置:
由于使用动态加载的模式,所以可以方便的通过调整配置来定制APACHE:不常用模块全部清除
一般说来,可以不需要的模块包括:
#LoadModule env_module libexec/mod_env.so
#LoadModule negotiation_module libexec/mod_negotiation.so
#LoadModule status_module libexec/mod_status.so
#server side include已经过时了
#LoadModule includes_module libexec/mod_include.so
#不需要将没有缺省index文件的目录下所有文件列出
#LoadModule autoindex_module libexec/mod_autoindex.so
#尽量不使用CGI:一直是APACHE安全问题最多的地方
#LoadModule cgi_module libexec/mod_cgi.so
#LoadModule asis_module libexec/mod_asis.so
#LoadModule imap_module libexec/mod_imap.so
#LoadModule action_module libexec/mod_actions.so
#不使用安全校验可以大大提高访问速度
#LoadModule access_module libexec/mod_access.so
#LoadModule auth_module libexec/mod_auth.so
#LoadModule setenvif_module libexec/mod_setenvif.so
最好保留的有:
#用于定制log格式
LoadModule config_log_module libexec/mod_log_config.so
#用于增加文件应用的关联
LoadModule mime_module libexec/mod_mime.so
#用于缺省index文件:index.php等
LoadModule dir_module libexec/mod_dir.so
可用可不用的有:
#比如:需要在~/username/下调试php可以将
LoadModule userdir_module libexec/mod_userdir.so
#比如:需要将以前的URL进行转向或者需要使用CGI script-alias
LoadModule alias_module libexec/mod_alias.so
常用的模块:
最常用的可能就是php和JAVA WEB应用的wrapper,此外,从性能上讲:mod_gzip可以减少40%左右的流量,从而减少机器用于传输的负载,而mod_expires可以减少10%左右的重复请求,让重复的用户请求CACHE在本地,根本不向服务器发出请求。
PHP的安装:
/path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need
需要修改的配置:
AddType application/x-httpd-php .php .php3 .any_file_in_php
resin的安装设置:
/path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs
一般将具体的resin设置放在另外一个文件中:
CauchoConfigFile /path/to/apache/conf/resin.conf
mod_expires的安装配置:
ExpiresActive on
#所有的.gif文件1个月以后过期
ExpiresByType image/gif "access plus 1 month"
#所有的文件缺省1天以后过期
ExpiresDefault "now plus 1 day"
mod_gzip的安装:
/path/to/apache/bin/apxs -i -a -c mod_gzip.c
mod_gzip和PHP在一起的配置
mod_gzip_on Yes
mod_gzip_minimum_file_size 1000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file .htm$
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .php3$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
#不要让mod_gzip和php的session使用同一个临时目录:php_session需要通过php.ini设置session.save_path = /tmp/php_sess
mod_gzip_temp_dir /tmp/mod_gzip
mod_gzip_dechunk Yes
mod_gzip_keep_workfiles No
mod_gzip和mod_php的配合:不要让mod_gzip和mod_php使用同一个临时目录;
mod_gzip和RESIN配合:要让mod_gzip在mod_caucho后LOAD,否则mod_gzip不起作用
...othr modules
AddModule mod_so.c
AddModule mod_caucho.c
#notice: mod_gzip must load after mod_caucho
AddModule mod_gzip.c
AddModule mod_expires.c
...
mod_gzip_on Yes
mod_gzip_dechunk yes
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 3000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file .html$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
mod_gzip_item_include handler 'caucho-request'
日志轮循工具cronolog的安装和设置:cronolog可以非常整齐的将日志按天轮循存储
缺省编译安装到/usr/local/bin/下,只需要将配置改成:
CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/%w/access_log" combined
日志将按天截断并存放在以weekday为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日
升级维护:
由于使用标准化的DSO模式安装APACHE,APACHE的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在
CONFIGURATIONS..
里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:
#AddModule mod_gzip.c
就屏蔽了mod_gzip,其他模块不首任何影响。
安装和维护过程:
- 系统安装:系统管理员的职责就是安装系统和一个可以适应任何情况的APACHE,然后COLON。
- 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
- 系统升级:系统管理员:升级系统/升级APACHE
- 应用升级:应用管理员:升级应用模块
- 系统备份/恢复:如果APACHE不在缺省的系统盘上,只需要将APACHE目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,直接将APACHE所在物理盘恢复就行了。
系统管理员:APACHE的最简化安装 | OS + APACHE(httpd core only) | ||
应用管理员:应用模块定制 | +so +php |
+so +caucho +ssl | |
适用应用: | 纯静态页面服务: image.example.com www.example.com |
bbs.example.com | mall.example.com |
参考文档:
Apache
http://httpd.apache.org/
mod_gzip
http://www.remotecommunications.com/apache/mod_gzip/
Cronolog
http://www.cronolog.org/
mod_expires
http://httpd.apache.org/docs/mod/mod_expires.html
-
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]Tags | 热门标签RankList | 热门文章
- 1统计学有多无聊?谷歌统计学家带你证明
- 2VLAN 与三层交换
- 3JAVA注解的使用
- 4de.tudarmstadt.ukp.clarin.webanno.model.SourceDocument.getState()方法的使用及代码示例
- 5对象接口
- 630岁大龄程序员被公司HR嫌弃,随时有被清退的可能...
- 7418. 屏幕可显示句子的数量
- 8《赠魏国宪穆公主挽歌词二首》翻译 原文赏析诗人唐权德舆
- 9使用STM32CubeMX生成Keil工程并完成流水灯
- 10MySQL的启动选项和系统变量的用法
- 11Postfix 故障解决一例
- 12JavaScript数组及其常用方法(push、pop、shift···)
- 13ppt测试什么软件,PDF转PPT软件哪个好测试
- 14jquery的lt选择器里的一些坑
- 15C# List用法 List介绍