Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

转贴:Apache学习日记

[复制链接]
c++builder 发表于 2006-7-22 08:26:53 | 显示全部楼层 |阅读模式
Apache学习日记

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/apache_install.html

关键词: apache install php resin mod_gzip mod_expire webalizer cronolog

内容摘要:

Apache是一个历史悠久并且功能十分强大的WEB服务器,但其丰富的功能对于一个新手来说往往不知道从何下手。我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过程可以从简单的静态html服务开始,一个模块一个模块的学习使用。从单纯的HTML静态服务(core),到复杂的动态页面服务(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。


本文主要从简化安装==>性能调优==>维护方便的角度,介绍了WEB服务的规划、HTTPD安装/应用模块配置、升级/维护等过程。让Apache和PHP,Resin等应用模块的独立升级,完全互不影响。

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编译:
./configure --prefix=/home/apache --enable-shared=max --enable-module=most
可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;
mod_php安装:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql
mod_resin安装:./configure --with-apxs=/home/apache/bin/apxs
mod_gzip安装:修改Makefile中的 apxs路径:然后make make install
工具:日志轮循工具cronolog安装:http://www.cronolog.org
升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。
系统安装:系统管理员的职责就是安装好一台DSO模式的Apache,然后COLON即可,
应用安装:由应用管理员负责具体应用所需要的模块,比如PHP Resin等,并设置httpd.conf中相关的配置。
系统升级:系统管理员:升级操作系统/升级Apache
应用升级:应用管理员:升级应用模块,PHP Resin等。
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的软上限在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的修改:
在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/ --enable-shared=max --enable-module=most
比如:
./configure --prefix=/home/apache/ --enable-shared=max --enable-module=most


解释:
--prefix=/another_driver/apache/:建议将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本身升级都必须把Apache和PHP的SOURCE加在一起重新编译。

apache的缺省配置文件一般比较大:可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。
grep -v "#" httpd.conf.default >httpd.conf

需要修改的通用项目有以下几个:

QUOTE:
#服务端口,缺省是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定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。
比如:对于静态页面服务器:就什么其他子模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把Resin模块加载上。而且各种模块的插拔非常简单,这样调试过程中就可以简单的通过注释掉不需要的模块,而不用重新编译。

一般说来,可以不需要的模块包括:

QUOTE:
#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应用服务器的前端,此外,从性能上讲利用mod_gzip可以减少40%左右的流量,减少机器用于传输的负载,而 mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。

建议将所有MODULE的配置都放到相应模块的配置内部:<IfModule some_module.c>some_module config </IfModule>

PHP的安装:

QUOTE:
/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设置放在另外一个文件中:比如/home/resin/conf/resin.conf
<IfModule mod_caucho.c>
CauchoConfigFile /path/to/apache/conf/resin.conf
</IfModule>

mod_expires的安装配置:
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType text/css "now plus 1 month"
    ExpiresDefault "now plus 1 day"
</IfModule>

注释:
所有的.gif文件1个月以后过期
所有的文件缺省1天以后过期


mod_gzip的安装
http://www.chedong.com/tech/compress.html


日志的轮循:cronolog的安装和设置

cronolog可以非常整齐的将日志按天轮循存储
缺省编译安装到/usr/local/bin/下,只需要将配置改成:

CustomLog "|/usr/local/sbin/cronolog /home/apache/logs/%w/access_log" combined


日志将按天截断并存放在以星期为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日

用gzip压缩每天的日志:
30 4 * * * /usr/bin/gzip -f /home/apache/logs/`date -d yesterday +%w`/access_log

日志的定期删除:
30 5 * * */usr/bin/find /home/apache/logs/ -name access_log.gz -mtime +3 |xargs -r /bin/rm -f

升级维护:

QUOTE:
由于使用动态模块加载方式(DSO模式)安装Apache,Apache的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在
<IfModule mod_name>
CONFIGURATIONS..
</IfModule>
里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:
#AddModule mod_gzip.c
就屏蔽了mod_gzip,而其他模块不首任何影响。
安装和维护过程:

系统安装:系统管理员的职责就是安装系统和一个按照DSO模式安装的Apache,然后COLON。
应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。
系统升级:系统管理员:升级系统/升级Apache
应用升级:应用管理员:升级应用模块:PHP CAUCHO等
系统备份/恢复:如果Apache不在缺省的系统盘上,只需要将Apache目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,再直接将Apache所在物理盘恢复就行了。
系统管理员:Apache的最简化安装 OS + Apache (httpd core only)
应用管理员:应用模块定制 纯静态页面服务
core
PHP动态页面
core+so
+php
JAVA应用
core+so
+caucho
+ssl
应用例子: www.example.com
image.example.com
bbs.example.com mall.example.com




例子:Apache和PHP模块的独立升级。

如果Apache是按照以下方式安装:
./configure --prefix=/home/apache --enable-shared=max --enable-module=most
PHP是按照以下方式安装:
./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql

以后单独升级Apache的时候,仍然是:
./configure --prefix=/home/apache --enable-shared=max --enable-module=most
make
su
#/home/apache/bin/apachectl stop
#make install

单独升级php时,仍然是:
./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql
make
su
#/home/apache/bin/apachectl stop
#make install
#/home/apache/bin/apachectl start


基于反相代理的WEB加速:
squid和mod_proxy都可以实现反相代理加速。而基于缓存的代理加速比起原有WEB服务,速度会有数量级的提升。



小提示:

Apache安装后,缺省根目录下没有但很有用的2个文件:

favicon.ico: favicon.ico是一个16x16的站点图标文件,如果浏览器发现有这个文件,在地址栏中会用这个图标替换调浏览器的网页图标。IE6和 MOZILLA等主流浏览器都支持这个功能。
例如: http://www.chedong.com/favicon.ico

robots.txt: 用于告诉搜索引擎的爬虫程序(spider)网站那些页面可以被索引,那些不可以。
具体说明请参考:http://www.robotstxt.org/wc/robots.html
参考文档:

Apache项目
http://httpd.apache.org

PHP
http://www.php.net

Resin
http://www.caucho.com

mod_gzip
http://sourceforge.net/projects/mod-gzip/

Cronolog
http://www.cronolog.org

mod_expires
http://httpd.apache.org/docs/mod/mod_expires.html


面向搜索引擎的CMS设计:
http://www.chedong.com/tech/cms.html

QUOTE:
http://www.chedong.com/tech/apache_install.html





[ 本帖最后由 c++builder 于 2006-7-22 08:29 编辑 ]
 楼主| c++builder 发表于 2006-7-22 08:27:36 | 显示全部楼层
本文简要介绍了几个优化 Apache 的技巧,在实战中十分有用。




  • 升级 Apache 到最新版本,新版本往往包含性能提升和安全更新。
  • 在 httpd.conf 中设置 "HostNameLookups off" 能避免针对每个访问者的 DNS 域名的反向查询。
  • 对于繁忙的网站,在 httpd.conf 中设置 "MaxClients 230" 或者更高。这项设置让更多的 httpd 进程同时响应请求,并避免了处理器排队的情况发生。
  • 采用另外一台服务器处理图片文件。
  • 确保您的 Web 页面和 CGI 页面采用了浏览器缓冲技术。具体的文章可以参考本站:采用 mod_gzip 加速 Zope 和 Apache
  • 保持您的 Apache 苗条,编译那些仅仅需要的模块,在编译之前,修改 src/Configuration 文件,在那些不需要的模块之前用 # 号注释掉。
  • 如果不需要流量日志,那么把 httpd.conf 中的 TransferLog 指向到 /dev/null/
  • 除非你确定使用 .htaccess 文件来控制一些目录的权限,否则设置 "AllowOverride None" ,这样就免去 Apache 在每个目录搜索 .htaccess 文件的劳役之苦。
  • 不要让不需要的后台进程运行。
  • 千万不要把页面或者日志文件写到网络磁盘上,例如 NFS。
  • 不要让 Apache (httpd) 运行于 inetd 模式。
  • 不要让 X Windows 运行在你的 Web 服务器上,用 Ctrl-Alt-Backspace 关闭 X 。
  • 避免使用 SSI tag。
  • 在 CGI 脚本中:
    文件 I/O:打开的文件数目越少越好。
    Shell 命令:采用全路径来调用 shell 命令。
  • 如果你的网站主要以 CGI 来驱动,那么请使用 mod_perl。
  • 在你的 Web 页面目录中,不要让文件数超过 1000 个,文件越多花费在定位上的时间也越多。
  • 在 Web 服务器上的图片越少越好,保证每个图片都经由图片压缩器运行。
  • 对你的网站做压力测试,建议采用 Apache 自带的 ab 命令来测试。
  • 为了最好的性能,最好把网线拔掉,这样你的 Web 服务器就十分安全,而且负载马上降为 0,:-)


CODE:


http://www.cexpress.com/article/1.php
回复

使用道具 举报

 楼主| c++builder 发表于 2006-7-22 08:28:06 | 显示全部楼层
Linux上优化安装Apache(PHP)及基本安全设置
2004-11-27    gzdrk       点击: 89

Linux上优化安装Apache(PHP)及基本安全设置

############################
Linux上优化安装Apache(PHP)及安全配置
By gzdrk (msn:gzdrk@hotmail.com)
############################

--------------------------
Apache版本:Apache-1.3.27
PHP版本:PHP-4.3.2
--------------------------

说明:Apache整合PHP有两种方式:一种是DSO模式,把PHP当作Apache的外部模块来调用,这样增加了Apache的灵活性,但会带来5%的性能降低;另一种方式是把PHP编译进Apache的内核,这样牺牲了以后调整的灵活性(每次对PHP的重新编译,都需要再次编译Apache),但性能会高一些。对Perl也是如此。相比之下,本人更愿意使用第二种方式,即把PHP编译进Apache的静态内核。

一.编译Apache:

1. 进入Apache展开目录;
2. ./configure - -prefix=/usr/local/apache1.3 - -disable-module=all \
- -enable-module=access - -enable-module=log_config \
- -enable-module=dir - -enable-module=mime \ ##Apache工作的基本模块
(说明:如果以后使用DSO方式,则编译时加上 - -enable-mdule=so)

二.安装PHP:

1. 进入PHP展开目录;
2. ./configure - -prefix=/usr/local/php4 \
- -with-apache=../apache_1.3.27 ##这里指定Apache的源代码目录
3. make;make install

三.安装Apache:

1. 进入Apache展开目录;
2. ./configure - -prefix=/usr/local/apache1.3 - -disable-module=all \
- -enable-module=access - -enable-module=log_config \
- -enable-module=dir - -enable-module=mime \
- -activate-module=src/modules/php4/libphp4.a ##把PHP模块编译进去
3. make;make install

四。配置Apache:

修改httpd.conf文档:
1.Timeout 300--->Timeout 120
2.MaxKeepAliveRequests 100
3.KeepAliveTimeout 5
4.ServerSignature on--->ServerSignature off
5.Options Indexes FollowSymLinks 行把indexes删掉(目录的Options不要带index选项)
6.将Apache运行的用户和组改为nobody
7.MaxClients 150——>MaxClients 1500
(该参数是多少有一个基本的算法,例如2G的机器,一个Apache+PHP进程大概消耗4M内存,则最高效率的进程数为2g/4m * 2=1000,最大进程数为1000*1.5=1500;1.3下要调整到高于256须在编译Apache前修改其源代码)
(对apache2.0版本,将worker MPM字段里的MaxClients 150——>MaxClients 1500)
8.DirectoryIndex index.html index.html.var 后面加上index.php
9.查找包含大量AddType命令的小节,添加下面这一行: AddType application/x-httpd-php .php


--------------------------
Apache版本:Apache-2.0.47
PHP版本:PHP-4.3.2
--------------------------

一.安装Apache:

1. 进入Apache安装目录;
2. ./configure - -prefix=/usr/local/apache2 - -enable-so
3. make;make install

二.安装PHP:

1. 进入PHP安装目录;
2. ./configure - -prefix=/usr/local/php4 - -with-apxs2=/usr/local/apache2/bin/apxs
3. make;make install

三.配置Apache:

1. 修改httpd.conf,上述配置工作照做;
2. 另外修改的地方:
LoadModule php4_module modules/libphp4.so (这一项在装完php后会自动添加)
AddType application/x-httpd-php .php (这一项手工添加)


-----------------------
Linux基本安全配置(纲要)
--------------------

一. 安装过程中注意事项:

1. 分区
2. 禁止安装任何服务
3. 不安装KDE
4. 安装内核源代码及编译工具

二. 安装完后应做的事:

1. 调整内核:
1) 运行dmesg、lspci等命令查看服务器硬件列表,确定所需要的基本硬件的驱动信息,包括SCSI、RAID、磁盘、网卡、键盘、鼠标、显卡等;
2) 进入内核源码目录:/usr/src/linux-2.4,执行make menuconfig,进入内核配置菜单,根据硬件配置和实际需要来修改该菜单,去掉大部分不必要的模块(或者不使用模块),保存退出;
3) 执行make dep,生成代码关系树;
4) 分别执行make; make modules; make modules_install; make install等编译命令;
5) 其它选择:depmod –a;修改/etc/grub.conf等。

2. 关闭服务:
1)/etc/rc2.d下的下列服务:
S13portmap S14nfslock S28autofs S80sendmail S90FreeWnn S90canna S90cups S85gpm S24pcmcia S08iptables S09isdn S90xfs
2)/etc/rc3.d下除local、network、syslog外,其他服务关闭
3)/etc/rc.d/xinetd.d下的全部网络服务关闭
4)关闭所有服务后,执行netstat -an |grep LISTEN 应开不到任何打开的TCP端口

3. 定制服务:
1) Openssh最新版本的安装及安全增强配置
要点:尽量将Openssh端口(22)侦听在内网卡上,使用SSH协议2,特权分离,禁止root登陆和
端口转发,忽略信任主机等
2) Proftp最新版本的安装及安全增强配置;
要点:禁止匿名FTP,将用户登陆限制在家目录下
3) Apache的安装及安全增强配置;
要点:httpd.conf配置文件的调整,见上文
4) 其它应用软件的安装及安全配置。

4. 帐号管理:
删除大部分不必要帐号,取消帐号中不必要的shell。
如下帐号可被删除:
adm,lp,sync,shutdown,halt,mail,news,uucp,operator,games,gopher,ftp,rpm,nscd,rpc,
rpcuser,nfsnobody,mailnull,smmsp,pcap,xfs,ntp
如果要使用KDE之类的图形窗口,则有些帐号如rpc,xfs是需要的。

5. Suid及sgid文件检查:
执行如下命令:
find / -user root -perm -4000 -print -exec md5sum {} \;
find / -user root -perm -2000 -print -exec md5sum {} \;
将结果重定向到一个文件,保存起来以后备查。

6. 防范SYN攻击:
1)使用SYN Cookies,在/etc/rc.d/rc.local里加入:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
2)增加TCP最大半连接数:
sysctl -w net.ipv4.tcp_max_syn_backlog="2048"
3)缩短TCP半连接的等待超时时间

这些措施只能减缓SYN攻击,并不能真正解决SYN攻击问题。最好的方法还是使用硬件防火墙。

CODE:


http://www.gbunix.com/htmldata/2004_11/15/23/article_723_1.html
回复

使用道具 举报

 楼主| c++builder 发表于 2006-7-22 08:28:32 | 显示全部楼层
版本:mysql-4.0.16
        apache-2.0.48
        php-4.3.9
        gd-2.0.27
        ZendOptimizer-2.5.7-linux-glibc21-i386

按顺序安装

一、安装mysql

配置命令

./configure --with-mysqld-user=root --prefix=/usr/local/mysql --with-unix-socket-path=/usr/local/mysql/var/mysql.sock

附:

#prefix=/usr/local/mysql mysql安装的目标目录

#sysconfdir=/etc my.ini配置文件的路径

#localstatedir=/var/lib/mysql 数据库存放的路径

之后make make install

然后cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

初始化数据库 /usr/local/mysql/bin/mysql_install_db

cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/

chown -R mysql var/

/usr/local/mysql/bin/mysql

运行ok

二、安装apache

配置命令

./configure --prefix=/usr/local/apache2 --enable-track-vars --enable-cgi --with-config-file-path=/usr/local/apache2/conf --enable-so --enable-mods-shared=most

附:

#prefix=/usr/local/apache2 apache的安装的目标目录

#--enable-track-vars 启动cookie的get/post功能

#--enable-cgi 支持cgi

#--with-config-file-path=/usr/local/apache2/conf 配置文件

#--enable-so --enable-mods-shared=most 支持DSO动态加载功能

之后make make install

/usr/local/apache2/bin/apachectl start

运行ok

附:httpd.conf的主要应用

加入php的httpd.conf的配置

AddType application/x-httpd-php .php .phtml .php3 .inc
AddType application/x-httpd-php-source .phps


DocumentRoot 主目录

DirectoryIndex index.html index.php

ServerAlias www.chinae.com.cn 别名的写法


详见:
<VirtualHost ip>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/htdocs
ServerName 086biz.com.cn
ServerAlias www.086biz.com.cn
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>


AddDefaultCharset GB2312 默认字体

三、安装gd

配置命令

./configure --prefix=/usr/local/gd2

四、安装php

配置命令

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-track-vars --enable-force-cgi-redirect --with-config-file-path=/usr/local/php/etc/php.ini

附:

#--prefix=/usr/local/php php的安装的目标目录

#--with-mysql=/usr/local/mysql mysql的支持路径 //我写路径一直没配好,不写到是成功了

#--with-apxs2=/usr/local/apache2/bin/apxs apache的apxs的应用

#--enable-track-vars

#--enable-force-cgi-redirect

#--with-config-file-path=/usr/local/php/etc 配置文件的路径

五、安装zend

配置命令
./install.sh

下来就看英文一步步来,很容易的。

QUOTE:
http://www.gbunix.com/htmldata/2005_01/15/23/article_1019_1.html
回复

使用道具 举报

 楼主| c++builder 发表于 2006-7-22 08:30:05 | 显示全部楼层
PHP网站提速三大“软”招

--------------------------------------------------------------------------------

