返回列表 发帖

Windows下的 Apache + PHP + MySql + 虚拟主机 设置全功略

前言:这一篇是我亲身配置的经历,希望大家喜欢,现在网络的教程中,PHP运行在Apache“模块”方式的文章中都少了最重要的一个步骤,也就是说按其方法配置PHP不能运行,有的太过简单,有的太过复杂,所以花了点时间整理一下。
1 ~+ g1 W1 C5 j$ p- r9 H; O
& H# y1 u- B$ L7 A1 G一、安装PHP4
. E8 \- ]! x5 n/ A( `我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip# H; U8 g$ t$ e0 \
1.下载后,解压到c:\php目录下。8 E( a& x  I" Y& M0 V7 `
2. 把c:\php目录下的php4ts.dll php4ts.lib文件都拷贝到c:\winnt\system32目录下(即window 2000系统目录下的system32目录)。
8 N0 I, c! D3 p1 ]+ L7 R3. 修改php.ini文件,把c:\php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。
" y7 r+ @. D& W# k3.1找到register_globals = Off 改为register_globals = On
0 i- ~# l" }' k这一步是为了使部分旧的PHP程序能正常运行;
9 U5 q! H/ {) n1 n0 Y. w0 }3.2找到 extension_dir = ./ 把它改为extension_dir = c:\php\extensions! v$ j( [4 Y6 _- P
以下内容新手请略过
3 q8 [3 v) E( L9 m/ X& o$ \===============新手略过开开始================
$ {* V3 j+ |! w刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所有的扩展dll的功能( Windows Extensions)
7 t2 G; ]5 n$ T% M4 c! @) H;extension=php_bz2.dll
6 \% _+ }- A+ ~0 e, [$ N9 ~0 e;extension=php_cpdf.dll
. A, w4 U0 m: Y, n# O3 t;extension=php_crack.dll
$ Z# K$ o2 m) j- k9 F; T;extension=php_curl.dll
9 M6 h2 P  `% F5 u6 ^6 @. m* i1 R  e" @# D..... : `1 [: I( U* G& s" U
要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;* ~- |' Q, A3 d# x$ u2 R3 i7 V
其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;5 y# W" S+ M; [4 \; {, U
如下面
5 _% O0 N) I. @! k% ]( n: m* ]- uextension=php_gd.dll
# G; Z8 E/ x; |5 A# G6 g;extension=php_gd2.dll7 I$ z3 o  o( }! V" }
按实际所须的extension=php_xxxx.dll前面的分号都去掉。
& v& Y1 K7 Z0 M5 W* Z8 D1 f) z: c=============新手略过结束================- p1 S0 Q# j5 [, F! T2 y
3.3 找到session.save_path,把这一项改为 session.save_path = c:\tmp
3 L1 O8 W6 k' \- K, U. R/ d' A并在C盘建立一个TMP目录& s0 T. J+ |, S% S# ~0 d5 }8 H# g3 a/ ]
3.4记得要保存刚刚的修改 并把php.ini文件放置在c:\winnt目录下。
0 Z! O! u" q  a3 x================================================
7 e; K% G( X) W/ N二、安装MySql
) T( d- x* h1 |安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;/ Z5 p1 e) x- t
按默认安装,即安装在c:\MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:\MySql\bin 目录;) x: i; ]3 m7 P. g! T: k: X
运行mysqld-nt --install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!) " u/ v. V5 o1 g, X4 |
从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口
7 v! F* a, P- R* c即c:\MySql\bin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;
% m9 z, P8 E9 `/ e当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;( z, _, D! W% N# t
测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;6 o, U  O3 a7 [
第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)
% ]+ b1 B% A: u* s( s( z, T# o出现: C:\MySql\bin>MySql -uroot -p Enter password: ********** Welcome to the MySql monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 3.27.44-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> ' \+ W5 J0 E0 F0 p5 Q( J( L: C
即安装MySql成功。) s3 E7 k5 D6 E5 L+ p2 A& g
==========================================, v2 e3 P4 W" e. Y" s
三、安装Apache 1.3.x 及 PHP运行设置8 J& z- M2 B5 k* W( d7 \
1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:\Apache或C:\,因为马上你就要修改它的配置文件。/ h6 T5 E! ]$ ?+ ?
如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。
/ {- N9 l+ A. _' L5 \3 S" D有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。 2 Q! R; \6 s! R3 q6 B# Z$ K
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
& G2 Q5 \' i. B( V) e$ S尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。 ; @/ G6 ^; ^* s! Q' w
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
( [3 b- N+ B( E9 F$ M8 p% |7 L, U) X* k
ScriptAlias /php/ "c:/php/" ' \: c1 l! B3 |* U. X8 C; P( o2 p
AddType application/x-httpd-php .php .phtml ) A) z8 x# V+ F( i" }7 a
Action application/x-httpd-php "/php/php.exe" , ]9 h2 \3 }9 p2 A' M) f
注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。
; A( @  v8 X! z6 L7 ~2 h/ A8 x: Y# j& F/ U6 k$ ~% G
警告
8 _: Q/ C. o; n' m, m$ u! r4 E在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。 3 X/ U* I( R, U
- P( W! \6 {" s+ o/ H3 c
如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行: / C, ?9 D# y4 V
+ u& t7 m. V1 v1 o
用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,
+ c: [- l, [, [  N5 R对 PHP 4:
! ?4 Y5 r3 W% X! w% Q8 |5 U, nLoadModule php4_module c:/php/sapi/php4apache.dll) y( o0 i; L& Z* ~: ]
对 PHP 5:
2 e- ?" h: g+ z' V6 KLoadModule php5_module "c:/php/sapi/php5apache.dll"
9 R* W8 w- C& S0 g0 A" W' `" C# k你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:, j& e/ b( ~) C% t, m- g' M4 H
AddModule mod_php4.c5 z/ k* B/ q& A/ f9 L+ ]
对于 PHP 5 则为:
# {0 S/ |% k) v7 g% _AddModule mod_php5.c, U2 [8 w; w: a+ q) t8 y
搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。
! R2 {5 y* U. S8 x. L  e
: E3 Y( H3 S. a+ j+ Z5 Q修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。 + M' T# f, a1 ?' ^! u
有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。 9 N4 k! U. G$ T7 x
如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:<?php show_source ("original_php_script.php"); ?>。用你想要显示源代码的文件名替换掉 original_php_script.php。
0 ^  d6 S1 G% g8 M' E  y. o- P注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:\directory\file.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。, L: m3 }  p- s% A" O" X
============================================
4 Z7 o& L5 _$ T0 _+ n. M+ n四、实现Apache虚拟主机的两种方案
  K( M. p  c  W简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 # C0 ?+ {% M3 @8 E: t$ `' Z7 @
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
2 `- F1 D7 R6 P# j( uaccount.yourdomain.com,同时又想为sales部门建立网站,网站内容也 5 I" r* r1 `, e) l! n# l8 [  J
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
- r0 B8 Q! `8 @( X6 M  N& u% I设置。
9 q: Z* e# r, A; t设置Apache虚拟主机通常有两种方案 ; I  k# p2 j& [+ z
1.基于IP的虚拟主机
/ g; Z3 k, S( Z  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 ; j6 d$ o' p5 @9 p. Q
网卡上绑定多个IP地址去服务多个虚拟主机。 9 w7 ?- U  r. s0 W' H
若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先
. x9 Q/ R9 z& h' l. [+ J你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 6 F" _5 N8 m3 W+ _  A
/etc/rc.d/rc.local,确保每次启动后自动运行。
  n1 t  ?( t3 j0 X, P2 ?#/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast \
$ ^  ~7 A, q2 m6 \192.168.0.255 up
% z8 r" Z1 m/ I/ _( o#/sbin/route add -host 192.168.0.2 eth0:0
4 e6 [3 |' X+ Q+ h( M/ H* g然后你需要设置/etd/httpd/conf/httpd.conf文件:
1 r, `/ j1 {8 X( U) a1 C  R<VirtualHost 192.168.0.2> 7 ?% x- q! v/ k  E
ServerAdmin webmaster@yourdomain.com
( A! O$ x* _; _DocumentRoot /home/httpd/sales.yourdomain.com $ l! A8 l7 h" D# V) p0 q
ServerName sales.yourdomain.com . c8 J5 T8 U' `* u  P
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log $ E- G- g, |/ }* o- k5 k
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
5 D) C% L" Y! T6 a! T$ u</VirtualHost>
; G2 F$ N; u' t$ X然后分别创建目录 ( x6 T. r/ u0 A5 w  A+ _/ q8 H
/home/httpd/sales.yourdomain.com,
# O! w" @# g5 S3 G4 j* m/var/log/httpd/sales.yourdomain.com
* x; Q4 m! K( p' N- k放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
) L% H% V4 W$ S! P5 l+ C; r你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。 * P) L, i6 {! u
注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
. B& B; M3 |1 H! H9 T5 y虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机 ! W  ]/ f8 Z$ l4 J% _
方案。
; @: }' G- f! s. [7 Z2 H: b  U1 L% j
2.基于名字的虚拟主机: . w! S  h1 j% f* p3 J) W0 }
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
2 e8 f/ {2 n* v( q) a浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
4 X5 e( i. i4 K/etc/httpd/conf/httpd.conf ) @, V* r; ^$ k* X* w2 c) r
NameVirtualHost 192.168.0.1   n; w( I- D$ ~2 q5 ^- G5 b
<VirtualHost 192.168.0.1>
( k2 B! j8 g+ u: m9 L) dServerAdmin webmaster@yourdomain.com
. |9 x( O0 I2 I' F. q  n6 ?0 RDocumentRoot /home/httpd/sales.yourdomain.com & V, u. g! S5 X( c3 [/ f3 P2 l
ServerName sales.yourdomain.com
% C7 X" f  b, P$ ~) ?# G  WErrorLog /var/log/httpd/sales.yourdomain.com/error_log
1 W. [0 E0 K7 s: k1 Y. }% x9 W0 MTransferLog /var/log/httpd/sales.yourdomain.com/access_log
. u, Q4 h7 r5 h( l7 @: S* q5 {</VirtualHost>
% Y+ E! m& w0 |  O( C# q<VirtualHost 192.168.0.1> ' K, Z$ {$ `" d- N7 ~) _% D6 S* M3 ?0 P2 G
ServerAdmin webmaster@yourdomain.com
+ j: P6 C, B% [5 c( q' EDocumentRoot /home/httpd/hr.yourdomain.com ; H: V8 K: I) \( X1 G( {, \/ P
ServerName hr.yourdomain.com
6 m) [6 ]( \  a' lErrorLog /var/log/httpd/hr.yourdomain.com/error_log
" |8 A2 L. E/ c/ ~' t6 rTransferLog /var/log/hr.yourdomain.com/access_log & Y, O' H1 C$ ~6 e2 @/ m3 c: _$ y% A
</VirtualHost>
: S" ~0 ^/ [2 Q6 E& d: h注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
: T( V6 D1 d: Z+ o5 Z为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
* i/ A; o* E' z) T  {! A: T都指向IP地址192.168.0.1 9 K/ j% g" V3 f" X
上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
- _1 k+ Y2 x1 j没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
6 w" ~; R) {  v" p" o3 o. T若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。 ; a$ s7 ?/ r" T# w2 W0 C$ P5 W
提示:上面所提到的相对目录可以用绝对路径代替,如:
& E7 ?. k3 [7 {9 R; k/home/httpd/hr.yourdomain.com 可改为 D:/Inetpub/wwwroot
5 b( {# _. ^: b==================END=======================
! r0 V( T: I8 o/ m" a% v这只是入门,只能保证你的WEB服务器能正常运,要了解更多的 PHP 及 Apache 的详细设置,还要靠大家更加深入的实践...

另外可以用一个安装包安装全部PHP软件
6 L4 P; {( Z% ~2 m* Y0 @) q下载地址:- \% D( d- @0 ^) o" \; E$ P! L  S" x
http://webclub.net.cn/data/phpStudy1.2.5.rar

TOP

亲娘那$ q2 P# p7 ^9 Y! r$ t* N
怎么没图哈/ ]" d+ q2 d) l8 N/ E1 v4 {
应该图文结合啊
2 k: E! h1 {0 M; L1 ?

TOP

返回列表
【捌玖网络】已经运行: