FDS’s Blog

2008年12月4日

XP下安装配置Apache2+PHP5+MYSQL5

Filed under: PHP,服务器 — 标签:, — FDS @ 14:40

说说在Windows XP下全新安装配置Apache2,PHP5,MYSQL5,Zend的过程。

到以下地址下载相关的软件进行安装,安装顺序就就按照下面列出来的顺序就可以了,至于Zend是最后等所有的运行都没问题后才装的。

一、下载地址:
Apache2.0.50 :http://httpd.apache.org/download.cgi
PHP5.0.2 :http://cn2.php.net/get/php-5.0.2-Win32.zip/from/a/mirror
MYSQL5.0.2:http://dev.mysql.com/downloads/mysql/5.0.html
Zend2.5.2 :http://www.zend.com/store/free_download.php?pid=13]
二、简单安装过程:
(一)Apache:
Apache2.0.50的安装很简单,我就直接把他装到了E盘根目录下(我C盘是系统盘,D盘是temp盘,偶发现在windows下单独拿个分区来做临时文件的存放地对系统的速度影响不小,这样做能提升系统运行的速度,感兴趣的朋友可以试试看),安装完后我的apache目录就是E:\apache2
(二)PHP:
我是直接解压缩放到E盘php目录下了,这样查找文件会方便许多。
(三)Mysql:
直接装到E:\mysql下,它的默认目录太长,是在C盘下的,偶的C盘是除windows的文件外别的一概不放的。
(四)Zend:
所有的调试都正常后我把Zend装到了E:\program files\zend下

三、配置过程:
(一)http.conf

这个文件我改了几个地方:
把PHP直接作为apache的一个模块运行,我在里面加了两句:

  CODE: [Copy to clipboard]  
LoadModule php5_module ”E:/php/php5apache2.dll”
AddType application/x-httpd-php .php

我在E:\apache2目录下建立了一个www的目录用于存放我的站点文件,在http.conf里改了这样一句话:
把DocumentRoot ”E:/Apache2/htdocs”改成了DocumentRoot ”E:/Apache2/www”

Apache2.0.x于1.3.x相比2.0.x默认不能直接列目录,偶感觉不爽,就改了:
把DocumentRoot ”E:/Apache2/www”这句下的如下语句

  CODE: [Copy to clipboard]  

    Options FollowSymLinks
    AllowOverride None

改为:

  CODE: [Copy to clipboard]  

    Options Indexes FollowSymLinks
    AllowOverride None

把apache的默认字符设置为中文简体:
AddDefaultCharset GB2312

修改目录的默认首页:
DirectoryIndex 后面写上你想设置为首页的文件名,如:index.html index.php等

别的就没再动什么地方

注意一点的是,要使这些配置生效需要重新启动apache

(二)php.ini
以前用php4.x的时候觉得配置起来很简单,所以偶用PHP5也直接那么配了,谁知道完了mysql不能用,说是无法连接动态库,我仔细检查了一下 php_mysql.dll明明存在,可就说找不到,这点让我郁闷了N久,偶重新解压了php5也没用,后来在php的install文档里发现了这么一句话: php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll   (bundled)
于是偶才找到了原因……
配置php5.0.2是这样来过的:
把php.ini-dist复制到C:\windows 下改名为 php.ini(装过php的都做过吧)
然后修改了几个地方:
extension_dir = ”E:\php\ext” (指定动态连接库的目录,php5和php4不同的地方就是它的动态连接库目录变了,这在它的文档结构里有详细的说明)
然后把下面几句前面的分号去掉
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_imap.dll
;extension=php_mysql.dll

接下来修改了一些文件上传以及内存使用最大限制:
memory_limit = 20M
post_max_size = 20M
upload_max_filesize = 20M
别的就没改什么了,这里修改过php.ini以后也要重新启动apache

接下来一点很重要的就是把php目录下的 libmysql.dll 和 libmysqli.dll 复制到windows/system32下,如果不这样做,mysql动态连接库就无法正常加载。

(三)Mysql和Zend的配置
现在Apache和PHP都已经配置好了,在浏览器里输入localhost看看结果,运行成功,然后输入localhost/phpmyadmin看也成功。郁闷,Phpmyadmin提示错误信息:

  QUOTE:
MySQL 返回:

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

奇怪了,偶明明装的是MYSQL最新版本怎么会客户端版本过低呢,真是郁闷啊
就此放了一下,经多次测试仍然不成功就先放弃了一下,玩了一把KOF97
然后在CCF.熊猫和IM286.ceo的帮助下,终于找到了原因:
落伍ceo:“升级客户端
新版本的mysql使用了新的密码验证方法
设置mysql密码时使用old_password可以解决这个问题”
CCF.熊猫:“使用old_password”重新设定密码就可以了”。
感谢这两位朋友,具体解决办法如下:
由于偶不知道怎么升级client,因为在windows 下 server和client是捆绑安装的,我就用了old_password的方法:

  QUOTE:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘newpwd’)
-> WHERE Host = ’some_host’ AND User = ’some_user’;
mysql> FLUSH PRIVILEGES;

然后浏览“http://localhost/phpmyadmin”,搞定!

2008年11月18日

Apache服务器配置小技巧合集

Filed under: 服务器 — 标签:, — FDS @ 21:15

以下十七个Apache 的配置技巧:

 1、如何设 置请求等待时间在httpd.conf里面设置:TimeOut n其中n为整数,单位是秒。

2、如何接收一个get请求的总时间接收一个post和put请求的TCP包之间的时间TCP包传输中的响应(ack)时间间隔

3、如何使得apache监听在特定的端口 修改httpd.conf里面关于Listen的选项,例如:Listen 8000是使apache监听在8000端口而如果要同时指定监听端口和监听地址,可以使用:Listen 192.170.2.1:80
Listen 192.170.2.5:8000这样就使得apache同时监听在192.170.2.1的80端口和192.170.2.5的8000端口。当然也可以在httpd.conf里面设置:Port 80这样来实现类似的效果。

 4、如何设置apache的最大空闲进程数 修改httpd.conf,在里面设置:MaxSpareServers n其中n是一个整数。这样当空闲进程超过n的时候,apache主进程会杀掉多余的空闲进程而保持空闲进程在n,节省了系统资源。如果在一个apache非常繁忙的站点调节这个参数才是必要的,但是在任何时候把这个参数调到很大都不是一个好主意。同时也可以设置:MinSpareServers n来限制最少空闲进程数目来加快反应速度。

 5、apache如何设置启动时的子服务进程个数 在httpd.conf里面设置:StartServers 5这样启动apache后就有5个空闲子进程等待接受请求。也可以参考MinSpareServers和MaxSpareServers设置。

 6、如何在apache中设置每个连接的最大请求数 在httpd.conf里面设置:MaxKeepAliveRequests 100这样就能保证在一个连接中,如果同时请求数达到100就不再响应这个连接的新请求,保证了系统资源不会被某个连接大量占用。但是在实际配置中要求尽量把这个数值调高来获得较高的系统性能。

7、如何在apache中设置session的持续时间 在apache1.2以上的版本中,可以在httpd.conf里面设置:KeepAlive on
KeepAliveTimeout 15
这样就能限制每个session的保持时间是15秒。session的使用可以使得很多请求都可以通过同一个tcp连接来发送,节约了网络资源和系统资源。

8、如何使得apache对客户端进行域名验证 可以在httpd.conf里面设置:HostnameLookups on|off|double如果是使用on,那么只有进行一次反查,如果用double,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而off就是不进行域名验证。如果为了安全,建议使用double;为了加快访问速度,建议使用off。

9、如何使得apache只监听在特定的ip修改httpd.conf,在里面使用BindAddress 192.168.0.1这样就能使得apache只监听外界对192.168.0.1的http请求。如果使用:BindAddress *就表明apache监听所有网络接口上的http请求。当然用防火墙也可以实现。

10、apache中如何限制http请求的消息主体的大小 在httpd.conf里面设置:LimitRequestBody nn是整数,单位是byte。cgi脚本一般把表单里面内容作为消息的主体提交给服务器处理,所以现在消息主体的大小在使用cgi的时候很有用。比如使用cgi来上传文件,如果有设置:LimitRequestBody 102400那么上传文件超过100k的时候就会报错。

11、如何修改apache的文档根目录 修改httpd.conf里面的DocumentRoot选项到指定的目录,比如:DocumentRoot /www/htdocs这样http://localhost/index.html就是对应/www/htdocs/index.html

12、如何修改apache的最大连接数在httpd.conf中设置:MaxClients nn是整数,表示最大连接数,取值范围在1和256之间,如果要让apache支持更多的连接数,那么需要修改源码中的httpd.h文件,把定义的HARD_SERVER_LIMIT值改大然后再编译。

13、如何使每个用户有独立的cgi-bin目录 有两种可选择的方法:(1)在Apache配置文件里面关于public_html的设置后面加入下面的属性:ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2(2)在Apache配置文件里面关于public_html的设置里面加入下面的属性:
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>

14、如何调整Apache的最大进程数Apache允许为请求开的最大进程数是256,MaxClients的限制是256.如果用户多了,用户就只能看到Waiting for reply….然后等到下一个可用进程的出现。这个最大数,是Apache的程序决定的–它的NT版可以有1024,但Unix版只有256,你可以在src/include/httpd.h中看到: 
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif 
你可以把它调到1024,然后再编译你的系统。

15、如何屏蔽来自某个Internet地址的用户访问Apache服务器 可以使用deny和allow来限制访问,比如要禁止202.202.202.xx网络的用户访问:
<Directory /www/htdocs>
order deny,allow
deny from 202.202.202.0/24
</Directory>

16、如何在日志里面记录apache浏览器和引用信息 你需要把mod_log_config编译到你的Apache服务器中,然后使用下面类似的配置:CustomLog logs/access_log “%h %l %u %t “%r” %s %b “%{Referer}i” “%{User-Agent}i”"

17、如何修改Apache返回的头部信息问题分析:当客户端连接到Apache服务器的时候,Apache一般会返回服务器版本、非缺省模块等信息,例如:Server: Apache/1.3.26 (Unix) mod_perl/1.26解决:你可以在Apache的配置文件里面作如下设置让它返回的关于服务器的信息减少到最少:ServerTokens Prod注意:这样设置以后Apache还会返回一定的服务器信息,比如:Server: Apache但是这个不会对服务器安全产生太多的影响,因为很多扫描软件是扫描的时候是不顾你服务器返回的头部信息的。你如果想把服务器返回的相关信息变成:Server: It iS a nOnE-aPaCHe Server那么你就要去修改源码了。

Powered by WordPress