http://www.sina.com.cn 2001/11/30 16:56 赛迪网-中国计算机报

  文/李鲲程

  随着网络的普及,网站已经渗透到了每个行业,但是由于目前专线费用让很多企业和个人难以承受,所以共享带宽成为很多网站的首选方案。费用虽然降低了但是一个新的问题很快就出现了,那就是共享带宽的网速很慢,有时甚至让人无法忍受。如何能让自己的网站快起来,成为人们关心的问题,笔者结合亲身实践来讲讲软办法的一些实际应用,希望能够对读者有所帮助。


  笔者采用的是Linux操作系统,Apache+PHP的网站构建方法。


  代码优化


  通常要求程序员要有好的编程习惯,尽量减少冗余代码的出现,目前也有好多工具能够完成这项功能,对于一般的html文件,用于减少冗余的减肥工具很多,而对于PHP程序来说这样的工具就不太多了,但是Zend Technologies的Zend Optimizer是一款非常好的代码优化工具,可以免费从Zend Technologies的网站上获得。Zend Optimizer的使用方法也非常简单,只要将下载的ZendOptimizer-1[1].0.0-PHP_4.0.4- Linux_glibc21-i386.tar.gz文件解压缩,将其中的ZendOptimizer.so文件拷贝到/usr/local/Zend/lib目录下,然后修改php.ini文件,在最后添加以下几行:




  显示说明Zend Optimizer工作正常

  zend_optimizer.optimization_level=15

  zend_extension="/usr/local/ Zend/lib/ ZendOptimizer.so"

  设置完成后重启Apache服务器,编写一段PHP程序:

  <?

  Phpinfo();

  ?>

  一般来说Zend Optimizer能将系统的效率提升30%~40%,这是用户最关心的。


  压缩页面


  HTTP1.1协议支持页面压缩传送,也就是说服务器把一个页面压缩传送到客户端,然后在客户端将页面解压缩再显示给客户。在服务器端有两种传输方式,一种是页面事先已经压缩好了,传送时只要将压缩页面传送到客户端就行,这种适用于静态网页多的情况,但是对于大多数站点,动态页面比较多,这种方法不太适合,因为很多传到客户端的页面其实是没有的,是服务器接到客户端用户请求动态产生的,所以就要求每生成一个动态页面都要在传到客户端以前先打包压缩。从PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,这样每个动态生成的页面在传送到客户端之前都会进行压缩,但是根据PHP官方站点的说明,这个参数不能与“zlib.output_compression = on”参数同时使用,因为容易引起PHP工作不正常,另外它只能压缩PHP程序的动态生成的页面,对于大量的静态页面尤其是图像文件就不行了。但是mod_gzip模块为Apahe提供了将静态页面在传给客户端以前先压缩的功能,它的压缩比最大能到10,一般情况下可以到 3,也就是说网站的传输速率一下提高了三倍多。要想使用mod_gzip功能首先要下载mod_gzip.c或mod_gzip.so文件,如果下载的是.c文件还要用Apache带的工具将它转化为.so文件才能使用,方法是运行下面的命令:

   -i -a mod_gzio.c

  cp mod_foo.so/path/to/apache/libexec/mod_gzip.so

  chmod 755/path/to/apache/libexec/mod_foo.so

  系统会在/path/to/apache/ etc/httpd.conf中自动激活该模块,如果下载的是.so文件则要将该文件拷贝到相应的目录下,然后在httpd.conf文件中添加LoadModule gzip_module libexec/ mod_gzip.so,使模块生效。需要注意两点,第一,要想使用.so文件,Apache必须包含了mod_so模块(可以通过httpd -l命令来查询该模块是否生效);第二,如果下载的是.so文件,它是与Apache的版本有关的,要注意下载的版本与自己使用的Apache是否一致,如果是.c文件就没有这个问题。模块生效后还要对Apache进行相应的配置,需要在httpd.conf文件中加入一些参数:

  mod_gzip_on Yes(模块是否生效)

  mod_gzip_minimum_file_size 1002(最小压缩文件大小)

  mod_gzip_maximum_file_size 0(最大压缩文件大小,0表示没有限制)

  mod_gzip_maximum_inmem_size 60000(最大可占用内存)

  mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif结尾的文件要压缩传送)

  mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION

  mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION

  mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION

  使用了压缩模块后,当用户访问站点时会在日志文件中记录相应的信息,比如“mod_gzip :OK In:file_length Out:gzipfile_length”,表示该页面传输中使用了gzip功能,输入文件、输出文件大小都有说明。


  文件缓存


  这种方法通常是针对PHP、PERL等CGI程序而言的,因为这些程序有一个共同的特征就是接到用户的请求后不是马上将结果返回给用户,而是经过解释器解释执行后将执行结果返回给客户,这期间通常都要涉及到数据库的访问。这样就会出现一个问题,当两个用户访问同一个页面时,系统将分别对两个请求进行操作,但事实上这两个操作可能是一模一样的,这样无形当中增加了系统的负担。所以通常的解决办法是在系统内存中开辟出一段空间,当用户第一次访问页面后将执行结果存放在该内存中,当有用户再一次访问该页面时,系统就将页面直接从内存中调出而不需要重新解释执行,这段内存空间就叫缓存。目前流行的缓存管理程序有两个,一个是FastCGI,另一个是Zend Technologies公司的Zend Cache。FastCGI主要是针对Perl、C、C++等CGI脚本程序设计的,可以有效地利用内存作缓存,来自客户端的请求都会被传送到FastCGI应用服务程序,FastCGI处理用户的请求后将结果返回给用户。一般的CGI程序这时将结束进程自动退出,但是FastCGI进程继续保持,这时它在接到新的用户请求后不必建立新的进程,可以立即处理用户请求,也就是说CGI程序建立进程顺序执行然后退出,而FastCGI程序顺序执行并永远循环。




  Zend Cache的管理界面

  要想使用FastCGI首先要把FastCGI编译到Apache中,方法非常简单,这里就不说明了,还要在http.conf文件里作设置:

  AddHandler fastcgi-script .fcg .fcgi .fpl

  Options ExecCGI Indexes Includes

  这样FastCGI就可以正常工作了,下面是FastCGI程序员手册中的一段例子程序:

  #!fcgi-savvy-perl

  use FCGI; # 初始化

  # Initialization code

   = 0;

  # Response loop

  while (FCGI::accept >= 0) {

   #FastCGI建立循环体

  print "Content-type:text/html "; #程序执行

  print "<head><title>FastCGI Demo Page (perl)</title></head> ";

  print "<h1>FastCGI Demo Page (perl)</h1> ";

  print "This is coming from a FastCGI server. <BR> ";

  print "Running on <EM>publish152.internal.sina.com.cn</EM> to <EM></EM><BR> ";

  ++;

  print "This is connection number ";

  }

  FastCGI对Perl等CGI程序的功能非常强大,但是它对PHP程序确是无能为力的,而且需要在编程时增加内容,也就是说它需要一些人为的因素才能发挥作用。相比之下Zend Technologies公司的Zend Cache针对PHP的缓存功能是很强大的,只要安装了该软件,程序员就像编写其他PHP程序一样,不需要增加代码,就可以实现缓存功能,有利于系统升级,十分方便。它是一个付费软件。它有缓存功能并能通过图形界面对其进行管理,其中:Cache Control页面,可以配置Zend Cache,显示其当前状态,还能启动和停止Zend Cache功能;Scripts页面,Zend Cache的内容,包括每个文件的状态,还可以根据点击次数和缓存占有大小选择文件;Benchmark页面,可以测试Zend Cache的缓存效果,并以图形方式给出显示,它测试的是每秒钟完成PHP请求的次数。

  它的安装、验证方法与Zend Optimizer基本相同,这里就不详细说明了,感兴趣的读者可以参考用户手册,它的强大功能和便利的管理方法确实让人心动。

  以上是网站提速常见的几种方法,对于不同的网站需要采用不同的手段,所对应的提速方案也不尽相同,但总体上不外乎是以上提到的三招,读者可以根据自己的实际情况具体问题具体分析。

  注意:考虑到客户端软件的复杂性,因为有些客户端软件可能不支持某些特性,比如,mod_gzip对页面进行压缩,但是如果客户端使用的是Netscape就不行,因为它不能把接收到的压缩页面解压缩,导致页面不能正常显示。
回复

使用道具 举报

 楼主| c++builder 发表于 2006-7-22 08:30:38 | 显示全部楼层
偶然看见的就转了过来,希望对大家有帮助!
回复

使用道具 举报

celon 发表于 2006-7-24 12:26:32 | 显示全部楼层
感谢
回复

使用道具 举报

 楼主| c++builder 发表于 2006-7-26 09:43:56 | 显示全部楼层
有一个支持的也 没有白转
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-8 19:14 , Processed in 0.029255 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表